Hadoop集群中某主机(Worker)不作为HDFS的存储(Datanode)

(一)前提环境

我们都知道🔗Hadoop由3部分组成(除开公共部分):

  1. HDFS™: 分布式文件系统,可提供应用程序数据的高吞吐量访问.
  2. YARN: 作业调度和群集资源管理的框架.
  3. MapReduce: 基于YARN的大型数据集的并行处理系统.

其中MapReduce部分,可以用更加高效的🔗Spark来进行计算。
同时如果只有Spark应用,则YARN也可以不启用,而是采用Spark独立集群来调度任务。
当然如果考虑到多种类型的应用,还是需要Yarn集群的。

(二)问题

测试的时候,我们配置了Hadoop的Workers(或Slaves)。
为了把Yarn用起来,将几台几乎没有存储空间的机器加入了集群,本想仅用于运算。

$ac@vm00 ~> cat $HADOOP_CONF_DIR/workers
vm00
vm01
vm02
vm10
vm11
ac1	#存储空间很小
ac2	#存储空间很小
ad1	#存储空间很小
ad2	#存储空间很小

但只在这里配置,会导致HDFS存储部分也会用到这几台机器。
所以不能仅配置workers。

(三)解决

这时候需要配置哪些主机可用于HDFS。

$ac@vm00 ~> vim $HADOOP_CONF_DIR/hdfs-site.xml

添加dfs.hostsdfs.hosts.exclude属性。
指定运行HDFS的主机列表文件名,和不用于HDFS的主机列表文件名。

......
    <property>
        <!--运行的主机,配置文件名-->
        <name>dfs.hosts</name>
        <value>/home/ac/hadoop_conf/dfs_include</value>
    </property>
    <property>
        <!--动态下线的主机,配置文件名-->
        <name>dfs.hosts.exclude</name>
        <value>/home/ac/hadoop_conf/dfs_exclude</value>
    </property>
......

然后在dfs.hosts.exclude文件中指定不用与HDFS的主机。

$ac@vm00 ~> cat /home/ac/hadoop_conf/dfs_exclude
ac1
ac2
ad1
ad2

官方写的是:
dfs.hosts / dfs.hosts.exclude
List of permitted/excluded DataNodes.
If necessary, use these files to control the list of allowable datanodes.

经过配置后,HDFS中就没有这几台机器了。
如图:
在这里插入图片描述
与此同时,Yarn集群中这几台机器资源是可用的。
如图:
在这里插入图片描述

(四)动态上线/下线Datanodes

从注释中我们都看到了,这两个配置不仅指定能是否用于HDFS,还可以动态上线/下线存储节点。

4.1 下线一个datanode

编辑dfs.hosts.exclude指定的文件/home/ac/hadoop_conf/dfs_exclude,加入一行主机vm02的名字。
刷新节点:

$ac@vm00 ~> hdfs dfsadmin -refreshNodes
Refresh nodes successful

这样在不用关闭集群存储,就移除了一台datanode。
如图只剩4台了:
在这里插入图片描述
这时候我们可以对主机进行维护操作,
弄完重启什么的。
PS:咦,似乎忘记去vm02停止它的datanode了,参考下面启动的指令停止吧。

4.2 上线一个datanode

对主机的维护完成后。
编辑dfs.hosts.exclude指定的文件/home/ac/hadoop_conf/dfs_exclude,去掉主机vm02的名字。
再编辑dfs.hosts指定的文件/home/ac/hadoop_conf/dfs_include,加上一行主机vm02的名字。
刷新节点发现它又回来了,但是没有在线:
在这里插入图片描述
用ssh或者随便怎么登录到vm02主机。
注意是在vm02主机上,
执行执行启动本机的datanode:

$ac@vm02 ~> hdfs --daemon start datanode
$ac@vm02 ~>

注意不要再用hadoop-daemon.sh start datanode脚本,目前可用,但以后不再支持了:

$ac@vm02 sbin> hadoop-daemon.sh start datanode
WARNING: Use of this script to start HDFS daemons is deprecated.
WARNING: Attempting to execute replacement "hdfs --daemon start" instead.

再看就发现它回来了:)
在这里插入图片描述

(五)上线Yarn的nodemanager

如果vm02还是Yarn集群的一部分,那么经过维护操作,还是需要重新加入到集群的。

用ssh或者随便怎么登录到vm02主机。
注意是在vm02主机上,
执行执行启动本机的nodemanager:

$ac@vm02 ~> yarn --daemon start nodemanager
$ac@vm02 ~>

注意不要再用yarn-daemon.sh start nodemanager脚本,目前可用,但以后不再支持了:

$ac@vm02 ~> yarn-daemon.sh start nodemanager
WARNING: Use of this script to start YARN daemons is deprecated.
WARNING: Attempting to execute replacement "yarn --daemon start" instead.

呃……
没有改works,似乎不需要在master上执行???:

$ac@vm00 ~> yarn rmadmin -refreshNodes
2022-01-14 11:40:18,067 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at vm00/192.168.168.121:8033

Yarn这边和HDFS差不多,不重复截图了吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值