HDFS学习05--HDFS中的高级指令+动态扩展/下线数据节点

除了基本的文件管理指令以外hdfs提供一些高级指令磁盘管理指令供我们更好管理hdfs系统具体来说如下指令

hdfs fsck <path> [-move] [-delete]
fsck 命令可以帮助检查数据完整fsck可以检查文件丢失情况同时可以删除移动那些损坏文件但是不具备修复功能起到检查作用

hdfs balancer [-threshold] 1
加入节点可能还没有任何数据此时可以通过balancer命令整个集群负载均衡起来-threshold参数表示设置每个节点负载差异率不超过1%

hdfs dfsadmin -refreshNode
(需要在NameNode里操作)指令用于数据节点变化的时候刷新数据节点

hdfs diskbalancer -plan <datanode_host> [-thresholdPercentage] 1
hdfs diskbalancer -execute <xxx.plan.json>
hdfs diskbalancer -query <datanode_host>
磁盘平衡可以一个数据节点数据可写磁盘平衡涉及指令分为三个
1. 平衡计划生成-plan后面指定host处理数据节点的标识-thresholdPercentage是说提供一个阈值只有多个磁盘存储量差异超过这个百分执行生成平衡计划默认10
2. 平衡计划执行生成平衡计划指令执行会在hdfs生成一个json文件路径把那个路径拷贝这里执行
3. 执行磁盘平衡需要涉及大量IO操作必然需要时间所以可以query命令查询某个目标节点平衡状态

hadoop distcp <hdfs://src:9820/file_path>* <hdfs://tgt:9820/tgt_path>
hadoop distcp -f <hdfs://src:9820/src_file_path> <hdfs://tgt:9820/tgt_path>
distcp支持不同的hadoop集群支持hdfs之间拷贝文件使用起来简单,也可以一个文件写好所有源文件路径信息然后通过-f参数这个拷贝信息文件传递distcp实现多对一拷贝路径文件信息如下
#在 HDFS 上创建一个文件,用来存储源路径
#例如在 hdfs://namenode81:9820/distcp/src 文件中书写
hdfs://namenode01:9820/src1
hdfs://namenode01:9820/src2
hdfs://namenode01:9820/src3


hdfs archive -archiveName <归档文件名.har> -p <待归档文件的父路径> [-r <多少个副本>] <src> <tgt_path> 
小文件归档,为了避免大量的小文件存在HDFS带来元数据堆叠占用内存问题hdfs提供archive工具许多小文件打包一个har文件归档之后不会自动删除小文件需要用户显式删除除此之外归档用户透明用户可以通过har://<har_file_path>url访问归档文件存储小文件har文件在hdfs呈现形式一个目录点开里面归档文件小文件元数据信息以及小文件数据信息


动态扩展数据节点

hadoop可以不关闭集群情况将新的数据节点动态扩展线这里hadoop103完成一个动态新增数据节点实验

首先实验检查已经存在hadoop集群配置

HostName

ip地址

hadoopNode

hadoop100

192.168.10.100

NameNode,DataNode

hadoop101

192.168.10.101

SecondaryNameNode,DataNode

hadoop102

192.168.10.102

DataNode

现在计划新增一台虚拟机节点hadoop103:

HostName

ip地址

hadoopNode

hadoop103

192.168.10.103

DataNode

准备工作

开始扩展之前确保hadoop103已经完成以下准备工作

1.设置好了静态ip地址192.168.10.103可以访问
2.设置了hostnamehosts主机映射包括集群里的其他节点
3.关闭防火墙并关闭了开机自启
4.提前装好了jdk1.8并且配置环境变量
5.提前上传hadoop3.4.1安装

如果网络配置成功如下所示

配置其他节点主机映射

我们首先hadoop103ssh公钥发送其他数据节点保证ssh其他节点免密

ssh-copy-id hadoop100
ssh-copy-id hadoop101
ssh-copy-id hadoop102

然后103配置hosts映射发送其他节点这里100主节点已经没有

cd /etc
scp hosts hadoop100:$PWD
scp hosts hadoop101:$PWD
scp hosts hadoop102:$PWD

配置数据结点上的hadoop

首先hadoop安装解压/usr/local下面

tar -zxvf hadoop-3.4.1.tar.gz -C /usr/local/

然后配置环境变量如下所示

vim /etc/profile

插入以下环境变量信息已经有的忽略

#JAVA_HOME

export JAVA_HOME=/usr/local/jdk-1.8.0

PATH=$PATH:$JAVA_HOME/bin

#hadoop_home
export HADOOP_HOME=/usr/local/hadoop-3.4.1

export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin
主节点配置信息更新分发

因为新增一个数据节点所以需要修改主节点配置文件workers这里我们登录主节点虚拟机首先编辑workers

cd $HADOOP_HOME/etc/hadoop
vim workers

在文件末尾插入hadoop103,如图所示:

然后把这个文件分发给其他原来集群中的节点,这里先不发给103,因为hadoop103的配置还没完全配,所以等一下一起发给103:

scp workers hadoop101:$PWD
scp workers hadoop102:$PWD

为了能把配置信息发给103所以也要103免密,然后再把配置文件夹整体发给hadoop103:

ssh-copy-id hadoop103
cd ..
scp -r hadoop hadoop103:$PWD

所有配置信息已经完成

启动新节点

在hadoop103上使用以下命令启动新节点

hdfs --daemon start datanode

启动之后jps查看进程

此时hadoop103已经加入集群你可以网页查看集群信息可以看到此时live nodes已经变成4同时DataNode信息板块可以看到此时4Node信息后续可以通过节点负载平衡指令调控新节点负载

动态下线数据节点

hadoop也可以不关闭集群情况将新的数据节点动态扩展线这里还是以hadoop103完成一个动态下线数据节点实验

首先实验检查已经存在hadoop集群配置

HostName

ip地址

hadoopNode

hadoop100

192.168.10.100

NameNode,DataNode

hadoop101

192.168.10.101

SecondaryNameNode,DataNode

hadoop102

192.168.10.102

DataNode

hadoop103

192.168.10.103

DataNode

这里我们需要下线的节点hadoop103节点

HostName

ip地址

hadoopNode

hadoop103

192.168.10.103

DataNode

配置exclude路径

正常实际应用过程节点下线需要涉及core-site.xml文件dfs.hosts.exclude属性,它的值是一个文件,一般来说企业会在一开始配置整个集群时候就把这个属性设置好所以不要更换节点时候修改core-site.xml导致集群重启这里我们学习所以我们可以临时关闭集群配置这个属性

首先来到主节点hadoop100,关闭集群

stop-dfs.sh

然后配置主节点core-site.xml文件

cd $HADOOP_HOME/etc/hadoop
vim core-site.xml

插入以下信息

<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop-3.4.1/etc/hadoop/exclude</value>
<!-- exclude文件其实是一个黑名单文件,所有在这个文件里的host都被标记退役而无法参与集群工作 -->
</property>

保存退出然后你设置路径下touch一个新的exclude文件出来这里直接当前目录配置

touch exclude

此时这是一个空文件然后重启集群使得配置生效

stop-dfs.sh
start-dfs.sh
动态下线

首先下线主机Host输入刚刚exclude文件

echo "hadoop103" >> exclude
vim exclude

此时webhadoop103已经一个decommissioned的状态那么此时hadoop103就可以临时拿去维修,维修完之后再把它移出exclude文件就好了,如果后续不再参与集群那么也可以workers文件里面hadoop103删除同时也可以exclude文件hadoop103删除

注意decommisioned之前hdfs自己即将下线节点上的数据自动拷贝其他节点确保数据安全同时如果你想删除hadoop103或者恢复都可以不用重启hdfs集群体现hadoop超高可扩展

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值