Hadoop常见错误解决

1. 通过命令和查看日志文件查看hadoop启动和运行情况

在NameNode端,可以通过

tail -100 /var/log/hadoop/hadoop/hadoop-hadoop-namenode-hadoop-namenode.log

查看NameNode的运行日志

 

在DataNode端也可以通过

cat /var/log/hadoop/hadoop/hadoop-hadoop-datanode-hadoop-datanode1.log

查看DataNode的运行日志。

 

通过jps命令分别在datanode和namenode端运行,查看已启动的服务。

 

2. NameNode不能启动:

Cannot lock storage ……tmp/dfs/name. The directory is already locked.

也许是因为执行hadoop的账号对这个文件夹tmp/dfs/name没有权限。可以使用如下命令解决

chown -R hadoop:hadoop /usr/hadoop

 

3. DataNode不能启动

在客户端日志显示 namenode namespaceID = 1713611278; datanode namespaceID = 596511341

这个问题基本上是因为在namenode端多次运行hadoop namenode –format 导致的。在hadoop的core-site.xml文件中(不同的hadoop版本名字会有不同)找到<name>hadoop.tmp.dir</name>,清空对应的文件夹。举例:

[hadoop@hadoop-datanode1 hadoop]$ cat core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<!--global properties -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
</property>

清空

[hadoop@hadoop-datanode1 tmp]$ rm -rf /usr/hadoop/tmp/*

然后重新启动hadoop,在datanode端用jps看是否datanode已经启动了。

 

4. 运行wordcount程序时fs找不到文件夹:

Input path does not exist: hdfs://localhost:9000/user/input

在集群环境中,处理的文件都是在hdfs中,所以必须把要处理的文件复制到hadoop 某个文件夹中。下面举例,在fs中新建文件夹,把提前做好的wordcount文件复制带hdfs中,最后运行程序。

[hadoop@hadoop-namenode ~]$ hadoop fs -mkdir /tmp/wordcount/input
[hadoop@hadoop-namenode ~]$ hadoop fs -put /home/hadoop/wordcount/input /tmp/wordcount/input
[hadoop@hadoop-namenode ~]$ hadoop fs -ls /tmp/wordcount/input

 hadoop jar /home/hadoop/hadoop-examples-1.1.2.jar wordcount /tmp/wordcount/input/input /tmp/wordcount/output

 

查看结果

hadoop fs -cat /tmp/wordcount/output/part-r-00000

标签