我先回忆下当初的场景
当时在输入hadoop checknative这个命令 发现全是false当时慌了 ,因为native里面也有东西
其实hadoop也给你解决方法了就在提示里“It's highly recommended that you fix the library with 'execstack -c我就用了强烈建议的方法 execstack -c 来链接库 可能小伙伴们用execstack -c 会显示不可用 不要急先下载这个
yum install /usr/bin/execstack
下载完 在修复
execstack -c /home/runcheng/modules/hadoop-2.7.2/lib/native/libhadoop.so
此时我这个又发现不对劲了
hadoop告诉我libhadoop.so不是一个ELF格式的文件
首先出现这个问题是由于目录/home/runcheng/modules/hadoop-2.7.2/lib/native/libhadoop.so下的libhadoop.so文件格式错误,这个文件本身的格式应该是ELF,如果从windows将配置文件上传到native目录下,所有文件格式都被转换成unix。当时我是在win解压完上传到linux里的
为了避免类似事件发生,建议以后所有压缩包不要在windows系统下解压再sftp上传,会造成不必要的困扰。
紧接着我找到了hadoop2.7.2的压缩包,小伙伴们跟我出现一样的问题,我会把压缩包放到评论区的
接下来把上传的压缩包解压 我建议解压到不起眼的文件夹,进入/hadoop-2.7.2/lib/native/
在用
mv * /home/runcheng/modules/hadoop-2.7.2/lib/native/
就是覆盖之前的文件夹的文件 我的hadoop是一个master 两个server 机子 有几个就替换几个 我替换了三个
覆盖完再重复上面的操作
execstack -c /home/runcheng/modules/hadoop-2.7.2/lib/native/libhadoop.so
发现可以成功修复了
做完后 又让我头疼了 又提示我
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfor
提示的是没有成功加载native-hadoop library
然后我参考了大佬博客
[已解决]hadoop报错: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfor_神是念着倒-CSDN博客
在hadoop下/etc/hadoop-2.7.2/hadoop-env.sh文件下第52行后面添加下方配置
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"
三个都要配置 别忘了!!!!!!!!!
然后 reboot 重启 hadoop checknative
奇迹出现
成功 可以玩snappy了 好耶!



