Flume-1.4.0和Hbase-0.96.0整合
1、本程序一共用了三台集群搭建集群,这三台机器的Hostname分别为master、node1、node2;master机器是Hadoop以及Hbase集群的master。三台机器上分别启动的进程如下:
[wyp @master ~]$ jps 2973 HRegionServer 4083 Jps 2145 DataNode 3496 HMaster 2275 NodeManager 1740 NameNode 2790 QuorumPeerMain 1895 ResourceManager [wyp @node1 ~]$ jps 7801 QuorumPeerMain 11669 DataNode 29419 Jps 11782 NodeManager 29092 HRegionServer [wyp @node2 ~]$ jps 2310 DataNode 2726 HRegionServer 2622 QuorumPeerMain 3104 Jps 2437 NodeManager |
2、以master机器作为flume数据的源、并将数据发送给node1机器上的flume,最后node1机器上的flume将数据插入到Hbase中。master机器上的flume和node1机器上的flume中分别做如下的配置:
在master的$FLUME_HOME/conf/目录下创建以下文件(文件名随便取),并做如下配置,这是数据的发送端:
[wyp @master conf]$ vim example.conf agent.sources = baksrc agent.channels = memoryChannel agent.sinks = remotesink agent.sources.baksrc.type = exec agent.sources.baksrc.command = tail -F /home/wyp/Documents/data/data.txt agent.sources.baksrc.checkperiodic = 1000 agent.channels.memoryChannel.type = memory agent.channels.memoryChannel.keep-alive = 30 agent.channels.memoryChannel.capacity = 10000 agent.channels.memoryChannel.transactionCapacity = 10000 agent.sinks.remotesink.type = avro agent.sinks.remotesink.hostname = node1 agent.sinks.remotesink.port = 23004 agent.sinks.remotesink.channel = memoryChannel |
在node1的$FLUME_HOME/conf/目录下创建以下文件(文件名随便取),并做如下配置,这是数据的接收端:
[wyp @node1 conf]$ vim example.conf agent.sources = avrosrc agent.channels = memoryChannel agent.sinks = fileSink agent.sources.avrosrc.type = avro agent.sources.avrosrc.bind = node1 agent.sources.avrosrc.port = 23004 agent.sources.avrosrc.channels = memoryChannel agent.channels.memoryChannel.type = memory agent.channels.memoryChannel.keep-alive = 30 agent.channels.memoryChannel.capacity = 10000 agent.channels.memoryChannel.transactionCapacity = 10000 agent.sinks.fileSink.type = hbase agent.sinks.fileSink.table = wyp agent.sinks.fileSink.columnFamily = cf agent.sinks.fileSink.column = charges agent.sinks.fileSink.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer agent.sinks.fileSink.channel = memoryChannel |
这两个文件配置的含义我就不介绍了,自己google一下吧。
3、在master机器和node1机器上分别启动flume服务进程:
[wyp @master apache-flume- 1.4 . 0 -bin]$ bin/flume-ng agent --conf conf --conf-file conf/example.conf --name agent -Dflume.root.logger=INFO,console [wyp @node1 apache-flume- 1.4 . 0 -bin]$ bin/flume-ng agent --conf conf --conf-file conf/example.conf --name agent -Dflume.root.logger=INFO,console |
当分别在node1和master机器上启动上面的进程之后,在node1机器上将会输出以下的信息:
2014 - 01 - 20 22 : 41 : 56 , 179 (pool- 3 -thread- 1 ) [INFO - org.apache.avro.ipc.NettyServer$NettyServerAvroHandler. handleUpstream(NettyServer.java: 171 )] [id: 0x16c775c5 , / 192.168 . 142.161 : 42201 => / 192.168 . 142.162 : 23004 ] OPEN 2014 - 01 - 20 22 : 41 : 56 , 182 (pool- 4 -thread- 1 ) [INFO - org.apache.avro.ipc.NettyServer$NettyServerAvroHandler. handleUpstream(NettyServer.java: 171 )] [id: 0x16c775c5 , / 192.168 . 142.161 : 42201 => / 192.168 . 142.162 : 23004 ] BOUND: / 192.168 . 142.162 : 23004 2014 - 01 - 20 22 : 41 : 56 , 182 (pool- 4 -thread- 1 ) [INFO - org.apache.avro.ipc.NettyServer$NettyServerAvroHandler. handleUpstream(NettyServer.java: 171 )] [id: 0x16c775c5 , / 192.168 . 142.161 : 42201 => / 192.168 . 142.162 : 23004 ] CONNECTED: / 192.168 . 142.161 : 42201 |
在master机器上将会输出以下的信息:
2014 - 01 - 20 22 : 42 : 16 , 625 (lifecycleSupervisor- 1 - 0 ) [INFO - org.apache.flume.sink.AbstractRpcSink. createConnection(AbstractRpcSink.java: 205 )] Rpc sink remotesink: Building RpcClient with hostname: node1, port: 23004 2014 - 01 - 20 22 : 42 : 16 , 625 (lifecycleSupervisor- 1 - 0 ) [INFO - org.apache.flume.sink.AvroSink.initializeRpcClient(AvroSink.java: 126 )] Attempting to create Avro Rpc client. 2014 - 01 - 20 22 : 42 : 19 , 639 (lifecycleSupervisor- 1 - 0 ) [INFO - org.apache.flume.sink.AbstractRpcSink.start(AbstractRpcSink.java: 300 )] Rpc sink remotesink started. |
这样暗示node1上的flume和master上的flume已经连接成功了。
4、如何测试?可以写一个脚本往/home/wyp/Documents/data/data.txt(见上面master机器上flume上面的配置)文件中追加东西:
for i in { 1 .. 1000000 }; do echo "test flume to Hbase $i" >> /home/wyp/Documents/data/data.txt; sleep 0.1 ; done |
运行上面的脚本,这样将每隔0.1秒往/home/wyp/Documents/data/data.txt文件中添加内容,这样master上的flume将会接收到/home/wyp/Documents/data/data.txt文件内容的变化,并变化的内容发送到node1机器上的flume,node1机器上的flume把接收到的内容插入到Hbase的wyp表中的cf:charges列中(见上面的配置)。
$HADOOP_HOME/share/hadoop/common/lib/guava-11.0.2.jar替换$FLUME_HOME/lib/guava-10.0.1.jar包;
用$HADOOP_HOME/share/hadoop/common/lib/protobuf-java-2.5.0.jar替换$HBASE_HOME/lib/protobuf-java-2.4.0.jar包。然后再启动步骤三的两个进程。
最新文章
- 进fastreboot
- orcad 元件库的查找位置对照表
- 161116、springmvc自己实现防止表单重复提交(基于注解)
- linq集合内部赋值
- Solr 1.3 安装步骤
- ASP.NET MVC- VIEW Overview Part 1
- blend
- MyBatis Generator 的使用
- Linux显示只显示目录文件
- PTA題目的處理(一)
- 安卓9.0系统机器(亲测有效)激活Xposed框架的步骤
- python之元组及其方法---整理集
- jhipster安装_Windows
- 【Java】 剑指offer(57-1) 和为s的两个数字
- 每日质量NPM包复制_copy-to-clipboard
- python使用Fabric模块实现自动化运维
- docker容器下tomcat 不向catalina.out输出日志解决以及支持中文字符集
- 微信通过openID发送消息/后台post、get提交并接收数据
- Tcpdump一些常用指令
- VM上Hadoop3.1伪分布式模式搭建
热门文章
- Spring Beans 自动装配 简介
- POJ2377
- 又抓了一个导致频繁GC的鬼--数组动态扩容
- 基于 abp vNext 和 .NET Core 开发博客项目 - 定时任务最佳实战(一)
- [Android-NDK编译] ndk 编译 c++ 兼容性问题汇总整理
- [安卓自动化测试] 001.UIAutomator初探
- PAT 1033 To Fill or Not to Fill (25分) 贪心思想
- Xilinx ISE多功能移位寄存器仿真及Basys2实验板实验
- [组合数学] 圆排列和欧拉函数为啥有关系:都是polya定理的锅
- Jmeter 样例 之 JDBC请求-操作MySql数据库