Hadoop HDFS Namenode启动不成功

在Pseudo-Distributed模式下启动HDFS时遇到Namenode未启动的问题,由于HDFS的格式化信息存于系统的tmp目录,每次开机被清空,导致需要重新格式化。解决方案是在core-site.xml中设置新的hadoop.tmp.dir,避免使用tmp目录,并重新格式化Namenode,然后启动HDFS,问题得到解决。
今天在Pseudodistributed mode下启动HDFS

但是在试验向HDFS里拷贝文件时,发现出错,说没有找到namenode,用jps查看,有datanode和secondary namenode都启动起来了,但NameNode没有启动起来,用netstat -anp | grep 8020查看HDFS的默认端口8020也没有被监听。

经网上查询,得知原因:引  http://blog.youkuaiyun.com/bychjzh/article/details/7830508

原来是因为HDFS把namenode的格式化信息存在了系统的tmp目录下,该目录每次开机会被清空,因此每次重新启动机器,都需要重新格式化HDFS。
解决方案是配置一个新的tmp目录给hadoop

在$HADOOP_INSTALL/etc/hadoop/core-site.xml中添加一个property
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/norris/hadoop_tmp</value>
    <description>A base for other temporary directories.</description>
</property>
这样就把hadoop的tmp目录设置到/home/norris/hadoop_tmp下面了,就不用担心下次启动会被清空了。

配置好后,先格式化namenode
%hadoop namenode -format
再启动HDFS
%start-dfs.sh
再向HDFS里放文件。
%hadoop fs -copyFromLocal /home/norris/data/hadoop/weatherdata.txt /usr/norris/weatherdata.txt
再关机,重启,再启动HDFS
%start-dfs.sh
再查看jps
有namenode被启动起来了。
查看文件:
%hadoop fs -ls /usr/norris/
<think>嗯,用户遇到了Hadoop HDFS的问题,具体是NameNode格式化成功启动时报错,提示“file:/// has no authority”。首先,我需要回忆一下Hadoop的配置和相关错误。根据用户提供的引用,特别是引用[1]和[3],问题可能与core-site.xml或hdfs-site.xml中的配置有关。 用户提到格式化成功启动失败,说明格式化步骤没问题,但启动时无法正确访问某些路径或URI。错误信息中的“file:///”可能意味着配置中使用了本地文件系统URI而HDFS的。比如,fs.defaultFS或者hadoop.tmp.dir的配置可能包含了错误的URI格式。 在引用[1]中,问题是由于core-site.xml中的hadoop.tmp.dir配置包含了“file:”前缀,导致URI解析错误。正确的做法应该是去掉这个前缀,只保留绝对路径。同样,引用[3]提到fs.default.name被设置为hdfs://...,但可能端口或主机名正确,或者配置项名称有误,应该是fs.defaultFS。 接下来需要检查的配置文件包括core-site.xml和hdfs-site.xml。重点查看fs.defaultFS的配置是否正确,是否使用了hdfs://协议,以及端口是否正确。同时,确认hadoop.tmp.dir的路径是否有效,且Hadoop进程有读写权限。 另外,权限问题也可能导致此类错误。需要确保Hadoop的数据存储目录(如/opt/hadoop/tmp)的权限正确,用户以正确的用户身份运行Hadoop,并且目录存在。还有SELinux或防火墙设置是否干扰了服务启动。 可能的解决步骤包括:修正core-site.xml中的配置项,检查并修改hdfs-site.xml中的NameNode和DataNode路径,确保路径权限正确,最后重新格式化和启动服务。同时,查看日志文件可以更准确地定位问题,比如查看NameNode的日志文件以获取详细的错误信息。 用户可能需要逐步排查这些配置项,确保所有URI格式正确,并且相关目录权限设置正确。如果配置修改后仍存在问题,可能需要进一步检查网络设置或主机名解析是否正确,因为HDFS依赖于正确的主机名配置来通信。</think>### Hadoop NameNode启动失败解决方案 根据报错信息"file:/// has no authority"和引用内容分析,该问题通常与HDFS配置文件中的URI格式和权限设置有关。以下是逐步排查和解决方案: **1. 检查core-site.xml配置** ```xml <!-- 错误配置示例 --> <property> <name>hadoop.tmp.dir</name> <value>file:/opt/hadoop/tmp</value> </property> <!-- 正确配置应移除file://前缀 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop/tmp</value> </property> ``` * 必须确保路径包含`file://`前缀,否则会导致URI解析错误[^1] **2. 验证fs.defaultFS配置** ```xml <property> <name>fs.defaultFS</name> <value>hdfs://your-hostname:8020</value> </property> ``` * 主机名必须与系统实际主机名一致 * 端口号需保持默认8020或与hdfs-site.xml配置一致[^3] **3. 检查hdfs-site.xml配置** ```xml <property> <name>dfs.namenode.name.dir</name> <value>/opt/hadoop/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/opt/hadoop/hdfs/datanode</value> </property> ``` * 路径需要预先创建并设置权限: ```bash sudo chown -R hadoop:hadoop /opt/hadoop sudo chmod 755 /opt/hadoop/tmp ``` **4. 完整处理流程** 1. 停止所有Hadoop服务 2. 删除临时目录: ```bash rm -rf /opt/hadoop/tmp/* rm -rf /opt/hadoop/hdfs/* ``` 3. 修改配置文件后同步到所有节点 4. 重新格式化: ```bash hdfs namenode -format ``` 5. 启动HDFS: ```bash start-dfs.sh ``` **5. 常见其他问题排查** - 检查JAVA_HOME环境变量是否配置正确 - 确认防火墙未屏蔽50070/8020等端口 - 查看完整日志定位错误: ```bash tail -n 100 $HADOOP_HOME/logs/hadoop-*-namenode-*.log ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值