为了账号安全,请及时绑定邮箱和手机立即绑定

请问一下hadoop 为什么有一个datanode没有启动?

/ 猿问

请问一下hadoop 为什么有一个datanode没有启动?

hadoop 为什么有一个datanode没有启动


查看完整描述

3 回答

?
慕雪6442864

hdfs-site中配置的dfs.data.dir为/usr/local/hadoop/hdfs/data

bin/hadoop start-all.sh启动Hdoop,用jps命令查看守护进程时,没有DataNode。
访问http://localhost:50070,点击页面中的Namenode logs链接,在logs页面点击hadoop-hadoop-datanode-ubuntu.log 链接,

发现在日志中有此提示: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,问题解决。

查看完整回答
反对 回复 2019-09-14
?
MMTTMM

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



查看完整回答
反对 回复 2019-09-14
?
www说

启动hadoop,datanode没有启动

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

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

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

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

查看完整回答
反对 回复 2019-09-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信