Apache spark 在CDH 5上找不到Spark的com.hadoop.compression.lzo.LzoCodec类?
我已经研究这个问题两天了,仍然没有找到解决方法 问题:我们通过最新CDH 5安装的Spark总是抱怨LzoCodec类丢失,即使在我通过cloudera manager中的包裹安装HADOOP_LZO之后也是如此我们正在CDH 5.0.0-1.cdh5.0.0上运行MR1。p0.47 尝试修复: '中的配置也已添加,但问题仍然存在 谷歌的大部分帖子都给出了类似的建议。我还怀疑火花正试图与未激活的纱线相撞;但是我在CMF或其他关于这个主题的帖子中找不到配置Apache spark 在CDH 5上找不到Spark的com.hadoop.compression.lzo.LzoCodec类?,apache-spark,cloudera-cdh,hadoop-lzo,Apache Spark,Cloudera Cdh,Hadoop Lzo,我已经研究这个问题两天了,仍然没有找到解决方法 问题:我们通过最新CDH 5安装的Spark总是抱怨LzoCodec类丢失,即使在我通过cloudera manager中的包裹安装HADOOP_LZO之后也是如此我们正在CDH 5.0.0-1.cdh5.0.0上运行MR1。p0.47 尝试修复: '中的配置也已添加,但问题仍然存在 谷歌的大部分帖子都给出了类似的建议。我还怀疑火花正试图与未激活的纱线相撞;但是我在CMF或其他关于这个主题的帖子中找不到配置 如果你知道如何处理,请给我一些帮助。解决
如果你知道如何处理,请给我一些帮助。解决了!!希望该解决方案能帮助遇到同样问题的其他人
在本教程中,我将向您展示如何在Hadoop、Pig上启用LZO压缩 还有火花。我想您已经安装了一个基本的hadoop 成功(如果未成功,请参阅其他教程了解更多信息) 您访问此页面可能是因为遇到了相同的问题 正如我遇到的,通常从Java异常开始:
Caused by: java.lang.ClassNotFoundException: Class com.hadoop.compression.lzo.LzoCodec not found.
因为Apache和Cloudera发行版是最流行的两种
显示了两种上下文的分布和配置。简而言之,三
最终成功的主要步骤如下:
- 安装
库本机lzo
- 安装hadoop lzo库
- 正确设置环境变量(右侧部分 (消耗我大部分的时间)
本机lzo
库
问题是
安装hadoop lzo
时需要。您可以手动安装它们
或者通过简化包管理器(注意:确保
群集已安装本机lzo
):
- 在Mac OS上:
sudo port install lzop lzo2
- 在右侧或中央:
sudo yum install lzo liblzo-devel
- 在Debian或ubuntu上:
sudo apt-get install liblzo2-dev
hadoop lzo
作为包裹发送给客户,您可以
可以使用Cloudera Manager方便地下载和分发它。通过
默认情况下,hadoop lzo
将安装在
/opt/cloudera/parcels/HADOOP\u LZO
这里我们展示了集群上的配置:
- Cloudera CDH 5
- HADOOP_LZO版本0.4.15
- 在
中设置压缩编解码器库: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>
<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\u类路径
:HADOOP env.sh
HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/cloudera/parcels/CDH/lib/hadoop/lib/*
SPARK_LIBRARY_PATH=$SPARK_LIBRARY_PATH:/path/to/your/hadoop-lzo/libs/native SPARK_CLASSPATH=$SPARK_CLASSPATH:/path/to/your/hadoop-lzo/java/libs
- 对于MapReduce组件,将相应键的配置更改为 以上:
- 编辑hadoop env.sh的MapReduce客户端环境代码段以附加
变量HADOOP\u类路径
$ 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是通过tar还是Cloudera Manager安装的,您都需要
仅将两个路径值附加到spark env.sh
:
HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/cloudera/parcels/CDH/lib/hadoop/lib/*
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性能的比较。A.
也有人问了相关问题,但没有解决办法
关于这一点,直到本教程结束。你可能也对怎么做感兴趣
到。对于Hortonworks 2.3.0和Ambari For Spark,要使用LZO,您需要添加自定义Spark默认值属性。我补充说:
- spark.driver.extraClassPath
/usr/hdp/current/hadoop-client/lib/hadoop-lzo-0.6.0.{{hdp_full_version}}.jar
- spark.driver.extraLibraryPath
/usr/hdp/current/hadoop-client/lib/native:/usr/hdp/current/hadoop-client/lib/native/Linux-amd64
这是基于页面(它有一些打字错误)。我刚刚在Cloudera 5安装中遇到了相同的错误。在我的案例中,是GPLEXTRAS包裹,已安装、分发但未激活 在Cloudera管理器->主机->包裹上 我按下过滤器清除所有地方,然后我能够按下之前已经分发的GPLEXTRAS Parces上的激活按钮
这就足够解决我的问题了。在此处包含这些信息是很有价值的,这样,如果您的博客关闭或更改地址,这些信息将持续存在。@ChrisF很抱歉,在我的博客迁移到github后,该链接现在已更新。@caesar0301-如果您在此处总结答案,也会很有帮助。如果通过命令行运行spark,则“Twitter版本”为404,相同的属性(正如dajobe所指出的那样)也可以以下列格式作为参数传递给spark cli:spark submit--conf spark.driver.extraClassPath=:--conf spark.driver.extraclibrarypath=/usr/hdp/current/hadoop client/lib/native:/usr/hdp/current/hadoop client/lib/native/Linux-amd64