Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 715|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-4-26 16:18:00 | 显示全部楼层 |阅读模式

    环境:Hadoop 2.6.0  + hive-0.14.0

    问题出现的背景:在hive中建表 (建表语句如下),并且表的字段中有Map,Set,Collection等集合类型。

    CREATE EXTERNAL TABLE agnes_app_hour(
      start_id string,
      current_time string,
      app_name string,
      app_version string,
      app_store string,
      send_time string,
      letv_uid string,
      app_run_id string,
      start_from string,
      props map<string,string>,
      ip string,
      server_time string)
    PARTITIONED BY (
      dt string,
      hour string,
      product string)
    ROW FORMAT DELIMITED
      COLLECTION ITEMS TERMINATED BY ','
      MAP KEYS TERMINATED BY ':'

    STORED AS RCFILE ;

    执行hive语句,执行 

    hive - e "select count(1) from temp_agnes_app_hour ; "

    提交map/reduce 到yarn时报出如下异常:

    Diagnostic Messages for this Task:
    Error: java.io.IOException: java.lang.reflect.InvocationTargetException
         at org.apache.hadoop.hive.io.HiveIOExceptionHandlerChain.handleRecordReaderCreationException(HiveIOExceptionHandlerChain.java:97)
         at org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil.handleRecordReaderCreationException(HiveIOExceptionHandlerUtil.java:57)
         at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.initNextRecordReader(HadoopShimsSecure.java:312)
         at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.<init>(HadoopShimsSecure.java:259)
         at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileInputFormatShim.getRecordReader(HadoopShimsSecure.java:386)
         at org.apache.hadoop.hive.ql.io.CombineHiveInputFormat.getRecordReader(CombineHiveInputFormat.java:652)
         at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.<init>(MapTask.java:169)
         at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:429)
         at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
         at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
         at java.security.AccessController.doPrivileged(Native Method)
         at javax.security.auth.Subject.doAs(Subject.java:415)
         at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
         at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
    Caused by: java.lang.reflect.InvocationTargetException
         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
         at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
         at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.initNextRecordReader(HadoopShimsSecure.java:298)
         ... 11 more
    Caused by: java.lang.RuntimeException: native-lzo library not available
         at com.hadoop.compression.lzo.LzoCodec.getDecompressorType(LzoCodec.java:187)
         at org.apache.hadoop.hive.ql.io.CodecPool.getDecompressor(CodecPool.java:122)
         at org.apache.hadoop.hive.ql.io.RCFile$Reader.init(RCFile.java:1518)
         at org.apache.hadoop.hive.ql.io.RCFile$Reader.<init>(RCFile.java:1363)
         at org.apache.hadoop.hive.ql.io.RCFile$Reader.<init>(RCFile.java:1343)
         at org.apache.hadoop.hive.ql.io.RCFileRecordReader.<init>(RCFileRecordReader.java:100)
         at org.apache.hadoop.hive.ql.io.RCFileInputFormat.getRecordReader(RCFileInputFormat.java:57)
         at org.apache.hadoop.hive.ql.io.CombineHiveRecordReader.<init>(CombineHiveRecordReader.java:65)

    针对"native-lzo library not available" 异常即lzo安装的异常。

    ===========================================

    ####安装lzo的过程

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

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

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

    wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz
    tar -zxvf lzo-2.06.tar.gz
    ./configure -enable-shared -prefix=/usr/local/hadoop/lzo/
    make && make test && make install

    3.安装LZOP

    wget http://www.lzop.org/download/lzop-1.03.tar.gz
    tar -zxvf lzop-1.03.tar.gz
    ./configure -enable-shared -prefix=/usr/local/hadoop/lzop
    make  && make install 

    4.把lzop复制到/usr/bin/
    ln -s /usr/local/hadoop/lzop/bin/lzop /usr/bin/lzop

    5.测试lzop
    lzop /home/hadoop/data/access_20131219.log

    会在生成一个lzo后缀的压缩文件: /home/hadoop/data/access_20131219.log.lzo

    2,3,4,5 可以使用如下脚本批量执行。

    EN0044b849

    ####安装Hadoop-LZO

    1. 下载Hadoop-LZO源码,

    hadoop-lzo:下载地址

    https://github.com/twitter/hadoop-lzo 

    https://github.com/twitter/hadoop-lzo


    git clone https://github.com/twitter/hadoop-lzo

    ps: 下载的时,有时候会连接超时,所以多试几次,就可以下载。

    2.编译hadoop-lzo的源码

    cd hadoop-lzo 

    mvn clean package

    cd ~/twiter-hadoop-lzo/hadoop-lzo/target/

    ls

    Image

    3.上传hadoop-lzo-0.4.20-SNAPSHOT.jar 到hadoop各个节点的安装目录的/usr/local/hadoop/share/hadoop/common/目录下

    hadoop-lzo.jar文件:

    EN0044b858 EN0044b868EN0044b877

    ls /usr/local/hadoop/share/hadoop/common/

    Image(1)

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

    vi 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}:/usr/local/hadoop/lib/native:/opt/glibc-2.14/lib
    export JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}:/usr/local/hadoop/lib/native

    Image(2)

    vi core-site.xml :

    添加如下配置:

    <property >

    <name >io.compression.codec.lzo.class </name>

    <value >com.hadoop.compression.lzo.LzoCodec </value>

    </property >

    <property >

    <name >io.compression.codecs </name>

    <value> org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.BZip2Codec </value>

    </property >

    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=/ usr/local/hadoop /lzo/lib</value>

    </property >

    <property >

    <name >mapreduce.reduce.env </name>

    <value >LD_LIBRARY_PATH=/ usr/local/hadoop /lzo/lib</value>

    </property >

    <property >

    <name >mapred.child.env </name>

    <value >LD_LIBRARY_PATH=/ usr/local/hadoop /lzo/lib</value>

    </property >

    5.分发 配置文件到所有的hadoop服务器节点

    #分发hadoop-lzo.jar
    ./upgrade.sh distribute temp/allnodes_hosts /letv/setupHadoop/hadoop-2.6.0/share/hadoop/common/hadoop-lzo-0.4.20-SNAPSHOT.jar /usr/local/hadoop/share/hadoop/common/
    #分发修改好的hadoop配置文件
    ./upgrade.sh distribute cluster_nodes hadoop-2.6.0/etc/hadoop/mapred-site.xml /usr/local/hadoop/etc/hadoop/
    ./upgrade.sh distribute cluster_nodes hadoop-2.6.0/etc/hadoop/core-site.xml /usr/local/hadoop/etc/hadoop/
    ./upgrade.sh distribute cluster_nodes hadoop-2.6.0/etc/hadoop/hadoop-env.sh /usr/local/hadoop/etc/hadoop/

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-16 09:23 , Processed in 0.066578 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表