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

相关推荐
字节跳动数据平台40 分钟前
代码量减少 70%、GPU 利用率达 95%:火山引擎多模态数据湖如何释放模思智能的算法生产力
大数据
得物技术2 小时前
深入剖析Spark UI界面:参数与界面详解|得物技术
大数据·后端·spark
武子康3 小时前
大数据-238 离线数仓 - 广告业务 Hive分析实战:ADS 点击率、购买率与 Top100 排名避坑
大数据·后端·apache hive
武子康1 天前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive
大大大大晴天1 天前
Flink生产问题排障-Kryo serializer scala extensions are not available
大数据·flink
武子康3 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康4 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP5 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库5 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟5 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体