大数据技术之flume——日志收集系统

这篇具有很好参考价值的文章主要介绍了大数据技术之flume——日志收集系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、flume概述

1.1 flume定义

大数据需要解决的三个问题:采集、存储、计算。

Apache flume是一个分布式、可靠的、高可用的海量日志数据采集、聚合和传输系统,将海量的日志数据从不同的数据源移动到一个中央的存储系统中。用一句话总结:Flume不生产数据,它只是数据的搬运工。

flume日志采集,# flume,大数据,flume,Powered by 金山文档

flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS。

1.2 flume基础框架

flume日志采集,# flume,大数据,flume,Powered by 金山文档

1.2.1 Agent

agent是一个JVM进程,它以事件的形式将数据从源头送至目的地。

agent主要有三个组成部分:SourceChannelSink

Source:采集组件。
用户跟数据源对接,以获取数据;它有各种各样的内置实现。包括 avro、thrift、 exec、jms、 spooling directorynetcattaildir等。

Sink:下沉组件。
不断轮询channel中的事件并批量地移除它们。将这些时间批量写入到存储或索引系统、或者被发送到另一个flume agent中。组件包括 hdfslogger、avro、thrift、ipc、 fileHBase、solr、自定义。

Channel : 传输通道组件。
用于从source将数据传递到sink,起到缓冲的作用,是source和sink之间的缓冲区。如源头采集的数据和输出数据速率不对等,若没有channel,source采集的速率快于sink输出的数据时,会导致系统的崩溃。
channel是 线程安全的,可以同时处理几个source的写入操作和几个sink的读取操作。
flume自带两种channel: memory channelfile channelmemory channel是内存中的队列,在 不需要关心数据丢失的情景下使用file channel将所有的事件写道磁盘,因此在程序关闭或者宕机的情况下 不会丢失数据

1.2.2 Event

传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。Event由HeaderBody两部分组成,Header用来存放该event的一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组。

Header(k=v)

Body(byte array)

二、Flume安装

2.1 解压文件

1. 解压文件到/opt/soft中
[root@hadoop02 install]# tar -zxf ./apache-flume-1.9.0-bin.tar.gz -C ../soft/

2. 在/opt/soft目录下将apache-flume-1.9.0-bin 改名为flume190
[root@hadoop02 soft]# mv apache-flume-1.9.0-bin/ flume190

2.2 修改配置文件

1. /opt/soft/flume190/conf目录中将临时配置文件flume-env.sh.template拷贝为配置文件flume-env.sh
[root@hadoop02 conf]# cp flume-env.sh.template flume-env.sh

2. 配置flume-env.sh文件 (修改22行和25行)
[root@hadoop02 conf]#  vim flume-env.sh

22 export JAVA_HOME=/opt/soft/jdk180
25 export JAVA_OPTS="-Xms1000m -Xmx2000m -Dcom.sun.management.jmxremote"
flume日志采集,# flume,大数据,flume,Powered by 金山文档
flume日志采集,# flume,大数据,flume,Powered by 金山文档
-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些。
-Xmx:java heap最大值,使用的最大内存。

2.3 安装nc(netcat) /telnet协议

[root@hadoop02 conf]# yum install -y nc

先查看telnet
[root@hadoop02  ~]# yum list telnet*
安装telnet
[root@hadoop02 ~]# yum install telnet-server
[root@hadoop02 ~]# yum install telnet.*

telnet是teletype network的缩写,现在已成为一个专有名词,表示远程登录协议和方式,分为Telnet客户端和Telnet服务器程序. Telnet可以让用户在本地Telnet客户端上远端登录到远程Telnet服务器上。

监听端口

先开服务端
[root@hadoop02 ~]# nc -lc 9999

再开客户端
[root@hadoop02 ~]# nc localhost(或输入ip地址) 9999
flume日志采集,# flume,大数据,flume,Powered by 金山文档

2.4 应用

2.4.1 监控端口并输出到控制台

1> 通过netcat工具向本机的8888端口发送数据。
2> flume监控本机的8888端口。通过flume的source端读取数据。
3> flume将获取的数据通过sink端写出到控制台。

新建netcat-logger.conf文件

[root@hadoop02 conf]# vim ./netcat-logger.conf
# 给agent命名为a1
a1.sources=r1
a1.sinks=k1
a1.channels=c1

# source的描述信息/配置
a1.sources.r1.type=netcat
a1.sources.r1.bind=192.168.152.192
a1.sources.r1.port=8888
 
# channel的描述信息/配置
a1.channels.c1.type=memory
-- 事务容量,单次发送最大的事件量。要小于总容量
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
 
a1.sinks.k1.type=logger
 
# 将source端和sink端进行绑定
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1

启动监听:

监听端口:
以下命令需要进入到flume/bin目录下运行
[root@hadoop02 ~]# /opt/soft/flume190/bin/flume-ng agent --name a1 --conf /opt/soft/flume190/conf/ --conf-file /opt/soft/flume190/conf/netcat-logger.conf -Dflume.root.logger=INFO,console

访问端口:
[root@hadoop02 conf]# netcat 192.168.153.139 8888
flume日志采集,# flume,大数据,flume,Powered by 金山文档

运行命令说明:

flume-ng agent
启动命令。

--name(-n)
agent的名字,这里为a1。

--conf(-c)
flume的配置文件存储在conf/目录。

--conf-file(-f)
flume本次启动的配置文件是conf/netcat-logger.conf文件。

-Dflume.root.logger=INFO,console
普通运行模式,将运行日志输出到控制台。
-D表示flume运行时动态修改flume.root.logger参数属性值,并将控制台日志打印级别设置为INFO级别。日志级别包括:log、info、warn、error。

2.4.3 监控单个追加文件

新建flume-file-hdfs.conf文件

--文件保存在/opt/conf中

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

--监听hadoop datanode的log文件
a1.sources.r1.type=exec
a1.sources.r1.command=tail -F /opt/data/datas.csv


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

a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=hdfs://hadoop02:9000/flume/upload/%Y%m%d/%H

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

启动hadoop

[root@hadoop02 ~]# start-all.sh

启动监听

[root@hadoop02 flume190]# ./bin/flume-ng agent -n a1 -c conf/ -f /opt/conf/flume-file-hdfs.conf 

三、flume事务

flume日志采集,# flume,大数据,flume,Powered by 金山文档

Source 采集数据并包装成Event,并将Event缓存再Channel中,Sink不断地从Channel 获取Event,并解决成数据,最终将数据写入存储或索引系统。文章来源地址https://www.toymoban.com/news/detail-738572.html

Put事务流程:
doPut:将批数据先写入临时缓冲区。
doCommit:检查channel内存队列是否足够合并。
doRollback:channel内存队列空间不足,回滚事务。

Take事务:
doTake:将数据取到临时缓冲区takeList,并将数据发送到HDFS
doCommit:如果数据全部发送成功,则清楚临时缓冲区takeList。
doRollback:数据发送过程中如果出现异常,rollback将临时缓冲区takeList中的数据归还给channel内存队列。

到了这里,关于大数据技术之flume——日志收集系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 日志采集传输框架之 Flume,将监听端口数据发送至Kafka

    1、简介                 Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传 输的系统。Flume 基于流式架构,主要有以下几个部分组成。  主要组件介绍: 1)、 Flume Agent 是一个 JVM 进程,它以事件的形式将数据从源头送至目的。Agent 主

    2024年01月22日
    浏览(55)
  • Hadoop高手之路8-Flume日志采集

    在大数据系统的开发中,数据收集工作无疑是开发者首要解决的一个难题,但由于生产数据的源头丰富多样,其中包含网站日志数据、后台监控数据、用户浏览网页数据等,数据工程师要想将它们分门别类的采集到HDFS系统中,就可以使用Apache Flume(数据采集)系统。 1. Flum

    2024年02月05日
    浏览(47)
  • 【分布式技术】ELK大型日志收集分析系统

    目录 步骤一:完成JAVA环境部署 步骤二:部署ES节点(三台主机) 步骤三:内核参数修改 步骤四:web端查看验证 步骤五:yum安装nginx  步骤六:完成logstash部署 步骤七:部署kibana  步骤八:测试ELK

    2024年01月20日
    浏览(43)
  • 二百一十一、Flume——Flume实时采集Linux中的Hive日志写入到HDFS中(亲测、附截图)

    为了实现用Flume实时采集Hive的操作日志到HDFS中,于是进行了一场实验 [root@hurys23 conf]# find / -name hive.log /home/log/hive312/hive.log [root@hurys23 conf]# vi  flume-file-hdfs.conf # Name the components on this agent a2.sources = r2 a2.sinks = k2 a2.channels = c2 # Describe/configure the source a2.sources.r2.type = exec a2.sources

    2024年02月04日
    浏览(62)
  • 分布式技术--------------ELK大规模日志实时收集分析系统

    目录 一、ELK日志分析系统 1.1ELK介绍 1.2ELK各组件介绍 1.2.1ElasticSearch 1.2.2Kiabana 1.2.3Logstash 1.2.4可以添加的其它组件 1.2.4.1Filebeat filebeat 结合logstash 带来好处 1.2.4.2缓存/消息队列(redis、kafka、RabbitMQ等) 1.2.4.3Fluentd 二、为什么要使用 ELK 三、完整日志系统基本特征 四、ELK 的工作

    2024年04月17日
    浏览(45)
  • 电商大数据日志收集系统之EFK

    背景 日志管理的挑战: 关注点很多,任何一个点都有可能引起问题 日志分散在很多机器,出了问题时,才发现日志被删了 很多运维人员是消防员,哪里有问题去哪里 集中化日志管理思路: 日志收集 ——》格式化分析 ——》检索和可视化 ——》 风险告警 ELK架构: ELK架构

    2024年02月07日
    浏览(37)
  • Flume 数据采集

    1 . 2 . 1  集群 进程查看 脚本 (1)在/home/bigdata_admin/bin目录下创建脚本xcall.sh [bigdata_admin@hadoop102  bin]$ vim xcall.sh (2)在脚本中编写如下内容 (3)修改脚本执行权限 [bigdata_admin@hadoop102 bin ]$ chmod 777 xcall.sh (4)启动脚本 [bigdata_admin@hadoop102 bin ]$ xcall.sh jps 1 . 2.2 H adoop 安装 1)安

    2024年02月11日
    浏览(43)
  • 【数据采集与预处理】流数据采集工具Flume

    目录 一、Flume简介 (一)Flume定义 (二)Flume作用 二、Flume组成架构 三、Flume安装配置 (一)下载Flume (二)解压安装包 (三)配置环境变量 (四)查看Flume版本信息 四、Flume的运行 (一)Telnet准备工作 (二)使用Avro数据源测试Flume (三)使用netcat数据源测试Flume 五、F

    2024年01月21日
    浏览(100)
  • Flume采集端口数据kafka消费

    1.flume单独搭建 2.Flume采集端口数据kafka消费

    2024年02月06日
    浏览(48)
  • (二十三)大数据实战——Flume数据采集之采集数据聚合案例实战

    本节内容我们主要介绍一下Flume数据采集过程中,如何把多个数据采集点的数据聚合到一个地方供分析使用。我们使用hadoop101服务器采集nc数据,hadoop102采集文件数据,将hadoop101和hadoop102服务器采集的数据聚合到hadoop103服务器输出到控制台。其整体架构如下: ①在hadoop101服务

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包