码迷,mamicode.com
首页 > Web开发 > 详细

Hive入门--4.flume-数据收集工具

时间:2016-07-22 19:14:48      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

Flume简介

技术分享
技术分享

Flume安装

1. 解压 flume安装包到 /itcast/ 目录下


tar -zxvf /*flume安装包*/ /itcast/

2. 修改 flume配置文件:

2.1 flume-env.sh

修改文件名称:

mv flume-env.sh.template flume-env.sh

添加java_home,保证flume所使用的jdk和hdfs是一样的(可以使用 echo JAVA_HOME 查看当前机器所使用的javaHome所在路径)

2.2 编写agent配置文件a4.conf

定义agent名, source、channel、sink的名称


a4.sources = r1
a4.channels = c1
a4.sinks = k1

具体定义source


a4.sources.r1.type = spooldir #具体实现类是通过反射加载的
a4.sources.r1.spoolDir = /root/logs #监听这个目录

具体定义channel


a4.channels.c1.type = memory #
a4.channels.c1.capacity = 10000 #多少条数据进行一次发送
a4.channels.c1.transactionCapacity = 100 #事物的容量

定义拦截器,为消息添加时间戳


a4.sources.r1.interceptors = i1
a4.sources.r1.interceptors.i1.type= org.apache.flume.interceptor.TimestampInterceptor$Builder

具体定义sink


a4.sinks.k1.type = hdfs
a4.sinks.k1.hdfs.path = hdfs://ns1/flume/%Y%m%d #根据时间动态生成
a4.sinks.k1.hdfs.filePrefix = events- #产生日志的前缀
a4.sinks.k1.hdfs.fileType = DataStream #纯文本方式接收

不按照条数生成文件


a4.sinks.k1.hdfs.rollCount = 0 #多少条flush成1个文件

HDFS上的文件达到128M时生成一个文件


a4.sinks.k1.hdfs.rollSize = 134217728 #文件达到多大时flush成一个文件

HDFS上的文件达到60秒生成一个文件


a4.sinks.k1.hdfs.rollInterval = 60 #flush成一个文件的时间间隔

组装source、channel、sink


a4.sources.r1.channels = c1
a4.sinks.k1.channel = c1

3. 启动flume


先切换到 /itcast/apache-flume-1.5.0-bin/ 目录下:

输入命令:

bin/flume-ng agent -n a4 -c conf -f conf a4.conf -Dflume.root.logger=INFO,console

命令解释:

技术分享


启动后有可能遇到如下的错误,这里一一列举出来,出错的童鞋对号入座:


错误1:
技术分享

解决:说明缺少jar包,拷贝 /itcast/hadoop-2.6.0/share/hadoop/common/hadoop-common-2.6.0.jar/itcast/apache-flume-1.5.0-bin/lib/ 文件夹下

使用scp命令:
技术分享


错误2:
技术分享


解决:说明缺少jar包,拷贝/itcast/hadoop-2.6.0/share/hadoop/common/lib/commons-configuration-.jar/itcast/apache-flume-1.5.0-bin/lib/文件夹下
技术分享


错误3:
技术分享

解决:将/itcast/hadoop-2.6.0/share/hadoop/common/lib/ hadoop-auth-2.6.0.jar拷贝到flume/lib目录下


错误4:
技术分享

解决:在 /root目录下创建logs目录 :mkdir /root/logs


错误5:
技术分享


解决:告知flume ns1的配置信息

1)拷贝core-site.xml和 hdfs-site.xml到flume的conf目录下

scp /itcast/hadoop-2.6.0/etc/hadoop/{core-site.xml, hdfs-site.xml}  

192.168.1.204:/itcast/apache-flume-1.5.0-bin/conf

2)修改/etc/hosts 文件,让该主机知道itcast01 和itcast02的IP地址

添加itcast01 和itcast02 ip和主机名的映射

3)拷贝hadoop-hdfs-2.6.0.jar
技术分享


如果出现如下的内容并且显示在不断滚动,说明没问题了,flume启动成功!
启动成功之后的样子应该是这样的:
http://a1.qpic.cn/psb?/V10Zmdsw4YSoqq/fMmXfJ7K1qrritvBcVWq5Ol2M4fi3PAdfvWstPtcqSk!/b/dHQBAAAAAAAA&bo=4QIuAQAAAAADAOk!&rf=viewer_4

3.1 写入测试

现在如果向 /root/logs 目录下丢进文件,flume则会将这个文件下的内容写入hdfs中

先执行命令:

    bin/flume-ng agent -n a4 -c conf -f conf/a4.conf 
    -Dflume.root.logger=INFO,console

启动flume之后,将日志文件 access_2013_05_30.log 放到 logs 文件夹下:
技术分享

技术分享

通过网页查看hdfs,发现多了一个目录 /flume ,在这个目录下的文件有 20160618 ,说明文件是以时间命名的
技术分享
/flume/20160618 这个文件夹下
技术分享


问题:为什么生成的是3个文件,我写入的不是1个吗?而且这3个文件大小加起来刚好等于日志文件access_2013_05_30.log的大小


原因:这里sink设置了每60秒滚动写入一次或者当缓冲区文件大小达到134217728字节(128M)时进行滚动写入。

通过计算时间,写入总共花费几分钟,那势必第二个滚动选项是无法满足的,所以文件每60s的时候刚刚读入了一部分,接着就被写入hdfs中了。

4.flume的另外一种配置


source—exec
channel—memory
sink—logger


启动方式和之前的一样,只是读入的配置文件不同:

bin/flume-ng agent -n a2 -f /home/hadoop/a2.conf -c conf -Dflume.root.logger=INFO,console

a2.conf配置文件:

定义agent名, source、channel、sink的名称


a2.sources = r1
a2.channels = c1
a2.sinks = k1

具体定义source


a2.sources.r1.type = exec
a2.sources.r1.command = tail -F /home/hadoop/a.log

具体定义channel


a2.channels.c1.type = memory
a2.channels.c1.capacity = 1000
a2.channels.c1.transactionCapacity = 100

具体定义sink


a2.sinks.k1.type = logger

组装source、channel、sink


a2.sources.r1.channels = c1
a2.sinks.k1.channel = c1

监控当有数据写入这个log文件中时,flume将这些数据采集并打印在控制台上
a) 就像tail –F file 命令一样

    # echo 111111 >> log
    # echo 222222 >> log
    # echo 333333 >> log

以阻塞形式打印,向log文件中追加记录
技术分享

b) 以a2.conf配置文件运行flume
将a2.conf文件拷贝到flume/conf 目录下
在/root目录下创建文件log

运行命令:

    bin/flume-ng agent -n a2 -f /itcast/apache-flume-1.5.0-bin/conf/a2.conf 
    -c conf -Dflume.root.logger=INFO,console

Hive入门--4.flume-数据收集工具

标签:

原文地址:http://blog.csdn.net/u014726937/article/details/51993674

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!