文章目录
- Hadoop优化
- 1、HDFS多目录
- 1.1 NameNode的本地目录可以配置成多个,且每个目录存放内容相同,进而增加可靠性。
- 1.2 DataNode可以配置成多个目录,每个目录存储的数据不一样(数据不是副本)
- 1.3 集群数据均衡之磁盘间数据均衡
- 2、HDFS扩容与缩容
- 2.1 白名单
- 2.2 服役新服务器
- 2.3 服务器间数据均衡
- 2.4 黑名单退役服务器
Hadoop优化
1、HDFS多目录
1.1 NameNode的本地目录可以配置成多个,且每个目录存放内容相同,进而增加可靠性。
- hdfs-site.xml添加如下内容
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name1,file://${hadoop.tmp.dir}/dfs/name2</value>
</property>
- 关闭集群
- 删除每个节点的data和logs目录
- 格式化集群
hdfs namenode -format
- 重启hdfs
start-dfs.sh
- 检查hadoop安装目录下/opt/module/hadoop-3.1.3/data/dfs,会发现有name1和name2且两者内容相同。
1.2 DataNode可以配置成多个目录,每个目录存储的数据不一样(数据不是副本)
- hdfs-site.xml添加如下内容
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data1,file://${hadoop.tmp.dir}/dfs/data2</value>
</property>
- 关闭集群
- 删除每个节点的data和logs目录
- 格式化集群
hdfs namenode -format
- 重启hdfs
start-dfs.sh
- 检查hadoop安装目录下/opt/module/hadoop-3.1.3/data/dfs,上传文件后会发现有data1和data2且两者内容不相同。
1.3 集群数据均衡之磁盘间数据均衡
生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性)
- 生成均衡计划(我们只有一块磁盘,不会生成计划)
hdfs diskbalancer -plan hadoop103
- 执行均衡计划
hdfs diskbalancer -execute hadoop103.plan.json
- 查看当前均衡任务的执行情况
hdfs diskbalancer -query hadoop103
- 取消均衡任务
hdfs diskbalancer -cancel hadoop103.plan.json
2、HDFS扩容与缩容
2.1 白名单
在白名单的主机IP地址可以,用来存储数据。
- 创建白名单、黑名单
touch /opt/module/hadoop-3.1.3/etc/hadoop/whitelist
touch /opt/module/hadoop-3.1.3/etc/hadoop/blacklist
在whitelist中添加如下主机名称,假如集群正常工作的节点为102 103
hadoop102
hadoop103
- 在hdfs-site.xml中增加如下
<!-- 白名单 -->
<property>
<name>dfs.hosts</name>
<value>/opt/module/hadoop-3.1.3/etc/hadoop/whitelist</value>
</property>
<!-- 黑名单 -->
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-3.1.3/etc/hadoop/blacklist</value>
</property>
- 分发配置文件whitelist,blacklist,hdfs-site.xml
- 第一次添加白名单必须重启集群,不是第一次,只需要刷新NameNode节点即可
hdfs dfsadmin -refreshNodes
- 查看结果
- 二次修改白名单,增加hadoop104 ,分发
- 刷新NameNode
2.2 服役新服务器
环境准备:
- 在hadoop100主机上再克隆一台hadoop105主机
- 修改IP地址和主机名称
- 拷贝hadoop102的/opt/module目录和/etc/profile.d/my_env.sh到hadoop105并source
- 删除hadoop105上Hadoop的历史数据,data和log数据
否则会报错:原因是因为节点id相同冲突了,这个id就在data目录中。将他删除后,重启105的hdfs会根据hdfs-site.xml中的配置信息自动创建一个新的data和logs目录。 - 配置hadoop102和hadoop103到hadoop105的ssh无密登录
- 直接启动DataNode,即可关联到集群
- 在白名单whitelist中增加hadoop104、hadoop105,并重启集群
- 分发至所有节点,包括hadoop105
- 刷新NameNode
hdfs dfsadmin -refreshNodes
2.3 服务器间数据均衡
- 开启数据均衡命令
start-balancer.sh -threshold 10
对于参数10,代表的是集群中各个节点的磁盘空间利用率相差不超过10%,可根据实际情况进行调整。
- 停止数据均衡命令
stop-balancer.sh
由于HDFS需要启动单独的Rebalance Server来执行Rebalance操作,所以尽量不要在NameNode上执行start-balancer.sh,而是找一台比较空闲的机器。
2.4 黑名单退役服务器
在黑名单的主机IP地址不可以,用来存储数据。
企业中,配置黑名单,用来退役服务器。
- 编辑/opt/module/hadoop-3.1.3/etc/hadoop目录下的blacklist文件,添加准备退役的hadoop105
- 分发blacklist
- 第一次添加黑名单必须重启集群,不是第一次,只需要刷新NameNode节点即可
- 检查Web浏览器,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他节点
- 等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。
注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役。 - 如果数据不均衡,可以用命令实现集群的再平衡。
start-balancer.sh -threshold 10