首页 > 其他分享 >大数据学习6之分布式日志收集框架Flume——Flume实战应用之从指定的网络端口采集数据输出到控制台

大数据学习6之分布式日志收集框架Flume——Flume实战应用之从指定的网络端口采集数据输出到控制台

时间:2022-11-30 19:36:45浏览次数:39  
标签:Flume flume java agent source conf 控制台 日志 channel


从指定的网络端口采集数据输出到控制台

进入官网,查看文档,setting up an agent,看到a simple example
使用Flume的关键就是写flume的agent配置文件
1. 配置source
2. 配置channel
3. 配置sink
4. 把以上三个组件串起来

文章目录

  • ​​从指定的网络端口采集数据输出到控制台​​
  • ​​(1)例如:写一个example.conf配置文件,放置到flume的conf文件夹下​​
  • ​​(2)启动agent,可见官网文档starting an agent​​
  • ​​(3)使用telnet进行进行测试​​

(1)例如:写一个example.conf配置文件,放置到flume的conf文件夹下

# example.conf: A single-node Flume configuration

# Name the components on this agent
# 解析:a1代表agent的名称,r1代表source的名称,k1代表sink的名称,c1代表channel的名称
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
# 详见官网 NetCat TCP Source配置说明
a1.sources.r1.type = netcat
a1.sources.r1.bind = hadoop000
a1.sources.r1.port = 44444

# Describe the sink
# 详见官网 logger sink配置说明
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory
# 详见官网 memory channel
a1.channels.c1.type = memory
#a1.channels.c1.capacity = 1000
#a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
# source-channel-sink 一个source可以输出到多个channel,一个channel只能输出到一个sink
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

(2)启动agent,可见官网文档starting an agent

flume-ng agent命令用于启动一个agent
-n 即–name,代表agent名称,必填
-c 即–conf,代表在具体哪个目录下使用configs配置文件
-f 即–conf-file,代表指定使用哪个config配置文件的具体位置
-Dflume.root.logger=INFO,console 把日志信息打印到控制台上

$ bin/flume-ng agent 
-n $agent_name -c conf -f conf/flume-conf.properties.template

例如:

flume-ng agent \
--name a1 \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/example.conf \
-Dflume.root.logger=INFO,console

报错:

2021-04-04 14:54:28,745 (lifecycleSupervisor-1-5) [ERROR - org.apache.flume.lifecycle.LifecycleSupervisor$MonitorRunnable.run(LifecycleSupervisor.java:253)] Unable to start EventDrivenSourceRunner: { source:org.apache.flume.source.NetcatSource{name:r1,state:IDLE} } - Exception follows.
org.apache.flume.FlumeException: java.net.BindException: Cannot assign requested address
at org.apache.flume.source.NetcatSource.start(NetcatSource.java:173)
at org.apache.flume.source.EventDrivenSourceRunner.start(EventDrivenSourceRunner.java:44)
at org.apache.flume.lifecycle.LifecycleSupervisor$MonitorRunnable.run(LifecycleSupervisor.java:251)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.BindException: Cannot assign requested address
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)
at org.apache.flume.source.NetcatSource.start(NetcatSource.java:167)
... 9 more

解决:

hadoop000对应的ip地址不正确

大数据学习6之分布式日志收集框架Flume——Flume实战应用之从指定的网络端口采集数据输出到控制台_.net

(3)使用telnet进行进行测试

使用git bash或其他终端远程连接虚拟机

telnet hadoop000 44444

输入内容即可

大数据学习6之分布式日志收集框架Flume——Flume实战应用之从指定的网络端口采集数据输出到控制台_大数据_02


此时Flume收集到信息并打印到控制台中

大数据学习6之分布式日志收集框架Flume——Flume实战应用之从指定的网络端口采集数据输出到控制台_flume_03


其中Event是Flume中数据传输的基本单元,

Event = 可选的header + byte array


标签:Flume,flume,java,agent,source,conf,控制台,日志,channel
From: https://blog.51cto.com/u_12528551/5900314

相关文章

  • 大数据学习4之分布式日志收集框架Flume——背景介绍与架构及核心组件说明
    业务现状分析问题:WebServer/ApplicationServer分散在各个机器上,想用大数据平台Hadoop进行统计分析,日志如何收集到Hadoop平台上?shell脚本cp到hadoop集群的机器上,再通......
  • springboot日志之日志框架分类和选择
    导入:小张写日志写了一个统一的接口层:日志门面(日志的一个抽象层):logging-abstract.jar给项目中导入具体的日志实现就可以了。以前写的zhanglogging.jar,zhanglogging-good.jar......
  • springboot日志之slf4j使用原理
    1、如何在系统中使用slf4j?给系统里面导入slf4j的jar和logback的实现jar。日志方法的调用,不应该直接调用日志的实现类,而是调用日志抽象层里面的方法。importorg.slf4j.Logge......
  • springboot日志之其他日志框架统一转换为slf4j
    a(slf4j+logback):Spring(commons-logging)、Hibernate(jboss-logging)、Mybatis。。。怎么统一日志记录?即使是别的框架也一起统一使用slf4j进行输出。如何让系统中所有的日志都统......
  • springboot日志之切换日志框架
    1、可以按照slf4j的日志适配图进行相关的配置slf4j+log4j:打开依赖树,exclude掉不用的依赖导入适配包resources下添加log4j.properties2、切换为log4j2注释掉excludestarter-......
  • 单位自启动脚本 和日志处理等
     在/root/下建立2个文件,一个startup.sh 一个start文件(用于自启动)。vimstartup.sh#!/bin/bashjava-jar/root/www/warehouse.jar& vimstart#!/b......
  • 数据库的Undo日志与Redo日志
    Undo日志主要用来恢复到事务开始前的状态更新前写入日志旧值commit之后,前面的日志还需要吗?分情况1.单线程可以清理2.多线程需要等到所有并行线程提交后才能(检查......
  • SQL server 2016日志文件的清理
    SQL资源对象管理器1、sql库-->属性-->文件得到sql库的数据路径和日志路径,日志名称等;2、新建查询管理器:USEMASTERGOALTERDATABASEais20190925150901SETRECOVERY......
  • 论项目中日志处理的正确操作(springboot案例)
    理论和日志的重要不需要重复,各位都明白,企业中甩锅 查询记录  必要的东西,直接贴上代码案例 maven<dependency><groupId>org.springframework.boot</groupI......
  • Mybatis源码分析(十七) - 源码包分析【日志模块】
    mybatis源码下载地址:​​https://github.com/mybatis/mybatis-3​​MyBatis源码导入过程:下载MyBatis的源码检查maven的版本,必须是3.25以上,建议使用maven的最新版本mybatis的......