Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 将Spark on Thread配置为使用hadoop本机库 总结_Apache Spark_Yarn_Hadoop Native Library - Fatal编程技术网

Apache spark 将Spark on Thread配置为使用hadoop本机库 总结

Apache spark 将Spark on Thread配置为使用hadoop本机库 总结,apache-spark,yarn,hadoop-native-library,Apache Spark,Yarn,Hadoop Native Library,我是Spark的新手,在使用Snappy压缩保存文本文件时遇到了一个问题。我一直收到下面的错误消息。我从网上得到了很多指导,但没有一条对我有用。最终,我找到了一个解决办法,但我希望有人能为正确的解决方案提供建议 java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z 技术堆栈 Ubuntu 20.04.1 64位 Hadoop 3.3.0 火花3.0.0 Op

我是Spark的新手,在使用Snappy压缩保存文本文件时遇到了一个问题。我一直收到下面的错误消息。我从网上得到了很多指导,但没有一条对我有用。最终,我找到了一个解决办法,但我希望有人能为正确的解决方案提供建议

java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z
技术堆栈
  • Ubuntu 20.04.1 64位
  • Hadoop 3.3.0
  • 火花3.0.0
  • OpenJDK 1.8.0_272
我只使用spark shell测试我的代码,并使用以下方法启动它:

spark-shell --master yarn \
  --num-executors 1 \
  --executor-memory 512M
我试图解决的问题是什么 在.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
在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"
存在选中的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
...
变通办法 我还尝试在不使用纱线的情况下运行spark shell,并成功地将我的RDD保存为Snappy压缩的文本文件。因此,这个问题似乎与纱线有关。我在spark-defaults.conf中添加了以下属性,这最终帮助解决了使用纱线时的问题。但我不确定为什么需要这样做,也不确定这是否是配置Spark on Thread以使用hadoop本机库的正确方法

spark.driver.extraLibraryPath /opt/hadoop/lib/native
spark.executor.extraLibraryPath /opt/hadoop/lib/native