1、Flume简介

​ (1) Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集、聚集、移动的服务,Flume只能在Unix环境下运行。

​ (2) Flume基于流式架构,容错性强,也很灵活简单。

​ (3) Flume、Kafka用来实时进行数据收集,Spark、Flink用来实时处理数据,impala用来实时查询。

2、Flume角色

2.1 Source

​ 用于采集数据,Source是产生数据流的地方,同时Source会将产生的数据流传输到Channel,这个有点类似于Java IO部分的Channel。

2.2 Channel

​ 用于桥接Sources和Sinks,类似于一个队列。

2.3 Sink

​ 从Channel收集数据,将数据写到目标源(可以是下一个Source,也可以是HDFS或者HBase)。

2.4 Event

​ 传输单元,Flume数据传输的基本单元,以事件的形式将数据从源头送至目的地。

3、Flume传输过程

​ source监控某个文件或数据流,数据源产生新的数据,拿到该数据后,将数据封装在一个Event中,并put到channel后commit提交,channel队列先进先出,sink去channel队列中拉取数据,然后写入到HDFS或其他目标源中。

4、Flume安装与部署

4.1 上传包

​ 将flume的gz包上传到/opt/soft/目录下;

[root@bigdata111 conf]# rz

​ 若不支持rz命令,则用yum安装lrzsz命令:

​ 查询含有rz的yum源,由结果可见,yum源中含有lrzsz.x86_64包;

[root@bigdata111 soft]# yum search rzsz
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
============================================================================================================================= N/S matched: rzsz ==============================================================================================================================
lrzsz.x86_64 : The lrz and lsz modem communications programs 名称和简介匹配 only,使用“search all”试试。

​ 安装rz命令

[root@bigdata111 soft]# yum -y install lrzsz

4.2 解压包

​ 将flume解压到/opt/module/目录下,并改短名字flume-1.8.0:

[root@bigdata111 soft]# tar -zvxf apache-flume-1.8.0-bin.tar.gz -C /opt/module
[root@bigdata111 module]# mv apache-flume-1.8.0-bin flume-1.8.0

4.3 配置参数

​ 切换到/opt/module/flume-1.8.0/conf目录,将flume-env.sh.template文件名改为:flume-env.sh

[root@bigdata111 module]# mv flume-env.sh.template flume-env.sh

​ 查询JAVA_HOME的值;

[root@bigdata111 conf]# echo $JAVA_HOME
/opt/module/jdk1.8.0_144

​ 编辑flume-env.sh,将文件内容中的JAVA_HOME的值修改为上面查到的;

export JAVA_HOME=/opt/module/jdk1.8.0_144

4.4 配置环境变量

​ 在/etc/profile末尾添加flume的家路径

export FLUME_HOME=/opt/module/flume-1.8.0
export PATH=$PATH:$FLUME_HOME/bin

4.5 验证flume成功与否

​ 在xshell客户端下,输入flu,按tab键,看是否能够自动补全:flume-ng

​ 如果可以自动补全,则代表安装flume成功,否则失败。

[root@bigdata112 opt]# flume-ng
Error: Unknown or unspecified command '' Usage: /opt/module/flume-1.8.0/bin/flume-ng <command> [options]... commands:
help display this help text
agent run a Flume agent
avro-client run an avro Flume client
version show Flume version info
............

4.6 配置其他两台机器

​ 利用scp命令,配置其他两台机器;

​ 首先,将flume目录分发到bigdata112,bigdata113

[root@bigdata111 ~]# scp -r /opt/module/flume-1.8.0/ root@bigdata112:/opt/module/
[root@bigdata111 ~]# scp -r /opt/module/flume-1.8.0/ root@bigdata113:/opt/module/

​ 其次,将/etc/profile环境变量文件分发到bigdata112,bigdata113

[root@bigdata111 ~]# scp -r /etc/profile root@bigdata112:/etc/
[root@bigdata111 ~]# scp -r /etc/profile root@bigdata113:/etc/

​ 最后,在bigdata112,bigdata113上分别刷新环境变量

[root@bigdata112 opt]# source /etc/profile
[root@bigdata113 opt]# source /etc/profile

5、Flume案例

5.1 监控端口数据

目标:Flume监控一端Console,另一端Console发送消息,使被监控端实时显示。

5.1.1 安装telnet命令

[root@bigdata111 conf]# yum -y install telnet

5.1.2 创建Agent配置文件

​ 在flume根目录下,新建一个myconf目录,用于存放自定义conf配置文件;

​ 新建flume-telnet.conf文件,文件内容如下:

# 定义agent
# <自定义agent名>.sources=<自定义source名称>
a1.sources = r1
# <自定义agent名>.sinks=<自定义sink名称>
a1.sinks = k1
# <自定义agent名>.channels=<自定义channel名称>
a1.channels = c1 # 定义source
# <agent名>.sources.<source名称>.type = 源类型
a1.sources.r1.type = netcat
# <agent名>.sources.<source名称>.bind = 数据来源服务器
a1.sources.r1.bind = bigdata111
# <agent名>.sources.<source名称>.port = 自定义未被占用的端口
a1.sources.r1.port = 44445 # 定义sink
# <agent名>.sinks.<sink名称>.type = 下沉到目标源的类型
a1.sinks.k1.type = logger # 定义channel
# <agent名>.channels.<channel名称>.type = channel的类型
a1.channels.c1.type = memory
# <agent名>.channels.<channel名称>.capacity = 最大容量
a1.channels.c1.capacity = 1000
# transactionCapacity<=capacity
a1.channels.c1.transactionCapacity = 1000 # 双向链接
# <agent名>.sources.<source名称>.channels = channel名称
a1.sources.r1.channels = c1
# <agent名>.sinks.<sink名称>.channel = channel名称
a1.sinks.k1.channel = c1

5.1.3 启动flume配置文件

[root@bigdata111 conf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a1 --conf-file /opt/module/flume-1.8.0/conf/flume-telnet.conf -Dflume.root.logger==INFO,console

​ 可以简写为:

[root@bigdata111 conf]# flume-ng agent --c /opt/module/flume-1.8.0/conf/ --n a1 --f /opt/module/flume-1.8.0/conf/flume-telnet.conf -Dflume.root.logger==INFO,console

5.1.4 发送测试数据

​ 通过其他机器向bigdata111的44445端口发送数据

[root@bigdata112 ~]# telnet bigdata111 44445
Trying 192.168.1.111...
Connected to bigdata111.
Escape character is '^]'.
echo aaaa
OK
echo aaaa
OK
echo bbbbbbbbb
OK

运行结果如图:

5.2 实时读取本地文件到HDFS

5.2.1 创建Agent配置文件

​ 创建flume-hdfs配置文件

# 1 agent  若同时运行两个agent,则agent名字需要改变,比如下面a2
a2.sources = r2
a2.sinks = k2
a2.channels = c2 # 2 source
# 因监控linux本地文件,执行shell命令,所以type为exec;
a2.sources.r2.type = exec
# 监控的文件路径
a2.sources.r2.command = tail -F /opt/test.log
a2.sources.r2.shell = /bin/bash -c # 3 sink
# 数据下沉到目标源hdfs
a2.sinks.k2.type = hdfs
# 如果集群为HA模式,则路径为active的namenode地址,普通分布式集群,直接写namenode所在地址即可。
a2.sinks.k2.hdfs.path = hdfs://bigdata111:9000/flume/%Y%m%d/%H
#上传文件的前缀
a2.sinks.k2.hdfs.filePrefix = logs-
#是否按照时间滚动文件夹
a2.sinks.k2.hdfs.round = true
#多少时间单位创建一个新的文件夹
a2.sinks.k2.hdfs.roundValue = 1
#重新定义时间单位
a2.sinks.k2.hdfs.roundUnit = hour
#是否使用本地时间戳
a2.sinks.k2.hdfs.useLocalTimeStamp = true
#积攒多少个Event才flush到HDFS一次
a2.sinks.k2.hdfs.batchSize = 1000
#设置文件类型,可支持压缩
a2.sinks.k2.hdfs.fileType = DataStream
#多久生成一个新的文件
a2.sinks.k2.hdfs.rollInterval = 600
#设置每个文件的滚动大小
a2.sinks.k2.hdfs.rollSize = 134217700
#文件的滚动与Event数量无关
a2.sinks.k2.hdfs.rollCount = 0
#最小副本数
a2.sinks.k2.hdfs.minBlockReplicas = 1 # 定义channel
a2.channels.c2.type = memory
a2.channels.c2.capacity = 1000
a2.channels.c2.transactionCapacity = 1000 # 双向链接绑定
a2.sources.r2.channels = c2
a2.sinks.k2.channel = c2

5.2.2 启动flume配置文件

[root@bigdata111 flume-1.8.0]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a2 --conf-file /opt/module/flume-1.8.0/myconf/flume-hdfs.conf

5.2.3 发送文件内容

[root@bigdata111 opt]# echo kjalksdjglkajsdg2333333333333333asdgasdgasdg >> test.log
[root@bigdata111 opt]# echo kjalksdjglkajsdg2333333333333333asdgasdgasdg >> test.log
[root@bigdata111 opt]# echo kjalksdjglkajsdg2333333333333333asdgasdgasdg >> test.log
[root@bigdata111 opt]# echo kjalksdjglkajsdg2333333333333333asdgasdgasdg >> test.log

​ 运行结果:

5.3 实时读取目录文件到HDFS

目标:使用flume监听整个目录的文件

5.3.1 创建Agent配置文件

​ 创建agent配置文件,命名为:flume-dir.conf,文件内容如下:

#1 Agent
a3.sources = r3
a3.sinks = k3
a3.channels = c3 #2 source
#监控目录的类型
a3.sources.r3.type = spooldir
#监控目录的路径
a3.sources.r3.spoolDir = /opt/module/flume1.8.0/upload
#哪个文件上传hdfs,然后给这个文件添加一个后缀
a3.sources.r3.fileSuffix = .COMPLETED
a3.sources.r3.fileHeader = true
#忽略所有以.tmp结尾的文件,不上传(可选)
a3.sources.r3.ignorePattern = ([^ ]*\.tmp) # 3 sink
a3.sinks.k3.type = hdfs
a3.sinks.k3.hdfs.path = hdfs://bigdata111:9000/flume/%H
#上传文件的前缀
a3.sinks.k3.hdfs.filePrefix = upload-
#是否按照时间滚动文件夹
a3.sinks.k3.hdfs.round = true
#多少时间单位创建一个新的文件夹
a3.sinks.k3.hdfs.roundValue = 1
#重新定义时间单位
a3.sinks.k3.hdfs.roundUnit = hour
#是否使用本地时间戳
a3.sinks.k3.hdfs.useLocalTimeStamp = true
#积攒多少个Event才flush到HDFS一次
a3.sinks.k3.hdfs.batchSize = 100
#设置文件类型,可支持压缩
a3.sinks.k3.hdfs.fileType = DataStream
#多久生成一个新的文件
a3.sinks.k3.hdfs.rollInterval = 600
#设置每个文件的滚动大小大概是128M
a3.sinks.k3.hdfs.rollSize = 134217700
#文件的滚动与Event数量无关
a3.sinks.k3.hdfs.rollCount = 0
#最小副本数
a3.sinks.k3.hdfs.minBlockReplicas = 1 # Use a channel which buffers events in memory
a3.channels.c3.type = memory
a3.channels.c3.capacity = 1000
a3.channels.c3.transactionCapacity = 100 # Bind the source and sink to the channel
a3.sources.r3.channels = c3
a3.sinks.k3.channel = c3

​ 温馨提示:

​ 1) 不要在监控目录中创建并持续修改文件

​ 2) 上传完成的文件会以.COMPLETED结尾

​ 3) 被监控文件夹每500毫秒扫描一次文件变动

5.3.2 启动flume配置文件

[root@bigdata111 myconf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a3 --conf-file /opt/module/flume-1.8.0/myconf/flume-dir.conf

5.3.3 上传文件到upload目录

[root@bigdata111 opt]# mkdir upload
[root@bigdata111 opt]# ls
module soft test.log upload
[root@bigdata111 opt]# mv test.log upload/
[root@bigdata111 opt]# ls
module soft upload
[root@bigdata111 opt]# vi test1.log
[root@bigdata111 opt]# mv test1.log upload/

​ 运行如图:

5.4 扇出例子01

扇出:数据用于多个地方。(简单理解:一个数据源对应多个channel,sink,并且输出到多个目标源)

例子01示意图:

目标:在flume1里面接收数据,然后数据下沉到两个不同目标源(控制台和HDFS)

5.4.1 创建Agent配置文件

​ 在myconf目录下,新建一个flume-fanout1.conf文件,内容配置如下:

# 定义agent
a1.sources=c1
a1.channels=k1 k2
a1.sinks=s1 s2 # 定义source
a1.sources.c1.type=exec
a1.sources.c1.command=tail -F /opt/test.log
a1.sources.c1.shell=/bin/bash -c # 将数据流复制给多个channel
a1.sources.r1.selector.type=replicating # 定义channel1
a1.channels.k1.type=memory
a1.channels.k1.capacity = 1000
a1.channels.k1.transactionCapacity=1000 # 定义channel2
a1.channels.k2.type=memory
a1.channels.k2.capacity = 1000
a1.channels.k2.transactionCapacity=1000 # 定义sink1
a1.sinks.s1.type=logger # 定义sink2
a1.sinks.s2.type=hdfs
a1.sinks.s2.hdfs.path = hdfs://bigdata111:9000/flume/%Y%m%d/%H
# 上传文件的前缀
a1.sinks.s2.hdfs.filePrefix = logs-
# 是否按照时间滚动文件夹
a1.sinks.s2.hdfs.round = true
# 多少时间单位创建一个新的文件夹
a1.sinks.s2.hdfs.roundValue = 1
# 重新定义时间单位
a1.sinks.s2.hdfs.roundUnit = hour
# 是否使用本地时间戳
a1.sinks.s2.hdfs.useLocalTimeStamp = true
# 积攒多少个Event才flush到HDFS一次
a1.sinks.s2.hdfs.batchSize = 1000
# 设置文件类型,可支持压缩
a1.sinks.s2.hdfs.fileType = DataStream
# 多久生成一个新的文件
a1.sinks.s2.hdfs.rollInterval = 600
# 设置每个文件的滚动大小
a1.sinks.s2.hdfs.rollSize = 134217700
# 文件的滚动与Event数量无关
a1.sinks.s2.hdfs.rollCount = 0
# 最小副本数
a1.sinks.s2.hdfs.minBlockReplicas = 1 # 双向链接
a1.sources.c1.channels = k1 k2
a1.sinks.s1.channel=k1
a1.sinks.s2.channel=k2

5.4.2 启动flume配置文件

[root@bigdata111 myconf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a1 --conf-file /opt/module/flume-1.8.0/myconf/flume-fanout1.conf -Dflume.root.logger==INFO,console

5.4.3 向文件添加内容

​ 切换到/opt/目录下,新建test.log文件,然后动态添加内容,观察控制台输出以及web的hdfs文件

[root@bigdata111 opt]# touch test.log
[root@bigdata111 opt]# touch test.log
[root@bigdata111 opt]# echo 'china' >>test.log
[root@bigdata111 opt]# echo 'hello world' >>test.log
[root@bigdata111 opt]# echo 'nihao' >> test.log

​ 控制台输出如下:

​ web页面结果:

5.5 扇出例子02

目标:flume1监控文件,然后将变动数据分别传给flume2和flume3,flume2的数据下沉到HDFS;flume3的数据下沉到本地文件;

5.5.1 创建flume1配置文件

​ 在bigdata111上的myconf目录下,新建agent配置文件:flume-fanout1.conf;

​ flume1用于监控某文件的变动,同时产生两个channel和两个sink,分别输送给flume2,flume3;

​ 文件内容如下:

# 配置agent
a1.sources = c1
a1.channels = k1 k2
a1.sinks = s1 s2 # 定义source
a1.sources.c1.type=exec
a1.sources.c1.command=tail -F /opt/test.log
a1.sources.c1.shell=/bin/bash -c # 将数据流复制给多个channel
a1.sources.c1.selector.type=replicating # 定义channel1
a1.channels.k1.type=memory
a1.channels.k1.capacity = 1000
a1.channels.k1.transactionCapacity=1000 # 定义channel2
a1.channels.k2.type=memory
a1.channels.k2.capacity = 1000
a1.channels.k2.transactionCapacity=1000 # 定义sink1
a1.sinks.s1.type = avro
a1.sinks.s1.hostname = bigdata112
a1.sinks.s1.port = 4402 # 定义sink2
a1.sinks.s2.type = avro
a1.sinks.s2.hostname = bigdata113
a1.sinks.s2.port = 4402 # 双向链接
a1.sources.c1.channels = k1 k2
a1.sinks.s1.channel=k1
a1.sinks.s2.channel=k2

5.5.2 创建flume2配置文件

​ 在bigdata112的myconf目录下,新建agent配置文件:flume-fanout2.conf

​ 接收flume1的event数据,然后产生一个channel和一个sink,最后将数据下沉到hdfs

​ 文件内容如下:

# 配置agent 不同agent之间,agent名不相同,但是source,channel,sink名可以相同
a2.sources = c2
a2.channels = k2
a2.sinks = s2 # 定义source
a2.sources.c2.type=avro
a2.sources.c2.bind = bigdata112
a2.sources.c2.port = 4402 # 定义channel
a2.channels.k2.type=memory
a2.channels.k2.capacity = 1000
a2.channels.k2.transactionCapacity=1000 # 定义sink
a2.sinks.s2.type = hdfs
a2.sinks.s2.hdfs.path=hdfs://bigdata111:9000/flume2/%H
#上传文件的前缀
a2.sinks.s2.hdfs.filePrefix = flume2-
#是否按照时间滚动文件夹
a2.sinks.s2.hdfs.round = true
#多少时间单位创建一个新的文件夹
a2.sinks.s2.hdfs.roundValue = 1
#重新定义时间单位
a2.sinks.s2.hdfs.roundUnit = hour
#是否使用本地时间戳
a2.sinks.s2.hdfs.useLocalTimeStamp = true
#积攒多少个Event才flush到HDFS一次
a2.sinks.s2.hdfs.batchSize = 100
#设置文件类型,可支持压缩
a2.sinks.s2.hdfs.fileType = DataStream
#多久生成一个新的文件
a2.sinks.s2.hdfs.rollInterval = 600
#设置每个文件的滚动大小大概是128M
a2.sinks.s2.hdfs.rollSize = 134217700
#文件的滚动与Event数量无关
a2.sinks.s2.hdfs.rollCount = 0
#最小副本数
a2.sinks.s2.hdfs.minBlockReplicas = 1 # 双向链接
a2.sources.c2.channels = k2
a2.sinks.s2.channel=k2

5.5.3 创建flume3配置文件

​ 在bigdata113的myconf目录下,新建agent配置文件:flume-fanout3.conf

​ 接收flume1的event数据,然后产生一个channel和一个sink,最后将数据下沉到本地/opt/flume3

​ 文件内容如下:

# 配置agent
a3.sources = c3
a3.channels = k3
a3.sinks = s3 # 定义source
a3.sources.c3.type=avro
a3.sources.c3.bind = bigdata113
a3.sources.c3.port = 4402 # 定义channel
a3.channels.k3.type=memory
a3.channels.k3.capacity = 1000
a3.channels.k3.transactionCapacity=1000 # 定义sink
a3.sinks.s3.type = file_roll
# 提示:本地此目录必须先建好,程序不会自动创建该目录
a3.sinks.s3.sink.directory=/opt/flume3 # 双向链接
a3.sources.c3.channels = k3
a3.sinks.s3.channel=k3

5.5.4 启动三台机器配置文件

bigdata111:

[root@bigdata111 myconf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a1 --conf-file /opt/module/flume-1.8.0/myconf/flume-fanout1.conf -Dflume.root.logger==INFO,console

bigdata112:

[root@bigdata112 myconf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a2 --conf-file /opt/module/flume-1.8.0/myconf/flume-fanout2.conf

bigdata113:

[root@bigdata113 myconf]# flume-ng agent --conf /opt/module/flume-1.8.0/conf/ --name a3 --conf-file /opt/module/flume-1.8.0/myconf/flume-fanout3.conf

​ 运行结果如图:

​ bigdata112:

​ bigdata113:

5.6 扇入例子

5.6.1 创建flume1配置文件

​ flume1(agent1)监控端口数据变化,将数据sink到flume3(agent3);

​ 在myconf目录下新建agent文件:flume-fanin-1.conf

​ 配置内容如下:

# 配置agent
a1.sources = c1
a1.channels = k1
a1.sinks = s1 # 配置source
a1.sources.c1.type = netcat
a1.sources.c1.bind = bigdata111
a1.sources.c1.port = 6666 # 配置sink
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=bigdata113
a1.sinks.s1.port=5008 # 配置channel
a1.channels.k1.type=memory
a1.channels.k1.capacity=1000
a1.channels.k1.transactionCapacity=1000 # 双向绑定
a1.sources.c1.channels = k1
a1.sinks.s1.channel = k1

5.6.2 创建flume2配置文件

​ flume2(agent2)监控本地文件变化,将数据sink到flume3(agent3);

​ 在myconf目录下新建agent文件:flume-fanin-2.conf

​ 配置内容如下:

# 配置agent
a2.sources = c1
a2.channels = k1
a2.sinks = s1 # 配置source
a2.sources.c1.type = exec
a2.sources.c1.command = tail -F /opt/ceshi.log
a2.sources.c1.shell=/bin/bash -c # 配置sink
a2.sinks.s1.type=avro
a2.sinks.s1.hostname=bigdata113
a2.sinks.s1.port=5008 # 配置channel
a2.channels.k1.type=memory
a2.channels.k1.capacity=1000
a2.channels.k1.transactionCapacity=1000 # 双向绑定
a2.sources.c1.channels = k1
a2.sinks.s1.channel = k1

5.6.3 创建flume3配置文件

​ flume3(agent3)接收flume1和flume2的数据,将数据sink到HDFS ;

​ 在myconf目录下新建agent文件:flume-fanin-3.conf

​ 配置内容如下:

# 配置agent
a3.sources = c1
a3.channels = k1
a3.sinks = s1 # 配置source
a3.sources.c1.type = avro
a3.sources.c1.bind = bigdata113
a3.sources.c1.port = 5008 # 配置sink
a3.sinks.s1.type=hdfs
a3.sinks.s1.hdfs.path=hdfs://bigdata111:9000/flume3/%H
# 上传文件的前缀
a3.sinks.s1.hdfs.filePrefix = flume3-
# 是否按照时间滚动文件夹
a3.sinks.s1.hdfs.round = true
# 多少时间单位创建一个新的文件夹
a3.sinks.s1.hdfs.roundValue = 1
# 重新定义时间单位
a3.sinks.s1.hdfs.roundUnit = hour
# 是否使用本地时间戳
a3.sinks.s1.hdfs.useLocalTimeStamp = true
# 积攒多少个Event才flush到HDFS一次
a3.sinks.s1.hdfs.batchSize = 1000
# 设置文件类型,可支持压缩
a3.sinks.s1.hdfs.fileType = DataStream
# 多久生成一个新的文件
a3.sinks.s1.hdfs.rollInterval = 600
# 设置每个文件的滚动大小大概是128M
a3.sinks.s1.hdfs.rollSize = 134217700
# 文件的滚动与Event数量无关
a3.sinks.s1.hdfs.rollCount = 0
# 最小冗余数
a3.sinks.s1.hdfs.minBlockReplicas = 1 # 配置channel
a3.channels.k1.type=memory
a3.channels.k1.capacity=1000
a3.channels.k1.transactionCapacity=1000 # 双向绑定
a3.sources.c1.channels = k1
a3.sinks.s1.channel = k1

5.6.4 启动三个flume配置文件

flume1:

[root@bigdata111 myconf]# flume-ng agent -c ../conf/ -n a1 -f flume-fanout1.conf -Dflume.root.logger==INFO,console

flume2:

[root@bigdata112 myconf]# flume-ng agent -c ../conf/ -n a2 -f flume-fanout2.conf

flume3:

[root@bigdata113 myconf]# flume-ng agent -c ../conf/ -n a3 -f flume-fanout3.conf

5.6.5 操作端口与文件

新开xshell选项卡,链接bigdata111服务器,然后执行telnet命令:

[root@bigdata111 ~]# telnet bigdata111 6666
Trying 192.168.1.111...
Connected to bigdata111.
Escape character is '^]'.
english
OK
chinese
OK
hello
OK
.net
OK
php
OK
java
OK

新开xshell选项卡,链接bigdata112服务器,然后向/opt/ceshi.log添加新内容:

[root@bigdata112 ~]# cd /opt/
[root@bigdata112 opt]# ls
ceshi.log ha module soft zookeeper.out
[root@bigdata112 opt]# cat ceshi.log
start-log-in
end-log
[root@bigdata112 opt]# echo `date` >> ceshi.log
[root@bigdata112 opt]# echo "end-log" >> ceshi.log
[root@bigdata112 opt]# cat ceshi.log
start-log-in
end-log
2019年 09月 07日 星期六 23:36:03 CST
end-log

5.6.6 显示运行结果

​ web页面结果:

​ hdfs的文件内容:

【Flume】Flume基础之安装与使用的更多相关文章

  1. Flume框架基础

    * Flume框架基础 框架简介: ** Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集.聚集.移动的服务,Flume只能在Unix环境下运行. ** Flume基于流式架构,容错性 ...

  2. [Flume] - flume安装

    Apache Flume是一个分布式的.可靠的.高效的系统,可以将不同来源的数据收集.聚合并移动到集中的数据存储中心上.Apache Flume不仅仅只是用到日志收集中.由于数据来源是可以定制的,fl ...

  3. flume+flume+kafka消息传递+storm消费

    通过flume收集其他机器上flume的监测数据,发送到本机的kafka进行消费. 环境:slave中安装flume,master中安装flume+kafka(这里用两台虚拟机,也可以用三台以上) m ...

  4. Linux下一键安装包的基础上安装SVN及实现nginx web同步更新

    Linux下一键安装包的基础上安装SVN及实现nginx web同步更新 一.安装 1.查看是否安装cvs rpm -qa | grep subversion 2.安装 yum install sub ...

  5. 【SpringCloud之pigx框架学习之路 】1.基础环境安装

    [SpringCloud之pigx框架学习之路 ]1.基础环境安装 [SpringCloud之pigx框架学习之路 ]2.部署环境 1.Cmder.exe安装 (1) windows常用命令行工具 下 ...

  6. [ kvm ] 学习笔记 9:WebVirtMgr 基础及安装使用

    目录- 1. 前言- 2. webvirtmgr 简介- 3. webvirtmgr 部署实践    - 3.1 配置 webvirtmgr 主机    - 3.2 kvm node节点配置    - ...

  7. ELK-6.5.3学习笔记–elk基础环境安装

    本文预计阅读时间 13 分钟 文章目录[隐藏] 1,准备工作. 2,安装elasticsearch. 3,安装logstash. 4,安装kibana 以往都是纸上谈兵,毕竟事情也都由部门其他小伙伴承 ...

  8. Flume(一)Flume的基础介绍与安装

    一.背景 Hadoop业务的整体开发流程: 从Hadoop的业务开发流程图中可以看出,在大数据的业务处理过程中,对于数据的采集是十分重要的一步,也是不可避免的一步. 许多公司的平台每天会产生大量的日志 ...

  9. 1.1-1.5 flume架构概述及安装使用

    一.flume架构概述 1.flume简介 Flume是一种分布式,可靠且可用的服务,用于有效地收集,聚合和移动大量日志数据.它具有基于流数据流的简单灵活的架构.它具有可靠的可靠性机制和许多故障转移和 ...

随机推荐

  1. C#版本websocket及时通信协议实现(教程示例)

    1:Websocket有java.nodejs.python.PHP.等版本 ,我现在使用的是C3版本,服务器端是Fleck.客户端和服务器端来使用websocket的,下面开始讲解如何使用: 2:在 ...

  2. 浏览器安装Tampermonkey(俗称油猴子插件),实现免费观看Vip视频、免费下载付费资源等……

    应用场景 说起浏览器,本人常用google,谷歌浏览器,速度快,里面有很多插件,可以实现用户百度云盘下载限制,破解vip视频.百度广告屏蔽,视频广告的屏蔽,百度网盘资源直接下载等实用功能.今天就来分享 ...

  3. 利用Veeam保护SAP HANA数据库

    利用Veeam保护SAP HANA数据库 前言 针对越来越多的SAP HANA备份需求,我们Team翻译.整理.借鉴了Veeam 的SAP HANA 大神 Clemens Zerbe 和 Ali Sa ...

  4. php中转菜刀脚本过狗免杀

    <?php $target="url";//shell 地址 菜刀连这个脚本做中转 $post=''; $i=0; foreach($_POST AS $K=>$V) ...

  5. 将windows项目移植到linux上

    提要:由于项目使用java开发,移植中没有什么编译问题(移植很快,但小问题多) 1.移植过程中遇到的问题: (1).由于项目中使用了 1024以下的端口号,导致网络通信一直出错 原因:因为Linux要 ...

  6. justjavac(迷渡)知乎live--<<前端工程师的入门与进阶>>听讲总结

    知乎听讲总结 知乎live----jjc<前端工程师的入门进阶> git地址 内容 前端的基础知识,计算机专业基础知识感觉还行.前端后台都有做过,现在觉得自己要深入.但是只看框架源码和自己 ...

  7. 使用 Nginx 搭建静态资源 web 服务器

    在搭建网站的时候,往往会加载很多的图片,如果都从 Tomcat 服务器来获取静态资源,这样会增加服务器的负载,使得服务器运行 速度非常慢,这时可以使用 Nginx 服务器来加载这些静态资源,这样就可以 ...

  8. SpringBoot注入配置文件的3种方法

    方案1:@ConfigurationProperties+@Component 定义spring的一个实体bean装载配置文件信息,其它要使用配置信息是注入该实体bean /** * 将配置文件中配置 ...

  9. iOS 原生库对 https 的处理

    转载自:swift cafe 使用 NSURLSession NSURLSession 是 iOS 原生提供的网络处理库.它提供了丰富的接口以及配置选项,满足我们平时网络处理的大部分需求,同时它也支持 ...

  10. kaldi中CD-DNN-HMM网络参数更新公式手写推导

    在基于DNN-HMM的语音识别中,DNN的作用跟GMM是一样的,即它是取代GMM的,具体作用是算特征值对每个三音素状态的概率,算出来哪个最大这个特征值就对应哪个状态.只不过以前是用GMM算的,现在用D ...