一脸懵逼学习Hdfs---动态增加节点和副本数量管理(Hdfs动态扩容)

1:按照上篇博客写的,将各个进程都启动起来:

集群规划:     主机名          IP                  安装的软件                        运行的进程    master     192.168.3.129      jdk、hadoop                        NameNode、DFSZKFailoverController(zkfc)    slaver1    192.168.3.130      jdk、hadoop                        NameNode、DFSZKFailoverController(zkfc)    slaver2    192.168.3.131      jdk、hadoop                        ResourceManager    slaver3    192.168.3.132      jdk、hadoop                        ResourceManager    slaver4    192.168.3.133      jdk、hadoop、zookeeper         DataNode、NodeManager、JournalNode、QuorumPeerMain    slaver5    192.168.3.134      jdk、hadoop、zookeeper         DataNode、NodeManager、JournalNode、QuorumPeerMain    slaver6    192.168.3.135      jdk、hadoop、zookeeper         DataNode、NodeManager、JournalNode、QuorumPeerMain

 2:开始测试动态增加节点和副本数量管理:

  首先将master节点的datanode挂掉(即少了一个保存文件的副本):

注意:hadoop datanode节点超时时间设置:

datanode进程死亡或者网络故障造成datanode无法与namenode通信, namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长。 HDFS默认的超时时长为10分钟+30秒。如果定义超时时间为timeout,则超时时长的计算公式为:     timeout  = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval。     而默认的heartbeat.recheck.interval 大小为5分钟,dfs.heartbeat.interval默认为3秒。     需要注意的是hdfs-site.xml 配置文件中的:       heartbeat.recheck.interval的单位为毫秒,       dfs.heartbeat.interval的单位为秒。 所以,举个例子,如果heartbeat.recheck.interval设置为5000(毫秒),dfs.heartbeat.interval设置为3(秒,默认),则总的超时时间为40秒。     hdfs-site.xml中的参数设置格式: <property> <name>heartbeat.recheck.interval</name> <value>2000</value> </property> <property> <name>dfs.heartbeat.interval</name> <value>1</value> </property>

 注意:HDFS冗余数据块的自动删除:

在日常维护hadoop集群的过程中发现这样一种情况:     某个节点由于网络故障或者DataNode进程死亡,被NameNode判定为死亡,     HDFS马上自动开始数据块的容错拷贝;     当该节点重新添加到集群中时,由于该节点上的数据其实并没有损坏,     所以造成了HDFS上某些block的备份数超过了设定的备份数。     通过观察发现,这些多余的数据块经过很长的一段时间才会被完全删除掉,     那么这个时间取决于什么呢?     该时间的长短跟数据块报告的间隔时间有关。     Datanode会定期将当前该结点上所有的BLOCK信息报告给Namenode,     参数dfs.blockreport.intervalMsec就是控制这个报告间隔的参数。     hdfs-site.xml文件中有一个参数: <property> <name>dfs.blockreport.intervalMsec</name> <value>10000</value> <description>Determines block reporting interval in milliseconds.</description> </property>     其中3600000为默认设置,3600000毫秒,即1个小时,也就是说,块报告的时间间隔为1个小时,所以经过了很长时间这些多余的块才被删除掉。通过实际测试发现,当把该参数调整的稍小一点的时候(60秒),多余的数据块确实很快就被删除了。

 3:停止一下集群,配置一下hadoop datanode节点超时时间设置和HDFS冗余数据块的自动删除,停止集群如下所示:

依次查看一下各个节点的进程启动情况:

然后将slaver5和slaver6的yarn进程停掉:

然后依次关掉zookeeper的进程:如master,slaver1和slaver2都一样,这里不再重复了:

[root@master bin]# ./zkServer.sh stop

现在修改配置一下:hadoop datanode节点超时时间设置和HDFS冗余数据块的自动删除的配置文件hdfs-site.xml:

hadoop datanode节点超时时间设置
hdfs-site.xml中的参数设置格式:

<property>
<name>heartbeat.recheck.interval</name>
<value>2000</value>
</property>
<property>
<name>dfs.heartbeat.interval</name>
<value>1</value>
</property>
HDFS冗余数据块的自动删除
hdfs-site.xml文件中有一个参数:

<property>
<name>dfs.blockreport.intervalMsec</name>
<value>10000</value>
<description>Determines block reporting interval in milliseconds.</description>
</property>

操作如下所示:

[root@slaver3 hadoop]# vim hdfs-site.xml

 将修改的hdfs-site.xml复制到其他6个节点上面,如下所示:

4:将集群启动起来:

   4.1:启动zookeeper集群(分别在master、slaver1、slaver2上启动zookeeper):

  4.2:启动journalnode(分别在master、slaver1、slaver2上执行)

4.3:千万不要执行格式化HDFS,千万不要执行格式化ZKFC(在slaver3上执行即可),不然还是报很多错误;

  4.4:然后在slaver3启动start-dfs.sh

现在可以去其他节点看看,全部进程都可以正常启动,如果你想启动yarn进程,下面启动yarn进程,slaver5节点和slaver6节点操作一样,这里只贴slaver5即可:

如果你耐心十足,搞了一天,想吐,这里还是再贴一下jps查看的进程情况吧:

5:然后将master的namenode干掉,看看Live Nodes是否变化:

经过14s后,活着的node数目就由3变成了2:

 如何新加一个datanode,再搞一个虚拟机(我再新建一个虚拟机,不知道我的电脑撑住撑不住,试试吧先),然后将hadoop的安装包复制过去,然后将datanode启动起来:好吧,最后没有弄出来,以后有机会好好补一下这点,动态增加节点和副本数量管理;

补充要点: 注意:hdfs动态扩容要点,将手动启动节点: hadoop-daemon.sh start namenode 启动namenode hadoop-daemon.sh start datanode 启动datanode.   即可以动态加入,只不过没写到slavers里面,下次重启以后,手动加入即可完成动态扩容了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

MySQL从库选项log-slave-updates未启用引发的异常

    最近核查一个基于从库复制某张特定的表到另外一个主库调整,未配置log-slave-updates导致表无法正常同步。我们的配置文件中使用了replica...

421
来自专栏恰同学骚年

NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

  通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构。...

762
来自专栏about云

zookeeper思考与总结1:在其它组件的作用及hdfs对比

一、zookeeper在其它组件的作用 1.为什么会产生zookeeper zookeeper是模仿的谷歌的Chubby来解决分布式一致性的问题。2006年的时...

3365
来自专栏Hadoop实操

如何使用Oozie API接口向非Kerberos环境的CDH集群提交Shell工作流

前面Fayson介绍了《如何使用Oozie API接口向非Kerberos环境的CDH集群提交Spark作业》和《如何使用Oozie API接口向非Kerber...

2947
来自专栏Java Edge

分布式服务框架 Zookeeper安装和配置详解单机模式集群模式数据模型如何使用常用接口列表org.apache.zookeeper. ZooKeeper 方法列表基本操作ZooKeeper 典型的应

2804
来自专栏IT可乐

SpringMVC详解(四)------SSM三大框架整合之登录功能实现

  为了后面讲解的需要,我们取数据都会从数据库中获取,所以这里先讲讲三大框架(Spring、SpringMVC、MyBatis)的整合。前面讲解 MyBatis...

5998
来自专栏大数据和云计算技术

Hadoop数据收集系统—Flume

syslogTcp(5440) | agentSink("localhost",35856)

1172
来自专栏Linux运维学习之路

Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用

K8s基础原理 k8s中文社区:https://www.kubernetes.org.cn/ 简介 Kubernetes与较早的集群管理系统Mesos和YARN...

8285
来自专栏数据派THU

独家 | 一文读懂Hadoop(二)HDFS(上)

随着全球经济的不断发展,大数据时代早已悄悄到来,而Hadoop又是大数据环境的基础,想入门大数据行业首先需要了解Hadoop的知识。2017年年初apache发...

3108
来自专栏zhisheng

Kafka 安装及快速入门

介绍 官网:http://kafka.apache.org/ Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Ap...

2808

扫码关注云+社区