当前位置:首页>正文

Hadoop中的datanode起不起来 hadoop slaves的datanode无法自动启动问题求教

2023-07-29 04:09:03 互联网 未知

Hadoop中的datanode起不起来

无论是启动,还是以后会经常用到的MapReduce中的每一个job,以及HDFS等相关信息,Hadoop均存有日志文件以供分析。
  例如:
  NameNode和DataNode的namespaceID不一致,这个错误是很多人在安装时会遇到的,日志信息为:e5a48de588b6e799bee5baa6e79fa5e981933133333739363  java.io.IOException: Incompatible namespaceIDs in /root/tmp/dfs/data:
  NameNode namespaceID = 1307672299 DataNode namespaceID = 38995959  若HDFS一直没有启动,读者可以查询日志,并通过日志进行分析,以上提示信息显示了NameNode和DataNode的namespaceID不一致。
  这个问题一般是由于两次或两次以上的格式化NameNode造成的,有两种方法可以解决,第一种方法是删除DataNode的所有资料;第二种方法是修改每个DataNode的namespaceID(位于/dfs/data/current/VERSION文件中)或修改NameNode的namespaceID(位于/dfs/name/current/VERSION文件中),使其一致。
  下面这两种方法在实际应用中也可能会用到。
  1) 重启坏掉的DataNode或JobTracker。当Hadoop集群的某单个节点出现问题时,一般不必重启整个系统,只须重启这个节点,它会自动连入整个集群。
  在坏死的节点上输入如下命令即可:
  bin/Hadoop-daemon.sh start DataNode
  bin/Hadoop-daemon.sh start jobtracker
  2) 动态加入DataNode或TaskTracker。这个命令允许用户动态将某个节点加入集群中。
  bin/Hadoop-daemon.sh --config ./conf start DataNode
  bin/Hadoop-daemon.sh --config ./conf start tasktracker

hadoop slaves的datanode无法自动启动问题求教

发现在日志中有此提示:Invalid directory in dfs.data.dir: Incorrect permission for /usr/local/hadoop/hdfs/data, expected: rwxr-xr-x, while actual: rwxr-xrwx 。原因是data文件夹权限问题,执行:chmod g-w /usr/local/hadoop/hdfs/data,修改文件夹权限后,再次启动Hadoop,问题解决。

小白求教,datanode无法正常启动是什么情况


这样的情况一般有2种可能:
1、datanode启动失败。可以像楼上说的倒datanode机器上执行jps命令查看datanode进程是否已经启动。如果jps不能正常显示,可以使用ps -ax | grep hadoop
2、datanode进程已经启动,仍在运行。出现这种情况是由于namenode和datanode中保存的namespaceID不同所引起的。知道的可能情况是启动过集群后,又重新执行了hadoop namenode -format导致的。解决方法是删掉datanode配置的dfs.data.dir目录,不过这样一来所有文件就都没有了。要慎重。

hadoop没有启动datanode


,就当是抛砖引玉了。
相信楼主知道,hadoop的文件系统叫做hdfs,就是hadoop分布式分布式文件系统的中文简写。这个系统是对google的gfs的开源实现。下面来回答问题。
首先是节点故障:
google在他们那篇gfs的论文中说,google在使用gfs曾说过,google在使用gfs时遇到过各种各样的问题,主要有:应用程序bug、操作系统的bug、人为失误,甚至还有硬盘、内存、连接器、网络以及电源失效。在一个大型的系统中,硬盘内存等等组件的老化,过度使用(因为数据读写非常频繁)等问题也是不容忽视的。hadoop的hdfs是需要考虑这些问题的。
然后是备份恢复的处理:
备份恢复因为我没有做过,不过我可以提供给楼主一个方法实验。
楼主可以先搭建一个只有3台datanode的小集群,设置数据备份为2。首先清空已有数据,然后在其中一台datanode上上传数据,默认时,hadoop是会在上传数据的datanode存入一个数据备份的。然后在down掉这台datanode,这样,你就少了一个数据备份,之后,你在另一台机器上读取数据,这时,你可以查看剩下的两台datanode中的dfs文件夹(也就是你存储hdfs数据的文件夹),打开其中block开头的文件看,这时应该就可以看到两台机器都有备份了。(推测)
根据gfs的论文,hadoop应该在数据被再次使用时进行检查,如果发现少了一个备份,会进行数据恢复工作。另一个时间是,机器空闲时会在后台监测数据备份情况。也就是说,数据恢复是自动,这也是hadoop的强大之处嘛。
至于namenode的恢复,没有处理过类似的问题,不过猜想和secondary namenode 有关,应该是将secondary namenode 存储的数据copy到namenode上,或是直接将secondary namenode 变成namenode 。
至于节点问题,down的节点经过恢复后,可以直接链接进入hadoop集群,而不用重新启动集群。命令是
bin/hadoop-daemon.sh start datanode

Hadoop datanode重新加载失败无法启动现象解决方法有哪些?

1,首先停掉namenode上相关的进程:切换到hadoop的/sbin目录下:

sh  stop-dfs.sh

sh stop-yarn.sh

2,切换到hadoop的相应/current目录下将current下的所有文件清除。

3,将datanode与namenode的/current 下VERSION等相应文件文件清除后,回到namenode上,执行hsfs namenode -format命令,接着切换到namenode的hadoop的/sbin目录下:

执行sh start-dfs.sh

sh start-yarn.sh

(旧版本的mapre  被新版本的yarn所替代,命令上多少有些不同)

既可以看到相应的节点成功加载。

相应的思想就是,当出错时,清除掉一切干扰思路的文件,然后整理思绪,重新开始,这样要远比在原地徘徊要好。

(由于我们在配置文件中指明的文件夹只有  hdfs tmp log,所以其余的文件也好文件夹也好都是动态执行脚本生成创建的,删除之后只要hadoop整个系统可以工作就会生成,即便错删,VM的 snapshot 也会拯救这个世界。)

如何解决Hadoop启动时Datanote启动失败

方法/步骤

启动hadoop,datanode没有启动

查找日志/var/log/hadoop-hdfs/hadoop-hdfs-datanode-hbase.log

发现namenode clusterID和datanode clusterID的值不一样
复制namenode clusterID的值
找到配置文件

在配置文件dfs.data.dir的路径/data/hdfs/data/下编辑current/VERSION
将clusterID的值替换到第三步中获得的值

重新启动各项服务jps datanode启动成功