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

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
时间: 2024-11-03 01:20:03

Hive入门--4.flume-数据收集工具的相关文章

hadoop四----数据收集flume

Flume是一个分布式的.可靠的.可用的服务,用于从许多不同的源上有效地搜集.汇总.移动大量数据日志到一个集中式的数据存储中.并且它是一个简单的和灵活的基于流的数据流架构.它具有鲁棒性和容错机制以及故障转移和恢复的机制.对于分析的应用中它使用一个简单的可扩展的数据模型.Flume传输的数据可以是网络,媒体等产生. Apache Flume是Apache软件基金会的一个顶级项目. 源-Source,接收器-Sink,通道-Channel flume是cloudera公司的一款高性能.高可能的分布式

ios 性能优化之app运行时数据收集

收集你的应用程序数据 来帮助您监控和提高你的应用程序,它能够收集信息在您的应用程序正在运行. 本章描述了如何直接工具来收集关于应用程序的信息. 注意: 你的设备之前必须提供开发工具可以收集数据. 看到 配置你的iOS设备的发展 . 设置数据收集与目标弹出菜单 目标导航栏弹出菜单是用于设置设备收集的数据和应用程序或过程你将在收集数据. 点击弹出菜单让你选择目标. 目标弹出菜单为您提供三个选择收集数据: 所有进程. 收集数据从当前系统上运行的所有进程. 附加到进程. 收集数据从您选择的当前运行的进程

SQL Server自动化运维系列——关于数据收集(多服务器数据收集和性能监控)

需求描述 在生产环境中,很多情况下需要采集数据,用以定位问题或者形成基线. 关于SQL Server中的数据采集有着很多种的解决思路,可以采用Trace.Profile.SQLdiag.扩展事件等诸多方案. 几种方案各有利弊,其中从SQL Server2012版本开始,微软的开始各种整合这些采集方案,力推扩展事件. 对于上述的数据采集只是一种实现手段,对于采集完数据的存储没有统一的规范,并且对于多服务器的数据采集及汇总没形成统一的规范. 本篇实现 1.通过SQL Server自带的数据采集器实现

Hadoop数据收集与入库系统Flume与Sqoop

Hadoop提供了一个中央化的存储系统,其有利于进行集中式的数据分析与数据共享. Hadoop对存储格式没有要求.可以存储用户访问日志.产品信息以及网页数据等数据. 常见的两种数据来源.一种是分散的数据源:机器产生的数据.用户访问日志以及用户购买日志.另一种是传统系统中的数据:传统关系型数据库(MySQL.Oracle).磁盘阵列以及磁带. Flume由三部分构成.Master负责负责通信及配置管理,是集群的控制器.Collector用于对数据进行聚合.往往会产生一个更大的数据流.然后加载到HD

大数据技术之_18_大数据离线平台_02_Nginx+Mysql+数据收集+Web 工程 JS/JAVA SDK 讲解+Flume 故障后-如何手动上传 Nginx 日志文件至 HDFS 上

十一.Nginx11.1.介绍11.2.常见其他 Web 服务器11.3.版本11.4.Nginx 安装11.5.目录结构11.6.操作命令十二.Mysql12.1.介绍12.2.关系型数据库(SQL)种类12.3.特征12.4.术语12.4.与非关系型数据库比较(Not Only SQL)12.4.1.种类12.4.2.特征12.4.3.总结十三.数据收集13.1.收集方式13.2.数据的事件类型13.2.1.Launch 事件13.2.2.PageView 事件13.3.Nginx 日志收集

大数据学习:hive篇,入门学习大数据开发

大数据开发之路漫漫其修远兮,吾将上下而求索.对于很多入门学习大数据开发的小伙伴,可能第一个接触到的,是我们的大数据领域的数据仓库工具hive.在大数据生态中,hive一般作为数据仓库来使用. Hive本身是不做数据存储的,它是构建在分布式存储系统HDFS之上,我们平常看到的表数据其实本质上来说还是HDFS的文件. Hive把这些HDFS数据文件,通过元数据规则映射为数据库的表,并且可以提供SQL操作的功能.Hive总体结构比较简单,总体有三个组件:用户接口.元数据系统.驱动器.用户通过用户接口来

SQL*Loader数据装载工具入门_超越OCP精通Oracle视频课程培训24

oracle视频教程目标     Oracle视频教程,风哥本套oracle教程培训学习Oracle SQL*Loader概念及用法及SQL*Loader两个案例,同时课件带有近20个案例用于大家自行练习.适用人群IT相关从业人员.Oracle数据库技术人员.想加工资的.想升职的都可以. 视频在线学习地址:http://edu.51cto.com/course/course_id-6987.html Oracle视频教程简介本课程介绍:Oracle视频教程,风哥本套oracle教程培训学习Ora

Hadoop、Pig、Hive、NOSQL 学习资源收集

(一)hadoop 相关安装部署 1.hadoop在windows cygwin下的部署: http://lib.open-open.com/view/1333428291655 http://blog.csdn.net/ruby97/article/details/7423088 http://blog.csdn.net/savechina/article/details/5656937 2.hadoop 伪分布式安装: http://www.thegeekstuff.com/2012/02/

FLUME日志收集

一.FLUME介绍 Flume是一个分布式.可靠.和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力. 设计目标: (1) 可靠性 当节点出现故障时,日志能够被传送到其他节点上而不会丢失.Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除:如果数据发送失败,可以重新发送.),Store on fa