解决Hadoop和Spark本地版本库不统一的问题

就是报以下这个警告的,也不知道对运行程序究竟会产生什么样的影响,但看着就是不爽,还耽误了我几天时间,把它给解决了,这里记一下,方便以后查找。

1
unable to load native-hadoop library for your platform... using builtin-java classes where applicable

先是运行Hadoop的时候报该错误,当时发现是由于Hadoop所需要的版本库和系统本地的glibc的版本库不一致导致的,但是有一个问题是系统本地库的地址是在根目录的lib和lib64下面,由于对服务器没有root权限,是无法修改该库的版本的,因此到这里,网上说的大部分解决方案都不行了。

既然不能修改本地库,那就考虑修改环境变量中的PATH,PATH路径要保证读的库地址要在本地库地址路径的前面,因为PATH只要找到结果就会返回,那么我们就把路径/home/work/lacol/加进去并放在前面。

我们需要自己编译一个合适的版本库,例如编译到/home/work/local/glibc目录中,然后把该目录同步到其他相同的服务器,然后用软链接,注意在集群上批量执行该命令:

1
ln -s /home/work/local/glibc/libc.so /home/work/local/lib64/libc.so.6

以上就解决了Hadoop的版本库的问题,可是打开Spark,发现Spark还报版本库的错误,网上给的该解决方案并不能解决该问题,后来在spark-env.sh中增加了lib64的地址,最终边为如下:

1
export LD_LIBRARY_PATH=$SPARK_SUBMIT_LIBRARY_PATH:$HADOOP_HOME/lib/native:/home/work/local/lib/:/home/work/local/lib64/

再SCP到所有集群上面,遂解决。


【版权声明】
本文首发于戚名钰的博客http://qimingyu.github.io/ ),欢迎转载,但是必须保留本文的署名戚名钰(包含链接)。如您有任何商业合作或者授权方面的协商,请给我留言:mingyuqi.java@qq.com
欢迎关注我的微信公众号:科技锐新

本文永久链接:http://qimingyu.github.io/2016/07/23/解决Hadoop和Spark本地版本库不统一的问题/

坚持原创技术分享,您的支持将鼓励我继续创作!

热评文章