rbo*_*k78 5 hadoop-yarn apache-spark hadoop-native-library
我是 Spark 新手,在使用 Snappy 压缩保存文本文件时遇到了问题。我不断收到下面的错误消息。我遵循了互联网上的许多指示,但没有一个对我有用。最终,我找到了一个解决方法,但我希望有人就正确的解决方案提供建议。
java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z
Run Code Online (Sandbox Code Playgroud)
我只使用 Spark-shell 来测试我的代码,并使用以下命令启动它:
spark-shell --master yarn \
--num-executors 1 \
--executor-memory 512M
Run Code Online (Sandbox Code Playgroud)
在.bashrc中添加以下环境变量
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
Run Code Online (Sandbox Code Playgroud)
在spark-env.sh中添加以下环境变量
export JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:/opt/hadoop/lib/native
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/hadoop/lib/native
export SPARK_YARN_USER_ENV="JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH,LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
Run Code Online (Sandbox Code Playgroud)
检查 Snappy 库是否存在
hadoop checknative
...
Native library checking:
hadoop: true /opt/hadoop/lib/native/libhadoop.so.1.0.0
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
snappy: true /lib/x86_64-linux-gnu/libsnappy.so.1
lz4: true revision:10301
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
...
Run Code Online (Sandbox Code Playgroud)
我还尝试在没有 Yarn 的情况下运行 Spark-shell,并且我可以将我的 RDD 成功保存为由 Snappy 压缩的文本文件。因此,该问题似乎与 Yarn 有关。我在 Spark-defaults.conf 中添加了以下属性,最终帮助解决了使用 Yarn 时出现的问题。但我不确定为什么实际上需要这样做,以及这是否是配置 Spark on Yarn 以使用 hadoop 本机库的正确方法。
spark.driver.extraLibraryPath /opt/hadoop/lib/native
spark.executor.extraLibraryPath /opt/hadoop/lib/native
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1932 次 |
| 最近记录: |