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

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

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

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

bash 复制代码
域名    负责角色
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,追加一个配置

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

bash 复制代码
hdp4
hdp5

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

xml 复制代码
<property>
  <name>dfs.hosts.exclude</name>
  <value>/opt/hadoop-3.1.3/etc/hadoop/exDataNodes</value>   
</property>

exDataNodes文件:

bash 复制代码
hdp6

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

言归正传,正式操作的时候,都是通过yarn rmadmin -refreshNodeshdfs dfsadmin -refreshNodes来刷新配置就行。

当你一切准备就绪后,重启或刷新配置,登录yarn ui上,你就可以看到只剩下hdp6节点在资源队列里面

datanode去namenode的ui上看,但是看的时候注意,datanode不想resourcemanager节点那样不展示,你在datanodes界面任然还能看到节点,只是会标记为退出存储队列,不过你在服务器上jsp进程,对应的节点还是会启动datanode进程。

最后说一句,nodemanager配置文件排除之后,对应节点上就不启动了,不过如果你是通过刷新配置来操作的话,可能有的时候网络之类的问题没有成功退出,直接kill就行,但是datanode还会启动,一般会写一个脚本,放在hadoop启动脚本的最后,用来远程调用对应节点处理出datanode的进程号kill掉就行,然后再datanodes页面上前面的标识就会从退出,变成橙色标识的完全退出状态,既对应节点已完全消失。

相关推荐
Evenurs21 分钟前
【git】取消一个已提交的文件或路径的追踪
大数据·git·elasticsearch
farewell-Calm1 小时前
分布式搜索引擎之elasticsearch单机部署与测试
大数据·分布式·elasticsearch
isNotNullX1 小时前
一文解读数据仓库的分层逻辑和原理
大数据·数据仓库·spark
青云交9 小时前
大数据新视界 -- Impala 性能优化:量子计算启发下的数据加密与性能平衡(下)(30 / 30)
大数据·hive·量子计算·数据加密·impala·量子密钥分发·性能平衡
Elastic 中国社区官方博客10 小时前
使用 Elastic 收集 Windows 遥测数据:ETW Filebeat 输入简介
大数据·windows·elasticsearch·搜索引擎·全文检索·可用性测试
Java 第一深情12 小时前
详细教程-Linux上安装单机版的Hadoop
linux·运维·hadoop
鸡c13 小时前
IM项目-----ElasticSearch
大数据·elasticsearch·搜索引擎
Java 第一深情13 小时前
Flink数据源的读写介入体系
大数据·flink
cclovezbf13 小时前
hive的cascade使用解释
数据仓库·hive·hadoop
天冬忘忧14 小时前
Kafka 消费者全面解析:原理、消费者 API 与Offset 位移
大数据·kafka