Hadoop如何搭建计算和存储节点分离

在业内存在着一种看起来比较离谱的搭建方式,叫计算节点与存储节点分离,说它比较离谱,是因为hadoop架构本身不直接支持将这两者分开,hadoop本身的一大优势就是依靠机架感知对计算数据所涉猎的数据块,优先拉对任务容器来说最近的本地副本,而这种分开搭建的方式抛弃了这种优势,但是也有好处,就是可以省钱,通过这种方式,把高性能机器放在计算上,其他大量的廉价机器在保证磁盘读写IO性能上不出大问题就可以放在集群中存储数据。

通常这种样式的搭建方式,一般都会放最少20台高性能机器,其他都是廉价的存储节点,下面就来看一下怎么搭建这个玩意,具体搭建之前我要再说明一点hadoop本身不直接支持把计算和存储节点分离,注意我用的字眼是直接,意思就是说你没有办法通过配置来直接指定哪台节点被明确的区分为存储节点或计算节点,但是你能够通过一些hadoop提供的配置从运行方面达到这一点需求。

言归正传,本篇只介绍计算和存储节点分离搭建要注意的配置,至于其他的就不再展示了,这里给大家提供我之前发的大家文档
Hadoop3.x==》https://blog.csdn.net/dudadudadd/article/details/139547748
Hadoop2.x==》https://blog.csdn.net/dudadudadd/article/details/109858613

我在本地准备了三个节点的Hadoop测试集群,他们负责的角色如下

域名    负责角色
hdp4	NameNode、DataNode、NodeManager、JournalNode、DFSZKFailoverController、Zookeeper
hdp5	NameNode(备用)、DataNode、ResourceManager、NodeManager、JournalNode、DFSZKFailoverController、Zookeeper
hdp6	DataNode、ResourceManager、NodeManager、JournalNode、Zookeeper

总的来说,hdp4和hdp5负责namenode主副节点,hdp5和hdp6配合负责主副yarn节点、hdp4和hdp5以及hdp6本身都再负责一个datanode和nodemanager的角色。现在我要做的是只让hdp4和hdp5上的datanode起效,也就是做存储节点,而hdp6只起效nodemanager作为计算节点。

首先第一步,进入hadoop的配置文件目录,我用的3.x的版本,既/opt/hadoop-3.1.3/etc/hadoop下,打开yarn-site.xml,追加一个配置

<property>
	<name>yarn.resourcemanager.nodes.exclude-path</name>
	<value>/opt/hadoop-3.1.3/etc/hadoop/exNodeManagers</value>
</property>

然后再配置目录下创建exNodeManagers文件,在这个文件里,每一行为单位,写你希望那台节点在启动集群的时候被排除在yarn资源池里面。注意,这里补充一点,在搭建Hadoop集群的时候,2.x会指定slaves文件3.x会指定workers文件,这里说的,你希望哪台节点在启动时被排除,就是指的这个文件里你写的机器,和namenode和及resourcemanager节点没关系,因为现在是为了分离计算和存储节点,只对datanode和nodemanager做操作。

言归正传,因为计划只让hdp6做计算,因此其他两台机器我要写在这个文件中,不让他们启动nodemanager

hdp4
hdp5

第二步,打开hdfs-site.xml文件,添加如下配置并建立对应的文件,作用和上面同样,只不过这次限制的是那台节点不作为datanode

<property>
  <name>dfs.hosts.exclude</name>
  <value>/opt/hadoop-3.1.3/etc/hadoop/exDataNodes</value>   
</property>

exDataNodes文件:

hdp6

虽然我们就可以启动集群了,注意这个配置方法,本身是Hadoop提供给OP的技术储备,使得Hadoop可以灵活的预留节点或对节点做上下线的。而且一般情况下也不能直接重启集群,一来耗时,二来商用的时候你每关闭一小时集群,那可是少赚一小时的核时啊,不明白什么叫核时的去查一查这里不做科普。

言归正传,正式操作的时候,都是通过yarn rmadmin -refreshNodeshdfs dfsadmin -refreshNodes来刷新配置就行,刷配置的时候,会做数据块迁移,还要通过hdfs dfsadmin -report查看数据块迁移进度,比较麻烦。

当你一切准备就绪后,重启或刷新配置,登录yarn ui上,你就可以看到只剩下hdp6节点在资源队列里面
在这里插入图片描述
datanode去namenode的ui上看,但是看的时候注意,datanode不是如同nodemanager节点那样不启动对应服务也不展示,你在datanodes界面任然还能看到节点,只是会标记为退出存储队列,不过你在服务器上jsp进程,对应的节点还是会启动datanode进程。
在这里插入图片描述
最后说一句,nodemanager配置文件排除之后,对应节点上就不启动了,不过操作的时候,可能有时候网络之类的问题没有成功退出,在对应节点上直接kill就行,但是datanode还会启动,一般会写一个脚本,放在hadoop启动脚本的最后,用来远程调用对应节点处理出datanode的进程号kill掉就行,然后datanodes页面上前面的标识就会从绿色的退出存储队列状态,变成橙色标识的完全退出状态,既对应节点已完全消失。
在这里插入图片描述

在正式工作中,有的地方你打开datanode界面之后,你会发现是红色感叹号的down,这种情况就是负责管理集群的人偷懒,没操作配置文件,直接在对应节点上把服务给kill了,如下

在这里插入图片描述

这种操作一般来讲很危险,因为后期在使用上肯定会有重启之类的需求,这个时候对于数据块的存储来讲就不太友好了,因为你不能绝对保证重启之后数据块不会被namenode做集群的存储均衡,因此这种情况是不正常的,但是我确实见过这种离了大谱的操作环境,只能说日后不要爆雷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值