场景:Centos 6.4 X64
hadoop 0.20.205
配置文件
hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
在创建dfs.data.dir所用的data目录时,直接用hadoop用户创建,
mkidr -p /usr/local/hdoop/hdfs/data
然后,格式化,启动时,namenode节点都可以启动
在Datanode上执行jps时,
[hadoop@DataNode1 local]# jps
6763 TaskTracker
6816 Jps
没有datanode的进程,不论怎么格式化,都无法使DataNode进程出现
后面,去查看DataNode1节点上的日志
2013-04-10 20:50:49,100 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid directory in dfs.data.dir: Incorrect permission for /usr/local/hadoop/hdfs/data, expected: rwxr-xr-x, while actual: rwxrwxr-x
2013-04-10 20:50:49,100 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: All directories in dfs.data.dir are invalid.
提示权限不符合要求
chmod 755 /usr/local/hadoop/hdfs/data
重新启动
[hadoop@DataNode1 data]$ jps
7398 TaskTracker
7291 DataNode
7707 Jps
DataNode出现
为了核实root用户和hadoop用户的创建文件夹的区别
[root@NameNode home]# mkdir data
[root@NameNode home]# ll
总用量 24
drwxr-xr-x. 2 root root 4096 4月 10 21:03 data
drwx------. 5 hadoop hadoop 4096 4月 10 20:45 hadoop
drwx------. 2 root root 16384 4月 8 09:28 lost+found
可以看到,root用户创建的文件夹权限符合要求
再用hadoop用户创建一个文件夹
[hadoop@NameNode ~]$ mkdir name
[hadoop@NameNode ~]$ ll
总用量 4
drwxrwxr-x. 2 hadoop hadoop 4096 4月 10 21:04 name
[hadoop@NameNode ~]$
权限变了,造成DataNode无法启动。
结语:开始为了不用修改文件夹的属主,就直接用hadoop用户创建文件夹,结果因权限的问题,造成DataNode无法启动。
收获:1、了解了不同用户组权限的不同,
2、遇到问题,一定要刨根问底,不能似是而非,否则,浪费了时间,自己却一知半解,这种状态是最坏的状态。
3、多查看日志,从日志中发现问题。