[toc]
数据仓库概念
项目需求
项目需求分析
例如:
采集:Flume
仓库:Hive
导入:Sqoop
定时:Azkaban
项目框架
技术选型
行为数据:file\日志 –> Flume, Kafka, Logtash
数据库(mysql, oracle, mongoDB):DataX, Sqoop
Kafka: 缓冲
mongoDB+python爬虫
Flink: 比较火
市场下滑框架:
Hbase:查询能力也很一般,替代为ES了。
Storm:
系统架构图设计
presto: apache
impala: cdh
系统数据流程设计
框架版本选型
| 产品 | 版本 |
|---|---|
| Hadoop | cdh15.16.1 |
| Flume | cdh15.16.1 |
| Kafka | |
| Kafka Manager | |
| Hive | cdh15.16.1 |
| Sqoop | cdh15.16.1 |
| Mysql | 5.7.28 |
| Azkaban | 2.5.0 |
| Java | 1.8 |
| Zookeeper | 3.4.14 |
注意事项:框架选型尽量不要选择最新的框架,选择最新框架半年前左右的稳定版。
集群资源规划设计
| 服务器1(hadoop101) | 服务器2 | 服务器3 | |
|---|---|---|---|
| HDFS | NameNode DataNode | DataNode | DataNode |
| Yarn | NodeManager | Resourcemanager NodeManager | NodeManager |
| Zookeeper | Zookeeper | Zookeeper | Zookeeper |
| Flume(采集日志) | Flume | Flume | |
| Kafka | Kafka | Kafka | Kafka |
| Flume(消费Kafka) | Flume | ||
| Hive | Hive | ||
| Mysql | Mysql |
耗内存的别放一起:NameNode, Resourcemanager
Flume:两台采集、一台消费。
Spark:基于内存运算,尽量也避开。
数据生成模块
埋点数据基本格式
。。。
事件日志数据
。。。
商品点击、商品详情、广告、评论、收藏、错误日志…
启动日志数据
。。。
数据库生成脚本
创建Maven工程
1)创建log-collector
2)创建一个包名:com.mxx.appclient
模拟app客户端,直接生成logFile了,忽略SpringBoot那些过程
i/o流,log第三方框架
3)在com.mxx.appclient包下创建一个类,AppMain。
4)在pom.xml文件中添加如下内容
1 |
Bean
各种Bean
com.mxx.bean
主函数
配置日志打印Logback
具体使用:
1)在resources文件夹下创建logback.xml文件。
2)在logback.xml文件中填写如下配置
1 |
打包
package
现在需要搭建环境了,参考【环境搭建】
然后把jar包放到集群下
日志生成集群启动脚本
集群时间同步修改脚本
集群所有进程查看脚本
环境搭建
准备3台基本的虚拟机
【参考linux文档】
先弄一个基本的centos6.8的虚拟机。
CentOS-6.8-x86_64-bin-DVD1.iso
- VMTools安装
- 查看网络IP和网关
- 配置网络ip地址
- 关闭防火墙
- 将普通用户加入sudo
Code1
2
3
4vim /etc/sudoers
root ALL=(ALL) ALL
machine ALL=(ALL) ALL设置hosts
vim /etc/hosts ,添加如下内容
Code1
2
3192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103
克隆3台虚拟机
一些操作,3台都要(修改mac, 修改ip, 修改hostname)
保证3台机子互相能PING通、保证能连网、保证能连上本地主机
然后用xshell连接3台机子
数据采集模块
Hadoop安装
- 准备3台客户机(关闭防火墙、静态ip、主机名称)
- 安装JDK,配置环境变量
- 安装Hadoop,配置环境变量
- 编写集群分发脚本xsync
- 配置集群
- 配置ssh
- xsync分发安装包和配置
- 格式化集群,启动集群
- 添加LZO压缩支持。重启集群。
Zookeeper安装
搭建zookeeper集群
ZK集群启动停止脚本
Flume安装
日志采集Flume安装
日志采集Flume配置
1)Flume配置分析
ETL: MR\Flume拦截器\Kafka拦截器\Hive hq过滤
2)Flume的具体配置如下
Flume拦截器
本项目中自定义了两个拦截器,分别是:ETL拦截器、日志类型区分拦截器。
ETL拦截器主要用于,过滤时间戳不合法和json数据不完整的日志
日志类型区分拦截器主要用于,将错误日志、启动日志和事件日志区分开来,方便发往kafka的不同topic。
日志采集Flume启动停止脚本
Kafka安装
kafka集群安装
Kafka集群启动停止脚本
查看所有Kafka topic
创建 Kafka topic
消费消息
生产消息
然后把f1.sh启动,运行lg.sh生产数据,查看消费者是否能成功消费数据。
到这里 logFile > flume > kafka就通了
Kafka Manager安装
Kafka Manager启动停止脚本
Flume消费Kafka数据写到HDFS
kafka > flume消费 > hdfs
日志消费Flume配置
日志消费Flume启动停止脚本
采集通道启动/停止脚本
一个思考:
kafka在这里的作用?数据到kafka这里分叉,分为实时指标分析和HDFS离线。Kafka充当了路由和数据池的作用。
只做离线的话,直接从flume生产到hdfs消费就行了。







