Hadoop运行过程中的常见错误及警告

一、启动HDFS服务是一直弹出如下提示信息:
lib/native/libhadoop.so which might have disabled stack guard
bhbase6: Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /usr/local/hadoop/lib/native/libhadoop.so which might have disabled stack guard. The VM will try to fix the stack guard now.
bhbase6: It's highly recommended that you fix the library with 'execstack -c ', or link it with '-z noexecstack'.
bhbase2: Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /usr/local/hadoop/lib/native/libhadoop.so which might have disabled stack guard. The VM will try to fix the stack guard now.
bhbase2: It's highly recommended that you fix the library with 'execstack -c ', or link it with '-z noexecstack'.
bhbase5: Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /usr/local/hadoop/lib/native/libhadoop.so which might have disabled stack guard. The VM will try to fix the stack guard now.
bhbase5: It's highly recommended that you fix the library with 'execstack -c ', or link it with '-z noexecstack'.
分析及解决:出现这个问题基本都是在64位操作系统上,这主要是因为Hadoop官网上下载的本地库文件都是基于32位系统编译的,如果在64位系统上运行会出现这个问题错误。解决的方法 有两种:
1、在64为操作系统上重写编译Hadoop文件
2、在etc/hadoop/目录中的 hadoop-env.sh和yarn-env.sh 这两个文件中添加如下两行代码:
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_PREFIX}/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"
二、配置完hadoopq,启动时出现如下警告:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
原来系统预装的glibc库是2.12版本,而hadoop期望是2.14版本,所以打印警告信息。
现在有两个办法,
1.重新编译glibc.2.14版本,安装后专门给hadoop使用,这个有点危险。
2.直接在log4j日志中去除告警信息。
在//usr/local/hadoop-2.5.2/etc/hadoop/log4j.properties文件中添加:
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
三、在Eclipse中开发相关项目时,在控制台经常看到如下信息:
log4j:WARN No appenders could be found for logger
log4j:WARN Please initialize the log4j system properly.
此处输出信息并不是错误信息而仅只是警告信息,因为log4j无法输出日志,log4j是一个日志输入软件包。可以将Struts或Hibernate等压缩包解压,内有log4j.properties文件,将它复制到项目src文件夹或将log4j.properties放到 /WEB-INF/classes文件夹中即可。
四、在windows上调试hadoop程序时:
Failed to locate the winutils binary in the hadoop binary path  
java.io.IOException: Could not locate executablenull\bin\winutils.exe in the Hadoop binaries.
分析及解决:未安装winutils.exe及配置本地环境变量
1.下载winutils的windows版本
  GitHub上,有人提供了winutils的windows的版本,项目地址是: https://github.com/srccodes/hadoop-common-2.2.0-bin ,直接下载此项目的zip包,下载后是文件名是hadoop-common-2.2.0-bin-master.zip,随便解压到一个目录
2.配置环境变量
  增加用户变量HADOOP_HOME,值是下载的zip包解压的目录,然后在系统变量path里增加$HADOOP_HOME\bin 即可。  
  再次运行程序,正常执行。
五、 安装hadoop启动之后总有警告:
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
首先找到对应自己hadoop版本的64位的lib包,可以自己手动去编译,但比较麻烦,也可以去网上找,好多都有已经编译好了的。
将准备好的64位的lib包解压到已经安装好的hadoop的lib目录下:
[hadoop@hadoopTest ~]$ tar -xvf hadoop-native-64-2.4.1.tar -C hadoop-2.4.1/lib
注意,是lib目录,而不是lib下的native目录下,这个问题整了我好久。
然后增加环境变量:
[hadoop@hadoopTest hadoop-2.4.1]$ vi ~/.bash_profile
增加下面的内容:
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
让环境变量生效:
[hadoop@hadoopTest hadoop-2.4.1]$ source ~/.bash_profile
启动hadoop,发现警告消除了,成功。
六、本地运行wordcount程序报错:
INFO Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
Exception in thread "main" java.lang.IllegalArgumentException: Pathname /f:/wc/output3 from hdfs://itcast:9000/f:/wc/output3 is not a valid DFS filename.
暂为解决,求大神解救!

猜你喜欢

转载自blog.csdn.net/m0_37570217/article/details/79900624
今日推荐