美文网首页
Flume(二)快速入门

Flume(二)快速入门

作者: 万事万物 | 来源:发表于2021-05-31 05:57 被阅读0次

Flume安装部署

安装地址

  1. Flume官网
  2. 文档查看地址
  3. 下载地址

安装部署

  1. 将apache-flume-1.9.0-bin.tar.gz上传到linux的/opt/software目录下
    使用scp 命令
$ scp apache-flume-1.9.0-bin.tar.gz atguigu@hadoop102:/opt/software
atguigu@hadoop102's password:
apache-flume-1.9.0-bin.tar.gz                 100%   65MB  17.4MB/s   00:03
  1. 解压apache-flume-1.9.0-bin.tar.gz到/opt/module/目录下
tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /opt/module/

3.将 apache-flume-1.9.0-bin 重名为 flume

 mv apache-flume-1.9.0-bin/ flume
  1. 将lib文件夹下的guava-11.0.2.jar删除以兼容Hadoop 3.1.3
# 检查是否存在
ll |grep guava
-rw-rw-r--. 1 admin admin 1648200 9月  13 2018 guava-11.0.2.jar
# 进行删除
rm guava-11.0.2.jar 

Flume入门案例

监控端口数据官方案例

  1. 案例需求:
使用Flume监听一个端口,收集该端口数据,并打印到控制台。 流程图
  1. 查看官网a-simple-example
  2. 在 flume 目录中创建一个 jobs目录,并创建一个 flume-netcat-logger.conf 文件
[flume]$ mkdir jobs
[flume]$ cd jobs/
[jobs]$ vi flume-netcat-logger.conf
  1. flume-netcat-logger.conf 文件中添加如下内容(来自官网)。
# example.conf: A single-node Flume configuration

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

# Describe the sink
a1.sinks.k1.type = logger

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

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
参数说明
  1. 安装netcat工具
$ sudo yum install -y nc
  1. 检测 44444 端口是否被占用
$ sudo netstat -nlp | grep 44444
  1. 启动 flume 监听端口
    1.第一种方式
    flume]$ bin/flume-ng agent --conf conf/ --name a1 --conf-file job/flume-netcat-logger.conf -Dflume.root.logger=INFO,console
    2.第二种方式
    flume]$ bin/flume-ng agent -c conf/ -n a1 -f job/flume-netcat-logger.conf -Dflume.root.logger=INFO,console
    3.参数说明:
    --conf/-c:表示配置文件存储在conf/目录
    --name/-n:表示给agent起名为a1
    --conf-file/-f:flume本次启动读取的配置文件是在job文件夹下的flume-telnet.conf文件。
    -Dflume.root.logger=INFO,console :-D表示flume运行时动态修改flume.root.logger参数属性值,并将控制台日志打印级别设置为INFO级别。日志级别包括:log、info、warn、error。

  1. 实战
flume]$ bin/flume-ng agent --conf conf/ --name a1  --conf-file jobs/flume-netcat-logger.conf -Dflume.root.logger=INFO,console
启动flume,监听44444端口 监听端口

重开一个终端,请求44444端口


请求44444端口
向44444端口写入数据
image.png

使用netcat工具往 44444 端口发送数据。

[atguigu@hadoop102 ~]$ nc localhost 44444
hello flume #输入的消息
OK # 此表示消息发送成功
2021-05-29 12:45:35,129 (SinkRunner-PollingRunner-DefaultSinkProcessor)
 [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] 
Event: { headers:{} body: 68 65 6C 6C 6F 20 66 6C 75 6D 65                hello flume }

实时监控单个追加文件(以下案例需要先启动 Hadoop

  1. 案例:实时监控Hive日志,并上传到HDFS中
流程图
  1. 查看官网exec-source
  2. 在 jobs/ 目录下创建一个flume-file-hdfs.conf 文件。
[flume]$ cd jobs/
[jobs]$ vi flume-file-hdfs.conf 

4.配置内容

# 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.r2.command = tail -F /home/admin/exec.log
# Describe the sink
a2.sinks.k2.type = hdfs
#hdfs ip端口,/flume/%Y%m%d/%H 表示存储路径.
a2.sinks.k2.hdfs.path = hdfs://hadoop102:9820/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 = 100
#设置文件类型,可支持压缩
a2.sinks.k2.hdfs.fileType = DataStream
#多久生成一个新的文件
a2.sinks.k2.hdfs.rollInterval = 60
#设置每个文件的滚动大小
a2.sinks.k2.hdfs.rollSize = 134217700
#文件的滚动与Event数量无关,在Hadoop2.x 版本需要设置,目前Hadoop版本3.x 设置成0,与数量无关即可。
a2.sinks.k2.hdfs.rollCount = 0

# Use a channel which buffers events in memory
# 该 channels 基于内存
a2.channels.c2.type = memory 
# 容量大小
a2.channels.c2.capacity = 1000 
 # 每次从 channel 读取的数据量。
a2.channels.c2.transactionCapacity = 100

# Bind the source and sink to the channel
a2.sources.r2.channels = c2
a2.sinks.k2.channel = c2

注意:
对于所有与时间相关的转义序列,Event Header中必须存在以 “timestamp”的key(除非hdfs.useLocalTimeStamp设置为true,此方法会使用TimestampInterceptor自动添加timestamp)。
a3.sinks.k3.hdfs.useLocalTimeStamp = true

  1. 运行flume
#切换到 flume 目录
$ cd flume
# 启动 flume 
flume]$ bin/flume-ng agent --conf conf/ --name a2 --conf-file jobs/flume-file-hdfs.conf
  1. 回到 家目录 向exec.log 追加数据
~]$ echo "echoaaaaa" >> exec.log 

向exec.log写入文件之后,首先会创建一个临时目录。该临时文件存储了最新追加的并不是真正写入hdfs上的文件。

image.png 等到60秒后创建一个新的文件a2.sinks.k2.hdfs.rollInterval = 60 image.png 该文件存储着新写入的内容 image.png

实时监控目录下多个新文件

  1. spooldir:多文件监控
    优点
    -能够监控文件夹变化,实现多文件监控。
    -将新增的文件进行操作,操作完成进行打标记
    缺点
    -文件只能操作一次,无法对文件新追加内容之后再做操作。
    -文件名称不可重复。
    -只能对单个文件夹进行监控。

  1. 查看官网spooling-directory-source
  2. 在jobs目录中准备一个 flume-dir-hdfs.conf 文件。
jobs]$ vim flume-dir-hdfs.conf
  1. 配置内容
a3.sources = r3
a3.sinks = k3
a3.channels = c3

# Describe/configure the source
a3.sources.r3.type = spooldir
# 监控的文件地址
a3.sources.r3.spoolDir = /home/admin/upload
# 文件操作完成后,会给文件后面加的后缀,表示是否完成
a3.sources.r3.fileSuffix = .COMPLETED
a3.sources.r3.fileHeader = true
#忽略所有以.tmp结尾的文件,不上传
a3.sources.r3.ignorePattern = ([^ ]*\.tmp)

# Describe the sink
a3.sinks.k3.type = hdfs
a3.sinks.k3.hdfs.path = hdfs://hadoop102:9820/flume/upload/%Y%m%d/%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 = 60
#设置每个文件的滚动大小大概是128M
a3.sinks.k3.hdfs.rollSize = 134217700
#文件的滚动与Event数量无关
a3.sinks.k3.hdfs.rollCount = 0

# 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. 在/opt 目录下准备一个 upload 目录
 opt]$ mkdir upload
  1. 启动 flume
flume]$ bin/flume-ng agent --conf conf/ --name a3 --conf-file jobs/flume-dir-hdfs.conf -Dflume.root.logger=INFO,console

正在监听指定的文件夹

2021-05-29 20:18:53,061 (lifecycleSupervisor-1-4) [INFO - org.apache.flume.source.SpoolDirectorySource.start(SpoolDirectorySource.java:85)] SpoolDirectorySource source starting with directory: /home/admin/upload
2021-05-29 20:18:53,161 (lifecycleSupervisor-1-4) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:119)] Monitored counter group for type: SOURCE, name: r3: Successfully registered new MBean.
2021-05-29 20:18:53,162 (lifecycleSupervisor-1-4) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:95)] Component type: SOURCE, name: r3 started
  1. 向家目录中的upload目录中生成文件。
# 创建一个文件(什么都可以),向该文件中写入一点数据(什么都可以)
[admin@hadoop102 ~]$ vi log111113.log
# 完成之后向 upload 推送文件。
[admin@hadoop102 ~]$ mv log111113.log upload/

查看是否推送情况

[atguigu@hadoop102 ~]$ ls upload/
#  .COMPLETED 自定义的成功标识符,表示该文件已经操作成功。
log111111.log.COMPLETED

flume 日志情况

/home/atguigu/upload/log111113.log to /home/atguigu/upload/log111113.log.COMPLETED
2021-05-29 20:31:45,072 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.hdfs.HDFSDataStream.configure(HDFSDataStream.java:57)] Serializer = TEXT, UseRawLocalFileSystem = false
2021-05-29 20:31:45,557 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.hdfs.BucketWriter.open(BucketWriter.java:246)] Creating hdfs://hadoop102:9820/flume/upload/20210529/20/upload-.1622291505073.tmp
2021-05-29 20:31:51,764 (Thread-8) [INFO - org.apache.hadoop.hdfs.protocol.datatransfer.sasl.SaslDataTransferClient.checkTrustAndSend(SaslDataTransferClient.java:239)] SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
  1. 访问hdfs查看情况
    访问:http://hadoop102:9870/
    查看 /flume/upload/ 下文件信息
这是存放到log111113.log文件中的数据内容 文件信息

当然也可以继续往upload文件夹中添加新的文件,flume会将新的文件内容写入的hdfs中。

总结
spooling-directory 只能对目录进行监控(指定目录下,文件的增加),当目录中有了新的文件,会将新的文件写入到hdfs上。删除、修改并不会触发spooling-directory,所以无法向exec那样监控这文件的变化。


实时监控目录下的多个追加新文件

Exec source适用于监控一个实时追加的文件,不能实现断点续传;Spooldir Source适合用于同步新文件,但不适合对实时追加日志的文件进行监听并同步;而Taildir Source适合用于监听多个实时追加的文件,并且能够实现断点续传。

案例需求:使用Flume监听整个目录的实时追加文件,并上传至HDFS

流程图
  1. 结语:

这是本章最后一个案例,先不说整个环境的搭建(hadoop,flume的搭建),就谈谈如何配置conf。学习一门技术,官方文档是不可缺少的。该案例会需要用到 taildir-source,那么我们先看官网对taildir-source的描述,以及如何搭建一个可以上传到Hadoop上的配置,也算是最后的总结吧。

  1. 查看官网配置taildir-source
#  a1 表示 agent 的别名
# 定义一个 sources 取名 r1
a1.sources = r1
# 定义一个 channels 取名 c1
a1.channels = c1
# 该flume需要使用什么策略,
a1.sources.r1.type = TAILDIR
# 绑定
a1.sources.r1.channels = c1
# 既然要监听文件的追加信息,就需要一个文件夹用于存放文件的偏移量信息,告诉flume下次应该从哪开始。positionFile 就存放着偏移量信息
a1.sources.r1.positionFile = /var/log/flume/taildir_position.json
# taildir 可以同时监控多个文件或文件夹,只需要定义一个文件组,
a1.sources.r1.filegroups = f1 f2
# f1 文件的地址
a1.sources.r1.filegroups.f1 = /var/log/test1/example.log
#文件标头,可以指定多个
a1.sources.r1.headers.f1.headerKey1 = value1
# f2 的文件地址
a1.sources.r1.filegroups.f2 = /var/log/test2/.*log.*
# 文件标头,可以指定多个
a1.sources.r1.headers.f2.headerKey1 = value2
a1.sources.r1.headers.f2.headerKey2 = value2-2
# 是否添加存储绝对路径文件名的标头。
a1.sources.r1.fileHeader = true
# 控制从同一文件连续读取的批次数,
a1.sources.ri.maxBatchCount = 1000
  1. 查看官网配置hdfs-sink
# 定义
a1.channels = c1
a1.sinks = k1
# sink 类型
a1.sinks.k1.type = hdfs
# 绑定
a1.sinks.k1.channel = c1
# 写入hdfs 路径
a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/%S
# 文件开头
a1.sinks.k1.hdfs.filePrefix = events-
# 是否按时间滚动文件夹
a1.sinks.k1.hdfs.round = true
# 多少时间单位创建是一个文件夹
a1.sinks.k1.hdfs.roundValue = 10
# 时间单位(分钟)
a1.sinks.k1.hdfs.roundUnit = minute
  1. 查看官网配置memory-channel
a1.channels = c1
a1.channels.c1.type = memory
# channel 容量大小
a1.channels.c1.capacity = 10000
# sink 抓取的channel的最大数
a1.channels.c1.transactionCapacity = 10000
a1.channels.c1.byteCapacityBufferPercentage = 20
a1.channels.c1.byteCapacity = 800000
  1. 查看官网配置logger-sink
a1.channels = c1
a1.sinks = k1
a1.sinks.k1.type = logger
a1.sinks.k1.channel = c1
  1. 同样在 jobs 创建一个新的conf文件
jobs]$ vim flume-taildir-hdfs.conf

----完成以上准备工作---
使用 taildir-source 配置一个 本地启动(logger)的方式

  1. flume-taildir-hdfs.conf 配置如下
# 定义
a1.sources = r1
a1.channels = c1
a1.sinks = k1

# source 配置
a1.sources.r1.type = TAILDIR
a1.sources.r1.positionFile = /home/admin/flume/taildir_position.json
a1.sources.r1.filegroups = f1 f2
a1.sources.r1.filegroups.f1 = /home/admin/flume/files1/text1.txt
a1.sources.r1.headers.f1.headerKey1 = value1
a1.sources.r1.filegroups.f2 = /home/admin/flume/files2/text2.txt
a1.sources.r1.headers.f2.headerKey1 = value2
a1.sources.r1.headers.f2.headerKey2 = value2-2
a1.sources.r1.fileHeader = true
a1.sources.ri.maxBatchCount = 1000

# 配置 sink
a1.sinks.k1.type = logger

# 配置channel
a1.channels.c1.type = memory
a1.channels.c1.capacity = 10000
a1.channels.c1.transactionCapacity = 10000
a1.channels.c1.byteCapacityBufferPercentage = 20
a1.channels.c1.byteCapacity = 800000

# 进行绑定
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

注意: 这几个目录,建议先创建出来(必须保证存在),启动时会报找不到该文件的错。即便报错了可以不用关闭flume服务,直接创建就行了。

a1.sources.r1.positionFile=/home/admin/flume/
a1.sources.r1.filegroups.f1=/home/admin/flume/files1/
a1.sources.r1.filegroups.f2=/home/admin/flume/files2/
  1. 启动(在flume的根目录下运行,并且启动启动起来之后不要关
    启动命令
    bin/flume-ng agent --conf conf/ --name a1 --conf-file jobs/flume-taildir-hdfs.conf -Dflume.root.logger=INFO,console

启动成功之后(大概这样就启动完成了吧)

2021-05-31 06:15:05,894 (lifecycleSupervisor-1-2) [INFO - org.apache.flume.source.taildir.ReliableTaildirEventReader.<init>(ReliableTaildirEventReader.java:85)] headerTable: {f1={headerKey1=value1}, f2={headerKey1=value2, headerKey2=value2-2}}
2021-05-31 06:15:05,895 (lifecycleSupervisor-1-2) [INFO - org.apache.flume.source.taildir.ReliableTaildirEventReader.<init>(ReliableTaildirEventReader.java:95)] Updating position from position file: /home/atguigu/flume/taildir_position.json
2021-05-31 06:15:05,895 (lifecycleSupervisor-1-2) [INFO - org.apache.flume.source.taildir.ReliableTaildirEventReader.loadPositionFile(ReliableTaildirEventReader.java:145)] File not found: /home/atguigu/flume/taildir_position.json, not updating position
2021-05-31 06:15:05,897 (lifecycleSupervisor-1-2) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:119)] Monitored counter group for type: SOURCE, name: r1: Successfully registered new MBean.
2021-05-31 06:15:05,897 (lifecycleSupervisor-1-2) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:95)] Component type: SOURCE, name: r1 started
  1. 测试:
    向text1.txt 添加内容(重开一个窗口
    向 /home/admin/flume/files1/text1.txt 或 /home/admin/flume/files2/text2.txt 写入数据
files1]$ echo hello > text1.txt

flume运行结果(就有了hello 的输出)

(PollableSourceRunner-TaildirSource-r1) [INFO - org.apache.flume.source.taildir.ReliableTaildirEventReader.openFile(ReliableTaildirEventReader.java:290)] Opening file: /home/atguigu/flume/files1/text1.txt, inode: 524561, pos: 0
(SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{headerKey1=value1, file=/home/atguigu/flume/files1/text1.txt} body: 68 65 6C 6C 6F                                  hello }

同样往/files2/text2.txt 输入也是一样。

# 输入
files2]$ echo "files2" > text2.txt
# 输出
(SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{headerKey1=value2, headerKey2=value2-2, file=/home/atguigu/flume/files2/text2.txt} body: 66 69 6C 65 73 32                               files2 }

说好的taildir-source支持多目录?多文件呢?
多目录需要在 a1.sources.r1.filegroups中定义多个文件(f1,f2,f3,...fn)
多文件需要改 a1.sources.r1.filegroups.f*的匹配规则。
更改上面的配置,files1 匹配所有的 .txt 文件,files2 匹配所有的 .log 文件。

测试:

# 输入
files1]$ echo bbb > text2.txt
# 输出
(SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{headerKey1=value1, file=/home/atguigu/flume/files1/text2.txt} body: 62 62 62                                        bbb }

# 输入
files1]$ echo ccc > text3.txt
# 输出
(SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{headerKey1=value1, file=/home/atguigu/flume/files1/text3.txt} body: 63 63 63                                        ccc }

#输入到同一份文件中
files1]$ echo "hhhhh" > text3.txt
# 输出
(SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{headerKey1=value1, file=/home/atguigu/flume/files1/text3.txt} body: 68 68 68 68 68                                  hhhhh }

测试中文的时候乱码了(之后再看看这个问题吧

#输入
 files1]$ echo "继续写入" > text3.txt

# 输出
(SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{headerKey1=value1, file=/home/atguigu/flume/files1/text3.txt} body: BB AD E5 86 99 E5 85 A5                         ........ }

同样在files2 中测试也是如此(这里就不演示了)
若要同时监控多种文件格式的可以将 .*.txt 改成 .*.*。注意,这种写法前面必须加一个. ,否则启动会报错,大概意思就是不能 以* 开头。
目前还不知道如何在同一个文件夹中监控指定的文件格式如:files1 既可以监控 .txt 也可以监控 .log 文件。但是可以把f2 也设置成 files1 的地址,用来监控 .log 文件,这是可以的。


使用 taildir-source 配置一个 hdfs 的方式

  1. 更改 flume-taildir-hdfs.conf 中 sink 配置,改成 hdfs-sink
# 配置 sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://hadoop102:9820/flume/taildir/%Y%m%d/%H
#上传文件的前缀
a1.sinks.k1.hdfs.filePrefix = upload-
#是否按照时间滚动文件夹
a1.sinks.k1.hdfs.round = true
#多少时间单位创建一个新的文件夹
a1.sinks.k1.hdfs.roundValue = 1
#重新定义时间单位
a1.sinks.k1.hdfs.roundUnit = hour
#是否使用本地时间戳
a1.sinks.k1.hdfs.useLocalTimeStamp = true
#积攒多少个Event才flush到HDFS一次
a1.sinks.k1.hdfs.batchSize = 100
#设置文件类型,可支持压缩
a1.sinks.k1.hdfs.fileType = DataStream
#多久生成一个新的文件
a1.sinks.k1.hdfs.rollInterval = 60
#设置每个文件的滚动大小大概是128M
a1.sinks.k1.hdfs.rollSize = 134217700
#文件的滚动与Event数量无关
a1.sinks.k1.hdfs.rollCount = 0

配置完成 之后重新启动
bin/flume-ng agent --conf conf/ --name a1 --conf-file jobs/flume-taildir-hdfs.conf -Dflume.root.logger=INFO,console
写入数据

files1]$ echo "aaa" >> text1.txt

访问 hdfs /flume/taildir/

hdfs

查看 upload-.1622420146229


image.png

异常:

  1. Agent configuration for 'a1' does not contain any valid channels. Marking it as invalid.
    该问题说明conf 配置有问题,解决思路参考
  2. org.apache.flume.FlumeException: Error creating positionFile parent directories
    该问题是a1.sources.r1.positionFile 无法创建目录,属于权限问题
  3. Incompatible source and channel settings defined. source's batch size is greater than the channels transaction capacity. Source: r1, batch size = 100, channel c1, transaction capacity = 10
    该问题是定义的源和通道设置不兼容,将 a1.channels.c1.transactionCapacity 把10改成100。

相关文章

  • 尚硅谷大数据技术之Flume

    第2章 快速入门 2.1 Flume安装地址 1) Flume官网地址 http://flume.apache....

  • Flume(二)快速入门

    Flume安装部署 安装地址 Flume官网[http://flume.apache.org/] 文档查看地址[h...

  • Flume快速入门

    一、Flume简介 1.1 Flume概述: Flume是开源日志系统。是一个分布式、可靠性和高可用的海量日志聚合...

  • 【Nginx+Flume实现日志打点分析】

    安装nginx(略) 修改nginx.conf然后 nginx -s reload Flume入门 Flume官网...

  • Flume

    总结 一、Flume的定义 1、flume的优势 2、flume的组成 3、flume的架构 二、 flume部署...

  • Flume入门

    flume是分布式的日志收集系统,它将各个服务器中的数据收集起来并送到指定的地方去,可以是文件、可以是hdfs。 ...

  • Flume 入门

    一:Flume是什么: 二:特点: 三:Flume版本介绍 四:Flume NG基本架构 五:Flume NG核心...

  • Flume入门

    一、安装 1、必备条件 因为要把日志上传到hdfs上,所以需要以下hadoop依赖包: commons-confi...

  • Flume 入门

    1Flume概述 1.1 定义 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚...

  • Flume 入门

    Flume 概述 Flume 官网 Flume 是一个分布式的,高可靠的,高可用的服务去高效的收集,聚合并移动大量...

网友评论

      本文标题:Flume(二)快速入门

      本文链接:https://www.haomeiwen.com/subject/zwqysltx.html