Flume、Hbase、Kafka集成与开发

一、下载Flume源码并用IDEA打开

http://flume.apache.org/download.html

用IDEA打开源码,选择其中的flume-ng-sinks/flume-ng-hbase-sink

二、官方flume与Hbase集成的参数介绍

http://flume.apache.org/releases/content/1.7.0/FlumeUserGuide.html

三、下载日志数据并分析
数据格式为
访问时间\t用户ID\t[查询词]\t该URL在返回结果中的排名\t用户点击的顺序号\t用户点击的URL
其中,用户ID是根据用户使用浏览器访问搜索引擎时的Cookie信息自动赋值,即同一次使用浏览器输入的不同查询对应同一个用户ID

四、数据预处理

因为下载的日志中有制表符等非常不方便,所以我们这里把制表符等换成逗号隔开,对数据进行预处理操作。

这里我们使用tr命令进行替换

分发到hadoop02和hadoop03上去

五、Flume和Hbase继承配置

修改Hadoop01上的flume配置文件

1、flume-env.sh

2、flume-conf.properties

六、自定义hbaseSink程序设计与开发

1、新建一个类kafkaAsyncHbaseEventSerializer

通过SimpleAsyncHbaseEventSerializer的核心方法,修改关于kfk部分的局部即可
使得hbase中的rowkey一致

kafkaAsyncHbaseEventSerializer类内容如下

2、SimpleRowKeyGenerator类中增加关于获取kfkRowKey的方法

七、IDEA中对hbaseSink进行Jar打包

原本jar本应该是在/opt/modules/flume-1.7.0-bin/lib目录下的

我们需要把修改过源码后的重新打成jar包进行替换

如何打包?

生成好的jar包在artifacts目录下

将这个flume-ng-hbase-sink.jar改名为flume-ng-hbase-sink-1.7.0.jar上传到lib下即可

八、Flume和Kafka集成

修改flume-conf.properties