flume消费kafka数据到hdfs 报错 native-lzo library not available 解决方案

说明

针对课程环境搭建的机器
我用flume消费kafka数据到hdfs的时候,并没有成功,在hdfs上是一些大小为0的.lzo.tmp文件,我通过 tail -f /opt/module/flume/log.txt 观察消费flume(hadoop104)的日志后,发现 报的是这个 "native-lzo library not available"错误,也就是没有配置好lzo解压缩格式的问题。

下载的安装包一律放在 /opt/software/ 目录下

1.验证安装环境(以root账户执行):

su root

yum -y install  lzo-devel  zlib-devel  gcc autoconf automake libtool

2.安装LZO (以下以atguigu用户执行)

su atguigu


下载lzo-2.06安装包
脚本

cd /opt/software 
tar -zxvf lzo-2.06.tar.gz -C /opt/module/
cd /opt/module
xsync lzo-2.06 # 将安装包分发到其他机器上 xsync是脚本
接下来几行 每台机器都照做
cd /opt/module/lzo-2.06/
./configure -enable-shared -prefix=/opt/module/hadoop-2.7.2/lzo/
make && make test && make install

3.安装LZOP

lzop-1.03下载

cd /opt/software
tar -zxvf lzop-1.03.tar.gz -C /opt/module/
cd /opt/module
xsync lzop-1.03 # 将安装包分发到其他机器上 xsync是脚本
接下来几行 每台机器都照做
cd /opt/module/lzop-1.03
./configure -enable-shared -prefix=/opt/module/hadoop-2.7.2/lzop/
make && make install 

4.把lzop复制到/usr/bin/(所有机器都照做)

ln -s /opt/module/hadoop-2.7.2/lzop/bin/lzop /usr/bin/lzop

下载hadoop-lzo-0.4.20

5.将 hadoop-lzo-0.4.20放到 每个机器的 /opt/module/hadoop-2.7.2/share/hadoop/common/ 目录下

6.修改各个hadoop节点的hadoop的配置文件:

cd /opt/module/hadoop-2.7.2/etc/hadoop
vi hadoop-env.sh 
6.1 在 hadoop-env.sh 末尾添加以下配置

# Extra Java CLASSPATH elements.  Optional.
export HADOOP_CLASSPATH="<extra_entries>:$HADOOP_CLASSPATH:${HADOOP_HOME}/share/hadoop/common"
#export JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}:/opt/module/hadoop-2.7.2/lib/native:/opt/glibc-2.14/lib
export JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}:/opt/module/hadoop-2.7.2/lib/native

6.2 在 core-site.xml <-configuration-> 中添加以下配置
vi core-site.xml

<property>
        <name>io.compression.codecs</name>
        <value>
        org.apache.hadoop.io.compress.GzipCodec,
        org.apache.hadoop.io.compress.DefaultCodec,
        org.apache.hadoop.io.compress.BZip2Codec,
        org.apache.hadoop.io.compress.SnappyCodec,
        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>

6.3 在 mapred-site.xml <-configuration-> 中添加以下配置
vi mapred-site.xml

<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>

<property>
<name>mapred.map.output.compression.codec</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>

<property>
<name>mapreduce.map.env</name>
<value>LD_LIBRARY_PATH=/opt/module/hadoop-2.7.2/lzo/lib</value>
</property>

<property>
<name >mapreduce.reduce.env</name>
<value>LD_LIBRARY_PATH=/opt/module/hadoop-2.7.2/lzo/lib</value>
</property>

<property>
<name>mapred.child.env</name>
<value>LD_LIBRARY_PATH=/opt/module/hadoop-2.7.2/lzo/lib</value>
</property>

结尾

不带.lzo的是之前测试时,不以lzo压缩的结果
带.lzo的便是lzo压缩格式的结果

参阅文档

hadoop2.6 上hive运行 报“native-lzo library not available”异常处理

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值