Flume-1.4和Hbase-0.96整合

原创 2016年05月31日 17:27:33

最近由于项目需要把Flume收集到的日志信息插入到Hbase中,由于第一次接触这些,在整合的过程中,我遇到了许多问题,我相信很多人也应该会遇到这些问题的,于是我把整个整合的过程写出来,希望给那些同样遇到这样问题的朋友帮助。

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
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列中(见上面的配置)。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Flume-0.9.4和Hbase-0.96整合(1)

Flume-0.9.4和Hbase-0.96整合(1) 这几天由于项目的需要,需要将Flume收集到的日志插入到Hbase中,有人说,这不很简单么?Flume里面自带了Hbase sink,可以直接...

云凡教育分享-Flume-0.9.4和Hbase-0.96整合(2)

Flume-0.9.4和Hbase-0.96整合(2) 这几天由于项目的需要,需要将Flume收集到的日志插入到Hbase中,有人说,这不很简单么?Flume里面自带了Hbase sink,可以...

Flume1.5.0的安装、部署、简单应用(含伪分布式、与hadoop2.2.0、hbase0.96的案例)

目录目录 前言 什么是Flume Flume的特点 Flume的可靠性 Flume的可恢复性 Flume的一些核心概念 Flume的官方网站在哪里 Flume在哪里下载 Flume如何安装 Flume...
  • 狮子
  • 狮子
  • 2016年08月03日 16:22
  • 515

整合Hadoop2.2.0+HBase0.96+Hive0.12+MySql集群

集群环境(虚拟机单机部署): 系统版本:Redhat 5.7 X64;Hadoop:Hadoop2.2.0;HBase:HBase0.96;Hive:Hive0.12;Mysql:MySql5....
  • wzs298
  • wzs298
  • 2014年12月01日 09:53
  • 2756

flume-ng整合hbase

  • 2017年11月16日 12:53
  • 191KB
  • 下载

HBase(0.96以上版本)过滤器Filter详解及实例代码

原文章地址:http://blog.csdn.net/u010967382/article/details/37653177  目录: 引言 -- 参数基础 1. 结构(Struct...

【甘道夫】HBase(0.96以上版本)过滤器Filter详解及实例代码

【甘道夫】HBase(0.96以上版本)过滤器Filter详解及实例代码

hbase0.96+hadoop2.2分页中遇到的问题

最近项目中用到了hbase,开始写的查询效率非常慢,由于用到了 Filter startRowkeyFilter = new RowFilter(CompareFilter.CompareOp.EQ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Flume-1.4和Hbase-0.96整合
举报原因:
原因补充:

(最多只允许输入30个字)