使用文件通道配置flume的多个源时发生通道锁定错误

f0brbegy  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(394)

为代理使用文件通道抛出锁定错误配置多个源。下面是我的配置文件。

a1.sources = r1 r2
a1.sinks = k1 k2
a1.channels = c1 c3

# sources

a1.sources.r1.type=netcat
a1.sources.r1.bind=localhost
a1.sources.r1.port=4444

a1.sources.r2.type=exec
a1.sources.r2.command=tail -f /opt/gen_logs/logs/access.log

# sinks

a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=/flume201
a1.sinks.k1.hdfs.filePrefix=netcat-
a1.sinks.k1.rollInterval=100
a1.sinks.k1.hdfs.fileType=DataStream
a1.sinks.k1.hdfs.callTimeout=100000

a1.sinks.k2.type=hdfs
a1.sinks.k2.hdfs.path=/flume202
a1.sinks.k2.hdfs.filePefix=execCommand-
a1.sinks.k2.rollInterval=100
a1.sinks.k2.hdfs.fileType=DataStream
a1.sinks.k2.hdfs.callTimeOut=100000

# channels

a1.channels.c1.type=file
a1.channels.c1.checkpointDir=/home/cloudera/alpha/001
a1.channels.c3.type=file
a1.channels.c3.checkpointDir=/home/cloudera/beta/001

# bind r1 c1 k1

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

a1.sources.r2.channels=c3
a1.sinks.k2.channel=c3

我在犯错误

Channel closed [channel=c3]. Due to java.io.IOException: Cannot lock /home/cloudera/.flume/file-channel/data. The directory is already locked. [channel=c3]

但是当我使用记忆通道的时候。工作正常。

7bsow1i6

7bsow1i61#

我的问题是你需要指定不同的 dataDirs 属性,因为它们都使用默认值

gkl3eglg

gkl3eglg2#

从文件中
默认情况下,文件通道使用上述用户主页中的检查点和数据目录的路径。因此,如果代理中有多个活动的文件通道示例,则只有一个示例能够锁定目录并导致另一个通道初始化失败。因此,有必要提供指向所有已配置通道的显式路径,最好是在不同的磁盘上。
通道的配置应为,


# channels

a1.channels.c1.type=file
a1.channels.c1.checkpointDir=/home/cloudera/alpha/001
a1.channels.c1.dataDirs=/mnt/alpha_data/

a1.channels.c3.type=file
a1.channels.c3.checkpointDir=/home/cloudera/beta/001
a1.channels.c3.dataDirs=/mnt/beta_data/

这个 dataDirs 属性默认为 /home/user/.flume/file-channel/data 路径。

相关问题