在使用Flume的时候,请确保你电脑里面已经搭建好Hadoop、Hbase、Zookeeper以及Flume。本文将以最新版的Hadoop-2.2.0、Hbase-0.96.0、Zookeeper-3.4.5以及Flume-1.4.0为例进行说明。如何安装分布式的Hadoop、Hbase、Zookeeper请参见本博客的《Hadoop2.2.0完全分布式集群平台安装与设置》《Hbase 0.96.0分布式安装手册》《Zookeeper 3.4.5分布式安装手册》;如何安装分布式Flume本博客将在以后的文章中介绍。

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

  本文是以最新版的Flume和最新办的Hbase进行整合,在整合的过程中将会出现flume依赖包版本问题,解决方法是用
$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包。然后再启动步骤三的两个进程。

Flume-1.4.0和Hbase-0.96.0整合的更多相关文章

  1. dial tcp 10.96.0.1:443: getsockopt: no route to host --- kubernetes(k8s)DNS 服务反复重启

    kubernetes(k8s)DNS 服务反复重启解决: k8s.io/dns/pkg/dns/dns.go:150: Failed to list *v1.Service: Get https:// ...

  2. (转)dial tcp 10.96.0.1:443: getsockopt: no route to host --- kubernetes(k8s)DNS 服务反复重启

    转:https://blog.csdn.net/shida_csdn/article/details/80028905 kubernetes(k8s)DNS 服务反复重启解决: k8s.io/dns/ ...

  3. hbase0.96.0单机模式安装(win7 无需cygwin)

        之前折腾了几天,想让hbase的单机模式在cygwin上跑起来,都不成功.正当我气馁之时,我无意中发现hbase0.96.0的bin和conf目录下有一些扩展名为cmd的文件.这难道是给win ...

  4. x509: certificate is valid for 10.96.0.1, 172.18.255.243, not 120.79.23.226

    服务器:阿里云服务器 master:120.79.23.226 node:39.108.131.246 系统:Centos 7.4 node节点加入集群中是报错: x509: certificate ...

  5. 最新版大数据平台安装部署指南,HDP-2.6.5.0,ambari-2.6.2.0

    一.服务器环境配置 1 系统要求 名称 地址 操作系统 root密码 Master1 10.1.0.30 Centos 7.7 Root@bidsum1 Master2 10.1.0.105 Cent ...

  6. .NET Core 2.0及.NET Standard 2.0

    .NET Core 2.0的发布时间,.NET Core 2.0预览版及.NET Standard 2.0 Preview大概在5月中旬或下旬发布. .NET Core 2.0正式版本发布时间大约在Q ...

  7. .NET Core 2.0及.NET Standard 2.0 Description

    NET Core 2.0的发布时间,.NET Core 2.0预览版及.NET Standard 2.0 Preview大概在5月中旬或下旬发布. .NET Core 2.0正式版本发布时间大约在Q3 ...

  8. 环境篇:Kylin3.0.1集成CDH6.2.0

    环境篇:Kylin3.0.1集成CDH6.2.0 Kylin是什么? Apache Kylin™是一个开源的.分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析( ...

  9. CDH6.3.0下Apache Atlas2.1.0安装与配置

    CDH6.3.0下Apache Atlas2.1.0安装与配置 0. 说明 文中的${ATLAS_HOME}, ${HIVE_HOME} 环境变更需要根据实际环境进行替换. 1. 依赖 A. 软件依赖 ...

随机推荐

  1. 解决CentOS无法识别网卡问题

    在联想电脑安装CentOS 6.9系统的时候,出现了无法上网问题,记录下这一路的坑. CentOS安装时在设置主机名这一步的下方有配置网络按钮,而此时该按钮点击无效.进入系统后发现没有网络连接. 在终 ...

  2. .net core HttpClient 使用之消息管道解析(二)

    一.前言 前面分享了 .net core HttpClient 使用之掉坑解析(一),今天来分享自定义消息处理HttpMessageHandler和PrimaryHttpMessageHandler ...

  3. Oracle阻塞会话源头查找-单机和RAC环境

    在写 Oracle session相关数据字典(一)  这篇文章时,提到使用v$session视图的树形查询可以得到Oracle锁树,这样就便于我们找出阻塞会话的源头,但是仅仅可以在单机环境中使用.今 ...

  4. linux添加策略路由python脚本(待完善)

    #! _*_ coding:utf-8 _*_ import os,sys,re,fileinput,socket device_list = [] ip_list = [] ip_end = [] ...

  5. html5学习之路_003

    html布局 使用<div>元素布局 使用<table>元素布局 <div>元素布局 <!DOCTYPE html> <html> < ...

  6. Java IO(十二) 字符流 Writer 和 Reader

    Java IO(十二) 字符流 Reader和 Writer 一.介绍 涉及到文件(如果是纯文本文件形式)操作时,Java除了提供 FIle(文件和目录路径名的抽象表示形式) 和 FileDescri ...

  7. json工具--org.json.jar

    org.json可以解析json.把对象包装成json.API文档:http://resources.arcgis.com/en/help/arcobjects-java/api/arcobjects ...

  8. JVM虚拟机 与 GC 垃圾回收

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.JVM体系结构概述 1.JVM 与系统.硬件 ​ JVM是运行在操作系统之上的,它与硬件没有直接的交 ...

  9. 核心记账业务可用jdk7的PriorityBlockingQueue优先阻塞队列结合乐观锁实现

    -- 1.优先级阻塞队列 当前核心记账业务是悲观锁实现,但考虑到高并发和死锁的问题,可以用PriorityBlockingQueue优先阻塞队列结合乐观锁实现,对于并发时出现锁无法update时可以重 ...

  10. Java实现 LeetCode 606 根据二叉树创建字符串(遍历树)

    606. 根据二叉树创建字符串 你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串. 空节点则用一对空括号 "()" 表示.而且你需要省略所有不影响字符串与原 ...