就是报以下这个警告的,也不知道对运行程序究竟会产生什么样的影响,但看着就是不爽,还耽误了我几天时间,把它给解决了,这里记一下,方便以后查找。
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目录中,然后把该目录同步到其他相同的服务器,然后用软链接,注意在集群上批量执行该命令:
ln -s /home/work/local/glibc/libc.so /home/work/local/lib64/libc.so.6
以上就解决了Hadoop的版本库的问题,可是打开Spark,发现Spark还报版本库的错误,网上给的该解决方案并不能解决该问题,后来在spark-env.sh中增加了lib64
的地址,最终边为如下:
export LD_LIBRARY_PATH=$SPARK_SUBMIT_LIBRARY_PATH:$HADOOP_HOME/lib/native:/home/work/local/lib/:/home/work/local/lib64/
再SCP到所有集群上面,遂解决。