hadoop 用户创建data目录时 DataNode无法启动

在Centos 6.4环境下,使用hadoop 0.20.205时,通过hadoop用户创建data目录会导致DataNode无法启动。日志显示权限错误,预期为rwxr-xr-x,实际为rwxrwxr-x。解决方案是将目录权限更改为755。使用root用户创建目录则不会出现此问题,提醒我们在Hadoop配置中要注意文件权限和用户组设置,确保服务正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景: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、多查看日志,从日志中发现问题。




Hadoop伪分布式安装中,`jps`命令用于查看Java进程的运行状态。如果在执行`jps`后,发现`DataNode`未启动,可能有以下几个原因: 1. **配置文件问题**: - 检查`core-site.xml`、`hdfs-site.xml`等配置文件是否正确配置。特别是`hdfs-site.xml`中的`dfs.replication`参数,确保其值小于或等于1,因为在伪分布式模式下,通常只有一个DataNode。 2. **目录权限问题**: - 确保Hadoop的临目录和数据目录(如`dfs.data.dir`)的权限设置正确。Hadoop进程需要有读写权限。 3. **格式化NameNode**: - 如果之前没有格式化NameNode,或者在修改配置文件后没有重新格式化NameNode,可能会导致DataNode无法启动。需要重新格式化NameNode,但要注意这会删除所有已有的HDFS数据。 ```bash hdfs namenode -format ``` 4. **日志检查**: - 查看Hadoop的日志文件(通常在`$HADOOP_HOME/logs`目录下),查找DataNode启动失败的错误信息。日志文件中通常会包含详细的错误原因。 5. **端口冲突**: - 确保Hadoop使用的端口没有被其他进程占用。可以通过`netstat`命令查看端口占用情况。 6. **防火墙设置**: - 检查防火墙设置,确保Hadoop所需的端口(如50070、50075等)没有被防火墙阻挡。 7. **主机名解析**: - 确保`/etc/hosts`文件中的主机名和IP映射正确,并且Hadoop配置文件中的主机名与实际主机名一致。 通过以上步骤逐一排查,可以找到DataNode启动的原因并解决。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值