Flume框架基础
* Flume框架基础
框架简介:
** Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集、聚集、移动的服务,Flume只能在Unix环境下运行。
** Flume基于流式架构,容错性强,也很灵活简单,主要用于在线实时的引用分析。
宏观认知:
** Flume、Kafka用来实时进行数据收集,Spark、Storm用来实时处理数据,impala用来实时查询。
Flume架构图:
如果所示,Flume架构只有一个Agent角色节点,该角色节点由Source、Channel、Sink组成。

简单介绍一下各个组成部分的功能:
Source:Source用于采集数据,Source是产生数据流的地方,同时Source会将产生的数据流传输到Channel,这个有点类似于Java IO部分的Channel。
Channel:用于桥接Sources和Sinks,类似于一个队列。
Sink:从Channel收集数据,将数据写到目标源(可以是下一个Source,也可以是HDFS或者HBase)
数据传输单元:Event
** Event是Flume数据传输的基本单元
** Flume以事件的形式将数据从源头送至目的地
** Envent由可选的header和载有数据的一个byte array构成,载有的数据对于flume是不透明的,header容纳了key-value键值对的无需集合,key在某个集合内唯一,header还可以在上下文路由中拓展使用。
Flume传输过程:
如下图所示,source监控某个文件,文件产生新的数据,拿到该数据后,将数据封装在一个Event中,并put到channel后commit提交,channel队列先进先出,sink去channel队列中拉取数据,然后写入到hdfs或者HBase中。

* 安装Flume
** 下载地址传送门:链接:http://pan.baidu.com/s/1eSOOKam 密码:ll6r
** 拷贝,解压,不赘述了
** 配置文件
将conf目录下的flume-env.sh(重命名template文件就行了)文件的JAVA_HOME配置一下,依然不赘述了
** 命令使用
$ bin/flume-ng,出现如下图所示内容:

解释:
--conf:指定配置目录
--name:指定Agent名称
--conf-file:指定具体的配置文件
* 案例
例1:使用flume监听某个端口,将端口写入的数据输出
Step1、修改配置文件
$ cp -a conf/flume-conf.properties.template conf/flume-telnet.conf,变更为如下内容:

解释:
r1:即源,监控的数据源,resource的缩写
k1:即 sink缩写
c1:即channel缩写
Step2、安装telnet命令
由于默认没有该命令,我们来使用yum命令安装一下,注意进入root用户
# yum -y install telnet
Step3、运行flume端口监控
$ bin/flume-ng agent --conf conf/ --name a1 --conf-file conf/flume-telnet.conf -Dflume.root.logger==INFO,console
分别指定name,配置文件目录,配置文件,以及输出类型和位置。
运行如图:

Step4、测试
另开一个CRT到z01的界面
执行命令:
$ netstat -an | grep 44444,用于检查44444端口是否已经被flume成功监听,如图:

$ telnet localhost 44444,用于连接本机44444端口,进行数据发送(此处也可是使用其他命令,比如netcat等),此处在另一个窗口中进行telnet命令,原来执行flume的那个窗口查看数据是否成功监听到,测试如图:
发送端:

监听端:

如图所示,测试成功。如果需要退出telnet,使用ctrl+]键,再输入quit即可。
例2:某个系统框架的日志文件到HDFS
Step1、修改配置文件
更多参数配置的含义,请参看官文:http://flume.apache.org/FlumeUserGuide.html#hdfs-sink
$ cp -a conf/flume-telnet.conf conf/flume-apache-log.conf,变更为如下内容:

知识补充:

Step2、安装httpd
# yum -y install httpd
(注:httpd是Apache HTTP服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池)
Step3、启动httpd服务
centOS 7:
# systemctl start httpd.service
centOS 6:
# service httpd start
Step4、修改/var/log目录下的httpd文件夹的权限,以便于访问
# chmod 755 /var/log/httpd/
# vi /var/www/html/index.html,随便写点什么,如图:

Step5、执行如下 命令后,使用浏览器访问网页,查看产生的日志
$ tail -f /var/log/httpd/access_log,多次访问后,如图所示:
(浏览器打开:192.168.122.200,根据自己的配置IP访问即可。)

Step6、拷贝Flume所依赖的Hadoop的jar到自己的lib目录
cp /opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/share/hadoop/common/lib/hadoop-auth-2.5.0-cdh5.3.6.jar /opt/modules/cdh/apache-flume-1.5.0-cdh5.3.6-bin/lib
cp /opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/share/hadoop/common/lib/commons-configuration-1.6.jar /opt/modules/cdh/apache-flume-1.5.0-cdh5.3.6-bin/lib
cp /opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/share/hadoop/mapreduce1/lib/hadoop-hdfs-2.5.0-cdh5.3.6.jar /opt/modules/cdh/apache-flume-1.5.0-cdh5.3.6-bin/lib
cp /opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/share/hadoop/common/hadoop-common-2.5.0-cdh5.3.6.jar /opt/modules/cdh/apache-flume-1.5.0-cdh5.3.6-bin/lib
拷贝完成后,flume的lib目录如下:

Step7、启动Hadoop相关服务后,执行flume-ng命令
$ bin/flume-ng agent --conf conf/ --name a2 --conf-file conf/flume-apache-log.conf
(尖叫提示:如果想让flume-ng命令在后台运行,不持续占用终端的操作,可以在命令的末尾加上&符号,即:
$ bin/flume-ng agent --conf conf/ --name a2 --conf-file conf/flume-apache-log.conf &)
检查flume的log日志,没有确认没有ERROR或者WARN错误后,刷新index.html页面,即可看到日志已经迁移至HDFS集群,如图:




以上便实现了Flume的日志收集,其他收集大同小异,大家可自行参照官方文档中的参数设置。
* 总结
flume就是一个流式的,日志采集框架,就像是一个挂在后台的收集器一样,实时监听你需要收集的文件或者目录。
个人微博:http://weibo.com/seal13
QQ大数据技术交流群(广告勿入):476966007
作者:Z尽际
链接:https://www.jianshu.com/p/e71643e6546e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Flume框架基础的更多相关文章
- Sqoop框架基础
Sqoop框架基础 本节我们主要需要了解的是大数据的一些协作框架,也是属于Hadoop生态系统或周边的内容,比如: ** 数据转换工具:Sqoop ** 文件收集库框架:Flume ** 任务调度框架 ...
- Kafka框架基础
* Kafka框架基础 官网:kafka.apache.org 框架简介 Apache Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kaf ...
- Hibernatel框架基础使用
Hibernatel框架基础使用 1.简介 1.1.Hibernate框架由来 Struts:基于MVC模式的应用层框架技术 Hibernate:基于持久层的框架(数据访问层使用)! Spring:创 ...
- Struts2框架基础
Struts2框架基础 1.Java的框架 1.1.框架简介 在大型项目开发过程中,经常会使用到一些框架,这样做好的好处是能够提高工作效率,在java中最常用的的框架就是SSH,这其实是三个框架的简称 ...
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- 框架基础之Hibernate简介
框架基础之Hibernate简介 1.什么是Hibernate? Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来 ...
- ThinkPHP框架基础
ThinkPHP 一.php框架基础介绍 真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维 ...
- Python云端系统开发入门——框架基础
Django框架基础 这是我学习北京理工大学嵩天老师的<Python云端系统开发入门>课程的笔记,在此我特别感谢老师的精彩讲解和对我的引导. 1.Django简介与安装 Django是一个 ...
- 如何基于Winform开发框架或混合框架基础上进行项目的快速开发
在开发项目的时候,我们为了提高速度和质量,往往不是白手起家,需要基于一定的基础上进行项目的快速开发,这样可以利用整个框架的生态基础模块,以及成熟统一的开发方式,可以极大提高我们开发的效率.本篇随笔就是 ...
随机推荐
- hdu 1722 Cake 数学yy
题链:http://acm.hdu.edu.cn/showproblem.php? pid=1722 Cake Time Limit: 1000/1000 MS (Java/Others) Me ...
- hdu2838Cow Sorting(树状数组+逆序数)
题目链接:点击打开链接 题意描写叙述:给定一个长度为100000的数组,每一个元素范围在1~100000,且互不同样,交换当中的随意两个数须要花费的代价为两个数之和. 问怎样交换使数组有序.花费的代价 ...
- simple_strtoul()分析
此函数有以下几点值得注意:1.第一个参数中的const.一般在函数的形参中,如果我们只是希望调用者使用该参数,而不会去改变该参数内容(一般是指针指向的内容),则可以声明为const.2.第二个参数.C ...
- NOIP2017提高组模拟赛 7(总结)
NOIP2017提高组模拟赛 7(总结) 第一题 斯诺克 考虑这样一个斯诺克球台,它只有四个袋口,分别在四个角上(如下图所示).我们把所有桌子边界上的整数点作为击球点(除了4个袋口),在每个击球点我们 ...
- [Swift]数组(Array)最强解析
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- css实现左右两端对齐均匀排列 text-align: justify
1.实现一行文字的两端对齐均匀排列 为了实现效果只是加上一个text-align: justify;是没效果的.所以需要加上一个空标签<span><i>都可以,也可以用伪类来写 ...
- ASP.NET MVC5 历史数据查询
在TCX_1706项目中在历史数据库备份及历史数据查询的功能,历史数据包括历史采集数据查询和历史产品数据查询两个 在项目中如何查询历史库的历史表呢? 第一步:在配置文件中添加历史库的链接字符串 第二步 ...
- AbstractQueuedSynchronizer中CAS的疑惑
这段代码是AQS框架中将当前节点入队的操作. Node pred = tail; if (pred != null) { node.prev = pred; if (compareAndSetTail ...
- 用js将CheckBox的值存入数据库和将数据库字符串的值转为数组选中CheckBox
Index @{ ViewBag.Title = "测试"; } <script src="~/Scripts/jquery-1.10.2.js"> ...
- SQL中一次插入多条数据
SQL中insert一次可以插入一条数据,我们有三种方法可以一次性插入多条数据. 1. 语法:select 字段列表 into 新表 from 源表 注意事项:此种方法新表是系统自动创建,语句执行前不 ...