hadoop运行测试命令常见错误解决:
1 错误Name node is in safe mode的解决方法
将本地文件拷贝到hdfs上去,结果上错误:Name node is in safe mode
这是因为在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
可以通过以下命令来手动离开安全模式:
hadoop dfsadmin -safemode leave
用户可以通过dfsadmin -safemode value 来操作安全模式,参数value的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get - 返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束。
2 Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads()
1、streaming默认的情况下,mapper和reducer的返回值不是0,被认为异常任务,将被再次执行,默认尝试4次都不是0,整个job都将失败
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed wi
th code 1
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.j
ava:311)
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java
:545)
at org.apache.hadoop.streaming.PipeReducer.reduce(PipeReducer.java:130)
at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:519
)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:420)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInforma
tion.java:1093)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
解决办法:
执行hadoop命令时,加上参数:-D stream.non.zero.exit.is.failure=false
hadoop jar hadoop-streaming*.jar -D stream.non.zero.exit.is.failure=false
3、在执行streaming任务时,出现:Environment variable CLASSPATH not set!
解决方法:
在执行streaming时,加上选项:
-cmdenv CLASSPATH=$CLASSPATH
4 在调用HDFS的C接口时,出现:Call to JNI_CreateJavaVM failed with error: -1
原因:貌似是因为在编译的时候加上了libjvm,然后动态链接库那也加了。
解决方法,编译的时候去掉libjvmm的链接就可以了。
5.如果namenonde未启动,执行以下语句启动
[root@master2 ~]#hadoop-daemon.sh start namenode
6.如果某个节点datanode未启用
可以通过如下命令启动:
[root@slave1 ~]# hadoop-daemon.sh start datanode
本文作者为BUG之神,转载请注明。