hadoop停止及启动问题和hadoop更新

本文详细介绍了在遇到Hadoop停止和启动问题时的解决方案,包括调整namespaceID以匹配不同节点,设置HADOOP_PID_DIR避免进程文件被删除,以及处理Hadoop更新时的文件格式升级问题。在更新过程中,提到了core-site.xml和hdfs-site.xml的配置,并提供了错误日志分析和解决步骤。

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

hadoop停止问题


修改MasternamespaceID使其与SlavenamespaceID一致。

Master“namespaceID”位于“/usr/hadoop/tmp/dfs/name/current/VERSION”文件里面,Slave“namespaceID”位于“/usr/hadoop/tmp/dfs/data/current/VERSION”文件里面。

 

原因2问题的原因是hadoopstop的时候依据的是datanode上的mapreddfs进程号。而默认的进程号保存在/tmp下,linux 默认会每隔一段时间(一般是一个月或者7天左右)去删除这个目录下的文件。因此删掉hadoop-hadoop-jobtracker.pidhadoop-hadoop-namenode.pid两个文件后,namenode自然就找不到datanode上的这两个进程了。

在配置文件hadoop_env.sh中配置export HADOOP_PID_DIR可以解决这个问题。

在配置文件中,HADOOP_PID_DIR的默认路径是“/var/hadoop/pids”,我们手动在“/var”目录下创建一个“hadoop”文件夹,若已存在就不用创建,记得用chown将权限分配给hadoop用户。然后在出错的Slave上杀死DatanodeTasktracker的进程(kill -9 进程号),再重新start-all.shstop-all.sh时发现没有“no datanode to stop”出现,说明问题已经解决。

 

hadoop更新

1、core-site.xml 不变

 

2、hdfs.site.xml 可以不变也可以把dfs.name.dir和dfs.data.dir更新成这样:

Xml代码

<property>
<name>dfs.namenode.name.dir</name>
<value>/hadoop/data/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/hadoop/data/hadoop/hdfs/data</value>
</property>

 

3.core-site.xml

[root@hadoop-m conf]# 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>
<property>
<name>fs.default.name</name> #决定谁namenode的关键配置
<value>hdfs://192.168.10.33:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/data/hadoop/hadooptmp</value>
</property>

 

同步所有的配置文件到到所有的节点,然后启动hadoop

 

...bin/start-all.sh

 

你会发现脚本也更新了,比之前的分类更好,控制更加细致,很好!

 

不过,可惜的是namenode和secondnamenode不能启动,分析下日志会发现需要升级文件(原来文件格式也有一定的更改,优化了吗,呵呵):

Xml代码
  1. ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.   
  2. java.io.IOException:   
  3. File system image contains an old layout version -18.   
  4. An upgrade to version -24 is required.   
  5. Please restart NameNode with -upgrade option.  

4、OK 行了,执行名称节点的文件系统更新命令

 

.../bin/hadoop namenode -upgrade

 

error错误解决:

[root@hadoop-m logs]# cat hadoop-root-namenode-hadoop-m.log

2013-10-22 15:21:34,957 INFO org.apache.hadoop.hdfs.server.common.Storage: Storage directory /hadoop/data/hadoop/hadooptmp/dfs/name does not exist
2013-10-22 15:21:34,959 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /hadoop/data/hadoop/hadooptmp/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.

解决:把hdfs下的name  拷贝到hadooptmp/dfs/下

[root@hadoop-m hadoop]# cp -r /hadoop/data/hadoop/hdfs/name/ /hadoop/data/hadoop/hadooptmp/dfs/

 

 

在重启,成功

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值