当前位置:首页>开发>正文

hadoop没有启动datanode hadoop 启动datanode为什么namenode发现不了

2023-04-28 14:16:09 互联网 未知 开发

 hadoop没有启动datanode hadoop 启动datanode为什么namenode发现不了

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为什么namenode发现不了

1、读写权限出错
首先jps检查过后只有datanode没有启动,然后去Hadoop安装目录下的logs文件中找最近一次datanode的日志
(网上有很多种故障,建议最好自己先看看日志自己的故障是不是和别人是一样的,然后在进行排错):
org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid directory in dfs.data.dir:
Incorrect permission for /home/hadoop/HadoopPseudoDistributTest/tmpdir/hdfs/data, expected: rwxr-xr-x, while actual: rwxrwxrwx
我的是读写权限出错,用下面的命令修改
chmod 755 /home/hadoop/HadoopPseudoDistributTest/tmpdir/hdfs/data
附上文件修改权限讲解:

最新文章