1. 首页 > 科技

Hadoop hdfs两个namenode节点经常挂掉,日志如下,求解 hadoop没有启动datanode

Hadoop hdfs两个namenode节点经常挂掉,日志如下,求解hadoop没有启动datanode

namenode挂掉了怎么办,这个时候hdfs是否有相应的容错方案

一、HDFS的主要设计理念

1、存储超大文件

这里的“超大文件”是指几百MB、GB甚至TB级别的文件。

2、最高效的访问模式是 一次写入、多次读取(流式数据访问)

HDFS存储的数据集作为hadoop的分析对象。在数据集生成后,长时间在此数据集上进行各种分析。每次分析都将设计该数据集的大部分数据甚至全部数据,因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要。

3、运行在普通廉价的服务器上

Hadoop挂掉一些节点如何启动

启动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启动成功

ambari 节点挂掉怎么看日志

最后在节点上先使用 ambari-agent restart命令执行,然后操作后台界面重启服务即可。

上线节点

上线节点基本与下线相同

1) slaves文件里每行添加一个上线服务器名,同时保证dfs.exclude文件为空。

2) ./hdfs dfsadmin -refreshNodes

3) 在要上线的节点上启动datanode:

./hadoop-daemon.sh start datanode

4) 如需要启动nodemanager,则执行:

./yarn-daemon.sh start nodemanager

5) 修改slaves,添加上线节点的hosts

hadoop中节点(DataNode和NameNode)故障的处理

这部分资料我也懂得不多,我说一些我知道供楼主参考,就当是抛砖引玉了。

相信楼主知道,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