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页面上前面的标识就会从退出,变成橙色标识的完全退出状态,既对应节点已完全消失。

相关推荐
IT小哥哥呀16 小时前
电池制造行业数字化实施
大数据·制造·智能制造·数字化·mom·电池·信息化
Xi xi xi16 小时前
苏州唯理科技近期也正式发布了国内首款神经腕带产品
大数据·人工智能·经验分享·科技
yumgpkpm17 小时前
华为鲲鹏 Aarch64 环境下多 Oracle 、mysql数据库汇聚到Cloudera CDP7.3操作指南
大数据·数据库·mysql·华为·oracle·kafka·cloudera
微风粼粼17 小时前
eclipse 导入javaweb项目,以及配置教程(傻瓜式教学)
java·ide·eclipse
UMI赋能企业17 小时前
制造业流程自动化提升生产力的全面分析
大数据·人工智能
TDengine (老段)18 小时前
TDengine 数学函数 FLOOR 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
派可数据BI可视化20 小时前
商业智能BI 浅谈数据孤岛和数据分析的发展
大数据·数据库·数据仓库·信息可视化·数据挖掘·数据分析
jiedaodezhuti20 小时前
Flink性能调优基石:资源配置与内存优化实践
大数据·flink
Lx3521 天前
Flink窗口机制详解:如何处理无界数据流
大数据
Lx3521 天前
深入理解Flink的流处理模型
大数据