gpt4 book ai didi

apache-spark - 在 CDH 5 上找不到用于 Spark 的类 com.hadoop.compression.lzo.LzoCodec?

转载 作者:行者123 更新时间:2023-12-04 01:36:25 24 4
gpt4 key购买 nike

我已经在这个问题上工作了两天,仍然没有找到方法。

问题 :我们通过最新的 CDH 5 安装的 Spark 总是提示 LzoCodec 类丢失,即使在我通过 cloudera manager 中的 Parcels 安装 HADOOP_LZO 之后也是如此。 我们在 CDH 5.0.0-1.cdh5.0.0.p0.47 上运行 MR1 .

尝试修复 :
official CDH documentation about 'Using the LZO Parcel中的配置' 也添加了但问题仍然存在。

大多数谷歌搜索的帖子都给出了与上述类似的建议。我还怀疑 Spark 试图与未在那里激活的 YARN 运行;但我在 CMF 或其他有关此主题的帖子中找不到配置。

如果您知道如何处理,请给我一些帮助。

最佳答案

解决了!!愿此解决方案能帮助遇到同样问题的其他人。

在本教程中,我将向您展示如何在 Hadoop、Pig 上启用 LZO 压缩
和 Spark 。我想你已经设置了一个基本的 hadoop 安装
成功(如果没有,请引用 Hadoop installation 的其他教程)。

您到达此页面可能是因为您遇到了同样的问题
正如我所遇到的,通常从 Java 异常开始:

Caused by: java.lang.ClassNotFoundException: Class com.hadoop.compression.lzo.LzoCodec not found.

由于 Apache 和 Cloudera 发行版是最受欢迎的两个发行版
分布,显示了两种上下文的配置。简而言之,三
将采取主要步骤以取得最终成功:
  • 安装 native-lzo图书馆
  • 安装 hadoop-lzo图书馆
  • 正确设置环境变量(正确的部分
    消耗我最多的时间)

  • 第一步:安装 native-lzo图书馆

    native-lzo library
    安装 hadoop-lzo 所需.您可以手动安装它们
    或者通过促进包管理器( 注意: 确保所有节点在
    集群有 native-lzo安装。):
  • 在 Mac 操作系统上:
    sudo port install lzop lzo2
  • 在 RH 或 CentOS 上:
    sudo yum install lzo liblzo-devel
  • 在 Debian 或 ubuntu 上:
    sudo apt-get install liblzo2-dev

  • Step2:安装 hadoop-lzo图书馆

    对于 Apache Hadoop

    由于 LZO 是 GPL 的,所以它没有随官方 Hadoop 发行版一起提供
    需要 Apache 软件许可证。我推荐 Twitter version这是一个 fork 的版本
    hadoop-gpl-compression
    显着的改进。如果你运行的是官方的 Hadoop,一些
    提供安装结构 the documentation .

    对于 Cloudera 分发

    在 Cloudera 的 CDH 中, hadoop-lzo作为包裹运送给客户,而您
    可以使用 Cloudera Manager 方便地下载和分发它。经过
    默认, hadoop-lzo将安装在 /opt/cloudera/parcels/HADOOP_LZO .

    在这里,我们展示了集群上的配置:
  • Cloudera CDH 5
  • HADOOP_LZO 版本 0.4.15

  • 第三步:设置环境变量

    对于 Apache Hadoop/Pig

    基本配置适用于 Apache Hadoop,而 Pig 则依赖其
    功能。
  • 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,
    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>
  • mapred-site.xml 中设置 MapReduce 压缩配置:
    <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>mapred.child.env</name>
    <value>JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:/path/to/your/hadoop-lzo/libs/native</value>
    </property>
  • 追加 HADOOP_CLASSPATHhadoop-env.sh :
    HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/cloudera/parcels/CDH/lib/hadoop/lib/*

  • 对于 Cloudera 分发

    您可以使用 Cloudera Manager 通过 GUI 启用相同的先前设置
    界面:
  • 对于 MapReduce 组件,将对应键的配置更改为
    以上:
    > **io.compression.codecs**
    > **mapred.compress.map.output**
    > **mapred.map.output.compression.codec**
    > **MapReduce Client safety valve for mapred-site.xml**
  • 编辑 hadoop-env.sh 的 MapReduce 客户端环境片段 附加HADOOP_CLASSPATH多变的。

  • 最后,按照正确的顺序重启依赖服务并部署
    所有节点之间的配置。就是这样!!。然后你可以测试
    命令的功能并获得类似于以下的成功消息:
       $ hadoop jar /path/to/hadoop-lzo.jar com.hadoop.compression.lzo.LzoIndexer lzo_logs
    $ 14/05/04 01:13:13 INFO lzo.GPLNativeCodeLoader: Loaded native gpl library
    $ 14/05/04 01:13:13 INFO lzo.LzoCodec: Successfully loaded & initialized native-lzo library [hadoop-lzo rev 49753b4b5a029410c3bd91278c360c2241328387]
    $ 14/05/04 01:13:14 INFO lzo.LzoIndexer: [INDEX] LZO Indexing file datasets/lzo_logs size 0.00 GB...
    $ 14/05/04 01:13:14 INFO Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
    $ 14/05/04 01:13:14 INFO lzo.LzoIndexer: Completed LZO Indexing in 0.39 seconds (0.02 MB/s).  Index size is 0.01 KB.

    对于 Spark

    这消耗了我很多时间,因为以前的信息较少
    职位。但根据以往的经验,该解决方案是直截了当的。

    无论 Spark 是通过 tar 安装还是 Cloudera Manager 安装,您都需要
    只是将两个路径值附加到 spark-env.sh :
       SPARK_LIBRARY_PATH=$SPARK_LIBRARY_PATH:/path/to/your/hadoop-lzo/libs/native
    SPARK_CLASSPATH=$SPARK_CLASSPATH:/path/to/your/hadoop-lzo/java/libs

    相关帖子和问题

    LZO 性能的比较在 another place 中给出。 .一种
    相关问题也在 StackOverflow上提问但没有解决方案
    直到本教程结束。您可能还对如何
    use the LZO Parcel from Cloudera .

    关于apache-spark - 在 CDH 5 上找不到用于 Spark 的类 com.hadoop.compression.lzo.LzoCodec?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23441142/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com