Hadoop之——执行start-all.sh时namenode没有启动

本文详细解析了Hadoop启动时遇到的Namenode未启动及no datanode to stop的问题,提供了两种解决方案,一种是重新配置tmp目录,另一种是调整clusterID一致性,确保集群稳定运行。

最近遇到了一个问题,执行start-all.sh的时候发现JPS一下namenode没有启动

        每次开机都得重新格式化一下namenode才可以
        其实问题就出在tmp文件,默认的tmp文件每次重新开机会被清空,与此同时namenode的格式化信息就会丢失
        于是我们得重新配置一个tmp文件目录
        首先在home目录下建立一个hadoop_tmp目录
                sudo mkdir ~/hadoop_tmp
        然后修改hadoop/conf目录里面的core-site.xml文件,加入以下节点:
                <property>
                        <name>hadoop.tmp.dir</name>
                <value>/home/chjzh/hadoop_tmp</value>
                        <description>A base for other temporary directories.</description>
                </property>
        注意:我的用户是chjzh所以目录是/home/chjzh/hadoop_tmp
                
        OK了,重新格式化Namenode
                hadoop namenode -format
        然后启动hadoop
                start-all.sh
        执行下JPS命令就可以看到NameNode了

原文:https://blog.youkuaiyun.com/l1028386804/article/details/46353211 
 

 解决"no datanode to stop"问题
当我停止Hadoop时发现如下信息:
    no datanode to stop
原因:每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,有两种解决方案:
第一种解决方案如下:
1)先删除"/usr/hadoop/tmp"
rm -rf /usr/hadoop/tmp
2)创建"/usr/hadoop/tmp"文件夹
mkdir /usr/hadoop/tmp
3)删除"/tmp"下以"hadoop"开头文件
rm -rf /tmp/hadoop*
4)重新格式化hadoop 
hadoop namenode -format
5)启动hadoop
start-all.sh
使用第一种方案,有种不好处就是原来集群上的重要数据全没有了。假如说Hadoop集群已经运行了一段时间。
建议采用第二种。
第二种方案如下:
1)修改每个Slave的clusterID使其与Master的clusterID一致。
   或者
2)修改Master的clusterID使其与Slave的clusterID一致。
该"namespaceID"位于"/home/zkpk/hadoopdata/dfs/name/current/VERSION"文件中,前面蓝色的可能根据实际情况变化,但后面红色一般是不变的。
例如:查看"Master"下的"VERSION"文件
 
本人建议采用第二种,这样方便快捷,而且还能防止误删。
总结一下,其实找不到datanode的原因可能往往是因为自己搭建集群的时候格式化多次了,当然不排除机子突然抽风了,本来集群搭建第一次格式化时namenode生成一个clusterID,并且复制给子节点了,当再次不小心格式化的时候导致namenode和datanode的clusterID不一样了,所以才会出现start-all.sh的时候找不到datanode了。

执行 `hadoop-daemon.sh start namenode` 和 `hadoop-daemon.sh start datanode` 命令显示 `hadoop-daemon.sh:未找到命令`,可能有以下原因: ### 环境变量配置问题 若 Hadoop 的相关环境变量未正确配置,系统就无法找到 `hadoop-daemon.sh` 脚本。Hadoop 的脚本通常存于 `$HADOOP_HOME/sbin` 目录,需要把该目录添加到系统的 `PATH` 环境变量里。例如,在 Linux 系统的 `~/.bashrc` 或 `~/.bash_profile` 文件中添加如下内容: ```bash export HADOOP_HOME=/path/to/hadoop export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin ``` 添加完成后,需执行 `source ~/.bashrc` 或 `source ~/.bash_profile` 使配置生效。 ### 脚本文件缺失或损坏 `hadoop-daemon.sh` 脚本文件可能不存在或者已损坏。要确保 Hadoop 已正确安装,且 `$HADOOP_HOME/sbin` 目录下存在 `hadoop-daemon.sh` 文件。可使用以下命令检查文件是否存在: ```bash ls $HADOOP_HOME/sbin/hadoop-daemon.sh ``` 若文件不存在,可能需要重新安装 Hadoop。 ### 当前工作目录问题 若在执行命令未指定脚本的完整路径,系统会在当前工作目录中查找 `hadoop-daemon.sh` 文件。若当前工作目录并非 `$HADOOP_HOME/sbin`,就会出现找不到命令的错误。可使用以下两种方式解决: - 切换到脚本所在目录再执行命令: ```bash cd $HADOOP_HOME/sbin ./hadoop-daemon.sh start namenode ``` - 指定脚本的完整路径执行命令: ```bash $HADOOP_HOME/sbin/hadoop-daemon.sh start namenode ``` ### 文件权限问题 若 `hadoop-daemon.sh` 文件没有执行权限,也可能导致系统无法执行该脚本。可使用以下命令为脚本添加执行权限: ```bash chmod +x $HADOOP_HOME/sbin/hadoop-daemon.sh ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值