天天看点

CDH启用kerberos后,Flume采集数据到HDFS

CDH启用kerberos后,Flume采集数据到HDFS

之前写过一篇 Flume跨服务器采集文件数据到HDFS完整案例 ,大家可以先看看

后来CDH集群启用了kerberos,服务器B的Flume配置文件需要做出一些修改,在服务器B的Flume安装目录的conf目录下修改 bserver.conf:

1 #服务器B
2 b1.sources = r2
3 b1.sinks = k2
4 b1.channels = c2
5 # 配置监控文件
6 b1.sources.r2.type = avro
7 # 此处为服务器A的host
8 b1.sources.r2.bind=192.168.xxx.xx
9 b1.sources.r2.port = 44444
10 #b1.sources.r2.interceptors = i1
11 #b1.sources.r2.interceptors.i1.type = timestamp
12 # 配置sink
13 b1.sinks.k2.type =hdfs
14 # 启用kerberos后要加两行配置
15 b1.sinks.k2.hdfs.kerberosKeytab=/home/kerberos/hdfs.keytab
16 b1.sinks.k2.hdfs.kerberosPrincipal=hdfs/[email protected]
17 b1.sinks.k2.channel = c1
18 # 保存到HDFS上的路径
19 b1.sinks.k2.hdfs.path = hdfs://192.168.xxx.xx/user/hive/warehouse/ods.db/%{type}/dt=%Y%m%d/
20 # 生成的文件前缀
21 #b1.sinks.k2.hdfs.filePrefix = events-
22 b1.sinks.k2.hdfs.filePrefix = %{type}
23 # 是否按照时间滚动文件夹
24 b1.sinks.k2.hdfs.round = true
25 # 多少时间单位创建一个文件夹
26 b1.sinks.k2.hdfs.roundValue = 10
27 # 重新定义时间单位
28 b1.sinks.k2.hdfs.roundUnit = minute
29 # hdfs上每60秒生成一个文件
30 b1.sinks.k2.hdfs.rollInterval = 60
31 # hdfs上的文件达到128M生成一个文件
32 b1.sinks.k2.hdfs.rollSize = 134217728
33 # 不按照条数生成文件
34 b1.sinks.k2.hdfs.rollCount = 0
35 # 积攒多少个Event才flush到HDFS一次
36 b1.sinks.k2.hdfs.batchSize = 100
37 # 是否使用本地时间戳
38 b1.sinks.k2.hdfs.useLocalTimeStamp = true
39 #生成的文件类型,默认是Sequencefile,可用DataStream,则为普通文本
40 b1.sinks.k2.hdfs.fileType = DataStream
41 # 配置channel
42 b1.channels.c2.type = memory
43 b1.channels.c2.capacity = 10000
44 b1.channels.c2.transactionCapacity = 100
45 # 将三者串联
46 b1.sources.r2.channels = c2
47 b1.sinks.k2.channel = c2

           

然后重新启动服务器B的Flume即可。

继续阅读