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,变更为如下内容:

注意最后两个channel一个有s,一个没有

解释:

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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载于:https://www.cnblogs.com/wzlbigdata/p/8277668.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tensorflow的安装

安装好adaconda软件,打开 adaconda prompt anaconda search -t conda tensorflow 查看conda create -n tensorflow python3.5 配置python3.5环境选择 yes 进行安装activate tensorflow 激活tensorflowpip install tensorflow 安装 然后打开adaco…

昨晚三巨头聚餐,顺便聊了这三个问题

今天老何找我们吃饭,我和老何还有老墨是邻居,三年前我们就认识了,而且关系还不错,但是今年疫情的原因我们都没聚过,上周六本来说好要聚一下,但又因为周末带娃的原因又没聚成,今天我在微信群上说…

决策树 算法原理及代码

决策树可以使用不熟悉的数据集合,并从中提取出一系列的规则,这是机器根据数据集创建规则的过程,就是机器学习的过程。用一个小案例分析:通过No surfacing 和 flippers判断该生物是否是鱼,No surfacing 是离开水面是否…

深度好文|面试官:进程和线程,我只问这19个问题

# 干了这碗鸡汤!我急切地盼望着可以经历一场放纵的快乐,纵使巨大的悲哀将接踵而至,我也在所不惜。-- 太宰治 《人间失格》大家好,这里是周日凌晨4点,仍在笔耕不辍的程序喵大人。下面隆重推出我呕心沥血,耗时…

终于有人将进程间通信讲明白了

使用多进程协作来实现应用和系统是一种被广泛使用的开发方法。多进程协作主要有以下三点优势。将功能模块化,避免重复造轮子。增强模块间的隔离,提供更强的安全保障。提高应用的容错能力。进程间通信(Inter-Process Communication&#xff0c…

神舟本本放心率

总得票8520 可以放心购买 22.0% 1942票 不太放心 64.0% 5510票 看情况 12.0% 1068票投票起止时间:2007-11-15 至2008-11-22转载于:https://www.cnblogs.com/badapple126/archive/2007/11/16/962020.html

梯度下降算法

在学习逻辑回归时,对梯度上升算法进行了应用,看到其他的博客讲解,梯度上升算法适合求最大值,梯度下降算法适合求最小值,这里有一个分析:梯度上升算法公式是学习率,是一个常数。这个是根据逻辑回…

花了一个深夜,才用C语言写了一个2048游戏雏形

12年我毕业的第二个月工资,我就买了一个IPAD,然后在IPAD上下了一个2048游戏,玩起来非常爽。然后这几天看到好几个公众号都发了自己写这个游戏的代码,然后我自己也想试试,所以就有了这篇文章,写代码还是很有…

向银行贷款20万, 分期三年买50万的车,个人借款40万, 贷款10年买200万的房子,再贷款120万分创业...

向银行贷款20万按1年期贷款利率为:6%,若按年还贷款,银行贷款利息为:200,000*6%12,000。连本带息:20*106%21.2万分期三年买50万的车 贷款总额30万 年利率按10%算,分三年还清&#xff…

集成算法——Adaboost代码

集成算法是我们将不同的分类器组合起来,而这种组合结果就被称为集成方法或者是元算法。使用集成方法时会有多种形式:可以是不同算法的集成,也可以是同意算法在不同设置下的集成,还可以是数据集不同部分分配给不同分类器之后的集成…

年终抽奖来了

时间很快,2020年已经到了12月份,我从2018年开始写公众号,经过了快两年是时间,我收获了4万的读者,非常开心。我自己是一个挺逗逼的人,而且我写公众号并不觉得我比别人厉害,技术上我真的就是一个很…

嵌入式 Linux下永久生效环境变量bashrc

作者:skdkjxy原文:http://blog.sina.com.cn/s/blog_8795b0970101f1f9.html.bashrc文件 在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al可以看到4个隐藏文件&am…

回归分析——线性回归

机器学习中,对于离散的数据可以做分类问题,那对于连续的数据就是做回归问题,这里对一元线性回归和多元线性回归做一个简介,帮组理解。回归分析:从一组样本数据出发,确定变量之间的数学关系式,对…

编译原理(五)自底向上分析之算符优先分析法

自底向上分析之算符优先分析法 说明:以老师PPT为标准,借鉴部分教材内容,AlvinZH学习笔记。 基本过程 1. 一般方法:采用自左向右地扫描和分析输入串,从输入符号串开始,通过反复查找当前句型的句柄&#xff0…

做Android开发,要清楚init.rc里面的东西

init.rc 复习看这个之前,先看看大神总结的文章这篇文章总结的非常到位,但是因为代码不是最新的Android版本,对我们最新的Android版本不适用。http://gityuan.com/2016/02/05/android-init/#init rc文件拷贝拷贝其实也就是把文件放到机器的某个…

宏比较值,坑的一B

昨晚上,我准备睡觉,连总给我发了一段代码#include "stdio.h"#define MAX_MACRO(a, b) ((a) > (b) ? (a) : (b)) int MAX_FUNC(int a, int b) {return ((a) > (b) ? (a) : (b)); }int main() {unsigned int a 1;int b -1;printf(&quo…

Linux下Samba服务器搭建

linux文件共享之samba服务器 ——ubuntu 宗旨:技术的学习是有限的,分享的精神是无限的。 关闭LINUX防火墙命令: #ufwdisable 然后就在windows下ping一下linux的IP,如果能ping通,就可以继续下面的内容,如果p…

搞懂C++为什么难学,看这篇就够了!

学C能干什么? 往细了说,后端、客户端、游戏引擎开发以及人工智能领域都需要它。往大了说,构成一个工程师核心能力的东西,都在C里。跟面向对象型的语言相比,C是一门非常考验技术想象力的编程语言,因此学习起…

看图学源码之FutureTask

RunnableFuture 源码学习: 成员变量 任务的运行状态的转化 package java.util.concurrent; import java.util.concurrent.locks.LockSupport;/**可取消的异步计算。该类提供了Future的基本实现,包括启动和取消计算的方法,查询计算是否完成以…

单片机的引脚,你都清楚吗?

第1课:单片机简叙1.单片机可以做什么?目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。小到电话,玩具,手机,各类刷卡机,电脑键盘,彩电,冰箱&…