文章目录

  • 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新特性)

  1. 生成均衡计划(我们只有一块磁盘,不会生成计划
hdfs diskbalancer -plan hadoop103
  1. 执行均衡计划
hdfs diskbalancer -execute hadoop103.plan.json
  1. 查看当前均衡任务的执行情况
hdfs diskbalancer -query hadoop103
  1. 取消均衡任务
hdfs diskbalancer -cancel hadoop103.plan.json

2、HDFS扩容与缩容

2.1 白名单

在白名单的主机IP地址可以,用来存储数据。

  1. 创建白名单、黑名单
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
  1. 在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>
  1. 分发配置文件whitelist,blacklist,hdfs-site.xml
  2. 第一次添加白名单必须重启集群,不是第一次,只需要刷新NameNode节点即可
hdfs dfsadmin -refreshNodes
  1. 查看结果

hadoop tcp 优化 hadoop集群优化_数据

  1. 二次修改白名单,增加hadoop104 ,分发
  2. 刷新NameNode

2.2 服役新服务器

环境准备:

  1. 在hadoop100主机上再克隆一台hadoop105主机
  2. 修改IP地址和主机名称
  3. 拷贝hadoop102的/opt/module目录和/etc/profile.d/my_env.sh到hadoop105并source
  4. 删除hadoop105上Hadoop的历史数据,data和log数据
    否则会报错:原因是因为节点id相同冲突了,这个id就在data目录中。将他删除后,重启105的hdfs会根据hdfs-site.xml中的配置信息自动创建一个新的data和logs目录。
  5. 配置hadoop102和hadoop103到hadoop105的ssh无密登录
  6. 直接启动DataNode,即可关联到集群
  7. 在白名单whitelist中增加hadoop104、hadoop105,并重启集群
  8. 分发至所有节点,包括hadoop105
  9. 刷新NameNode
hdfs dfsadmin -refreshNodes

2.3 服务器间数据均衡

  1. 开启数据均衡命令
start-balancer.sh -threshold 10

对于参数10,代表的是集群中各个节点的磁盘空间利用率相差不超过10%,可根据实际情况进行调整。

  1. 停止数据均衡命令
stop-balancer.sh

由于HDFS需要启动单独的Rebalance Server来执行Rebalance操作,所以尽量不要在NameNode上执行start-balancer.sh,而是找一台比较空闲的机器。

2.4 黑名单退役服务器

在黑名单的主机IP地址不可以,用来存储数据。

企业中,配置黑名单,用来退役服务器。

  1. 编辑/opt/module/hadoop-3.1.3/etc/hadoop目录下的blacklist文件,添加准备退役的hadoop105
  2. 分发blacklist
  3. 第一次添加黑名单必须重启集群,不是第一次,只需要刷新NameNode节点即可
  4. 检查Web浏览器,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他节点
  5. 等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。
    注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役。
  6. 如果数据不均衡,可以用命令实现集群的再平衡。
start-balancer.sh -threshold 10