设为首页 加入收藏

TOP

flume 写入hdfs 采用lzo 格式 教程
2018-11-28 17:55:46 】 浏览:19
Tags:flume 写入 hdfs 采用 lzo 格式 教程

问题环境: hadoop2.7.3 和 flume 1.7.0

1.首先我的flume是单独部署在一台主机的。没该主机没有部署hadoop

所以sink写入hdfs的时候 直接报错。于是我上传了hadoop2.x.x 版本 配置了下hadoop_home path 环境变量。搞定。

2.在编写flume 写入hdfs的时候得知公司hdfs用的是lzo的文件格式储存

我直接用原生的flume 在编写属性

a1.sinks.s1.hdfs.fileType = CompressedStream
a1.sinks.s1.hdfs.codeC = lzo

的时候 启动flume报错

error during configuration
java.lang.IllegalArgumentException: Unsupported compression codec Lzop. Please choose from: [None, BZip2Codec, DefaultCodec, DeflateCodec, GzipCodec, Lz4Codec, SnappyCodec]
at org.apache.flume.sink.hdfs.HDFSEventSink.getCodec(HDFSEventSink.java:334)
at org.apache.flume.sink.hdfs.HDFSEventSink.configure(HDFSEventSink.java:237)
at org.apache.flume.conf.Configurables.configure(Configurables.java:41)
at org.apache.flume.node.AbstractConfigurationProvider.loadSinks(AbstractConfigurationProvider.java:411)
at org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:102)
at org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:141)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:748)


差了一番资料 总结出一个比较简单有效的方法,分两步

第一步:就是把用lzo格式保存文件的hadoop集群中 的core-site.xml 文件直接拿过来放到flume/conf下面

主要是用里面

<configuration>

<property>
<name>io.compression.codecs</name>
<value>
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>

</configuration>

这些属性告诉flume 解压的类在哪里

第二部 上你们集群搜索下

find / -namehadoop-lzo-*

/share/hadoop/common/hadoop-lzo-0.X.X-SNAPSHOT.jar

肯定有类似于这样的jar

sz hadoop-lzo-0.X.X-SNAPSHOT.jar 下来

rz 到你部署flume机器上的 hadoop 的/share/hadoop/common/ 下


搞定



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇flume 的source 、channel和sink .. 下一篇Flume的hdfsSink的roll参数不生效..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目