本项目主要步骤:项目需求分析、环境准备、具体项目实现
一、项目需求分析
主要工作是将生产出来的数据通过flume进行采集,然后使用kafka的消息队列实时传输移动数据保存到HBase中,最后通过MapReduce操作将整体数据显示到前端页面
二、环境准备
1、启动zookeeper集群:zk.sh start
2、启动kafka集群:kf.sh start
3、启动hadoop集群:myhadoop.sh start
4、启动Hbase:bin/start-hbase.sh
二、项目实现
1、准备数据
首先准备初始的移动通话数据用于生成电信call.log:
编写代码生产数据(部分代码如下:)
主任务(通过传入两个数据地址参数,保存数据):
(1)、首先从本地地址读取数据,转换数据类型,然后根据要划分数据的类型(主叫,被叫,通话时间、通话时长)进行设置
(2)将数据刷洗到文件中
生成的通话日志如下:主要包括主叫、被叫、通话时间、通话时长
最后将代码打包成jar包在linux中运行(通过xftp进行传输)
java -jar ct-producer.jar /opt/module/data/contact.log /opt/module/data/call.log
2、采集数据、消费数据
编写flume采集然后kafka进行队列传输进行消费,flume-2-kafka.conf
在kafka进行消费之前要配置kafka的主题:
可以将消费的数据打印到控制台
3、HBase保存数据
在kafka消费数据的同时,将数据依次插入到HBASE中,而之前到对HBase进行配置,创建命名空间和表,设置rowkey、列族等信息。
插入数据到不同的分区,避免数据倾斜。
可在HBase官网提供的工具中查看:http://hadoop102:16010/
查看分区划分
在linux中查看具体数据分区