| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Day51_Flume(一) -> 正文阅读 |
|
[大数据]Day51_Flume(一) |
一、Flume概述(一)Flume定义Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。说白了,这个工具就是帮助我们实时的采集数据的,如果没有这个工具的话,我们需要自己写好多代码来完成数据采集,而且采集的数据或者目的地一旦发生变化,那么需要修改代码,比较麻烦,有了这个工具之后只需要简单的进行配置,就可以使用它采集数据了,不用写代码。 ? Flume支持定制各类数据发送方,用于收集各类型数据;同时,Flume支持定制各种数据接受方,用于最终存储数据。一般的采集需求,通过对flume的简单配置即可实现。针对特殊场景也具备良好的自定义扩展能力。因此,flume可以适用于大部分的日常数据采集场景。 当前Flume有两个版本。Flume 0.9X版本的统称Flume OG(original generation),Flume1.X版本的统称Flume NG(next generation)。由于Flume NG经过核心组件、核心配置以及代码架构重构,与Flume OG有很大不同,使用时请注意区分。改动的另一原因是将Flume纳入 apache 旗下,Cloudera Flume 改名为 Apache Flume。 (二)Flume基础架构Flume组成架构如下图所示。 1、AgentAgent是一个JVM进程,它以事件的形式将数据从源头送至目的。 Agent主要有3个部分组成,Source、Channel、Sink。 2、SourceSource是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。 3、SinkSink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。 Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定义。 4、ChannelChannel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。 Flume自带两种Channel:Memory Channel和File Channel。 Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。 File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。 5、Event传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。Event由Header和Body两部分组成,Header用来存放该event的一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组。 ? (三)Flume的使用思路既然flume是个工具,来帮我们采集数据的,所以,我们只需要考虑清楚我们的数据来自于哪里,想让flume采集后给我放到哪里去。这两件事情考虑清楚后,通过配置文件告诉flume,flume就可以给我们采集传递数据了。 二、 Flume入门(一)Flume安装部署1、下载地址(1) Flume官网地址:Welcome to Apache Flume — Apache Flume (2)文档查看地址: Flume 1.9.0 User Guide — Apache Flume Flume1.9中文手册:https://flume.liyifeng.org/ (3)下载地址:http://archive.apache.org/dist/flume/ 2、安装部署上传解压重命名
(二)Flume入门案例1、监控端口数据官方案例(1)案例需求: 使用Flume监听一个端口,收集该端口数据,并打印到控制台。 (2)需求分析: ?(3)实现步骤: (1)安装telnet工具 [offcn@bd-offcn-01 ~]$ sudo yum -y install telnet.* (2)判断4444端口是否被占用 [offcn@bd-offcn-01 ~]$ sudo netstat -tnlp | grep 4444 (3)创建Flume Agent配置文件flume-netcat-logger.conf 在flume-1.9.0目录下创建flume-job文件夹并进入flume-job文件夹。 [offcn@bd-offcn-01 ~]$ mkdir /home/offcn/apps/flume-1.9.0/flume-job 在job文件夹下创建Flume Agent配置文件flume-netcat-logger.conf。 [offcn@bd-offcn-01 flume-job]$ vim flume-netcat-logger.conf 在flume-netcat-logger.conf文件中添加如下内容。 添加内容如下:
(4)先开启flume监听端口 第一种写法: bin/flume-ng agent --conf conf --name a1 --conf-file flume-job/flume-netcat-logger.conf -Dflume.root.logger=INFO,console 第二种写法: bin/flume-ng agent -c conf -n a1 -f flume-job/flume-netcat-logger.conf -Dflume.root.logger=INFO,console 参数说明:
(5)使用telcat工具向本机的4444端口发送内容
(6)在Flume监听页面观察接收数据情况 ? 注意:如果看不到结果,将我们之前添加再hadoop classpath的hbase的jar配置注释掉 即:将该行注释掉 ? 2、实时监控单个文件(1)案例需求: 实时监控日志文件,并上传到HDFS中 (2)需求分析: ? (3)实现步骤: (1)创建flume-file-hdfs.conf文件 创建文件 [offcn@bd-offcn-01 flume-job]$ vim flume-file-hdfs.conf 注:要想读取Linux系统中的文件,就得按照Linux命令的规则执行命令。由于日志文件在Linux系统中所以读取文件的类型选择:exec即execute执行的意思。表示执行Linux命令来读取文件。 添加如下内容
注意: 对于所有与时间相关的转义序列,Event Header中必须存在以 “timestamp”的key(除非hdfs.useLocalTimeStamp设置为true,此方法会使用TimestampInterceptor自动添加timestamp)。 a3.sinks.k3.hdfs.useLocalTimeStamp = true 参数解析:
(3)运行Flume
(4)运行报错
(5)向文件追加内容 [offcn@bd-offcn-01 tmp]$ echo aaa >> xxx.log (6)在HDFS上查看文件。 3、实时监控目录下多个新文件(1)案例需求: 使用Flume监听整个目录的文件,并上传至HDFS (2)需求分析: ? (3)实现步骤: (1)创建配置文件flume-dir-hdfs.conf 创建一个文件 [offcn@bd-offcn-01 flume-job]$ vim flume-dir-hdfs.conf 添加如下内容
(2)启动监控文件夹命令 [offcn@bd-offcn-01 flume-1.9.0]$ bin/flume-ng agent -c /home/offcn/apps/flume-1.9.0/conf -n a1 -f flume-job/flume-dir-hdfs.conf -Dflume.root.logger=INFO,console 说明:在使用Spooling Directory Source时,不要在监控目录中创建并持续修改文件;上传完成的文件会以.COMPLETED结尾;被监控文件夹每500毫秒扫描一次文件变动。 (3)向upload文件夹中添加文件 在/home/offcn/tmp目录下创建upload文件夹 [offcn@bd-offcn-01 tmp]$ mkdir upload 向upload文件夹中添加文件,并添加内容 [offcn@bd-offcn-01 upload]$ vi offcn.txt [offcn@bd-offcn-01 upload]$ vi offcn.tmp [offcn@bd-offcn-01 upload]$ vi offcn.log (4)查看HDFS上的数据 (5)等待1s,再次查询upload文件夹 [offcn@bd-offcn-01 upload]$ ll total 0 -rw-rw-r-- 1 offcn offcn 0 Jun 10 08:00 offcn.log -rw-rw-r-- 1 offcn offcn 0 Jun 10 08:00 offcn.log.COMPLETED -rw-rw-r-- 1 offcn offcn 0 Jun 10 07:59 offcn.txt.COMPLETED -rw-rw-r-- 1 offcn offcn 0 Jun 10 08:01 offcn.xml |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:48:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |