文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州
▲ 本章节目的
⚪ 了解TELECOM项目的数据收集;
⚪ 了解TELECOM项目的数据清洗;
⚪ 了解TELECOM项目的数据导出;
⚪ 了解TELECOM项目的数据可视化;
⚪ 了解TELECOM项目的其他;
一、数据收集
1. 在实际生产环境中,电信流量日志肯定不只是在一台服务器上产生,而是每一台服务器都会产生流量日志。所以此时,需要先搭建Flume的扇入流动模型,之后将收集到的数据传输到HDFS上进行存储。
2. 步骤:
a. 在第二台和第三台服务器上来创建对应的目录用于存储日志(将第二台和第三台服务器当作是日志产生的服务器) 。
cd /home
mkdir telecomlog
b. 进入对应的目录,将日志上传或者下载到指定目录下(实际过程中,日志肯定是实时产生的) 。
cd telecomlog/
#云主机的下载地址
wget http://bj-yzjd.ufile.cn-north-02.ucloud.cn/103_20150615143630_00_00_000_2.csv
c. 收集第二台和第三台服务器上的日志,将收集到的日志传输到第一台服务器上,进行数据的扇入。
cd /home/software/apache-flume-1.9.0-bin/data
#编辑文件
vim telecomlog.conf
#在文件中添加如下内容
a1.sources = s1
a1.channels = c1
a1.sinks = k1
# 日志是放在指定目录下的
# 所以此时监控指定目录下的变化
# 如果目录下产生了新的文件
# 需要收集这个新文件中的内容
a1.sources.s1.type = spooldir
# 指定要监听的目录
a1.sources.s1.spoolDir = /home/telecomlog
# 配置Channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 1000
# 需要将收集到的数据发送到第一台服务器上
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = hadoop01
a1.sinks.k1.port = 8090
# 绑定
a1.sources.s1.channels = c1
a1.sinks.k1.channel = c1
d. 数据收集到第一台服务器上之后,需要将收集到的数据写到HDFS上。
cd /home/software/apache-flume-1.9.0-bin/data/
#编辑文件
vim telecomlog.conf
#在文件中添加如下内容
a1.sources = s1
a1.channels = c1
a1.sinks = k1
# 需要接收第二台和第三台服务器传输来的数据
a1.sources.s1.type = avro
a1.sources.s1.bind = 0.0.0.0
a1.sources.s1.port = 8090
# 需要在数据中来添加一个时间戳
a1.sources.s1.interceptors = i1
a1.sources.s1.interceptors.i1.type = timestamp
# 配置Channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 1000
# 配置Sink
# 需要将数据写到HDFS上,最好能够实现数据按天存储
a1.sinks.k1.type = hdfs
# 指定数据在HDFS上的存储路径
a1.sinks.k1.hdfs.path = hdfs://hadoop01:9000/telecomlog/reporttime=%Y-%m-%d
# 指定文件在HDFS上的存储类型
a1.sinks.k1.hdfs.fileType = DataStream
# 指定文件的滚动时间间隔
a1.sinks.k1.hdfs.rollInterval = 3600
a1.sinks.k1.hdfs.rollSize = 0
a1.sinks.k1.hdfs.rollCount = 0
# 绑定
a1.sources.s1.channels = c1
a1.sinks.k1.channel = c1
e. 启动HDFS。
start-dfs.sh
f. 启动第一台服务器上的Flume。
../bin/flume-ng agent -n a1 -c ../conf -f telecomlog.conf -
Dflume.root.logger=INFO,console
g. 启动第二台服务器和第三台服务器上的Flume。
../bin/flume-ng agent -n a1 -c ../conf -f telecomlog.conf -
Dflume.root.logger=INFO,console
二、数据清洗
1. 利用Flume将数据收集到了HDFS上,那么此时需要在Hive中建表来管理原始数据。
#启动YARN
start-yarn.sh
#进入HBase的安装目录的lib目录下
cd /home/software/hbase-2.4.2/lib
#进入子目录
cd client-facing-thirdparty/
#重命名
mv commons-logging-1.2.jar commons-logging-1.2.bak
mv log4j-1.2.17.jar log4j-1.2.17.bak
mv slf4j-log4j12-1.7.30.jar slf4j-log4j12-1.7.30.bak
#启动Hive的服务进程
hive --service metastore &
hive --service hiveserver2 &
#进入hive的客户端
hive
#创建库
create database telecom;
#使用这个库