文章目录
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 服务器间数据均衡
-
开启数据均衡命令
对于参数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,是不能退役成功的,需要修改副本数后才能退役。
-
如果数据不均衡,可以用命令实现集群的再平衡。