当先锋百科网

首页 1 2 3 4 5 6 7

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
    
  2. 执行均衡计划

    hdfs diskbalancer -execute hadoop103.plan.json
    
  3. 查看当前均衡任务的执行情况

    hdfs diskbalancer -query hadoop103
    
  4. 取消均衡任务

    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
    
  2. 在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>
    
  3. 分发配置文件whitelist,blacklist,hdfs-site.xml

  4. 第一次添加白名单必须重启集群,不是第一次,只需要刷新NameNode节点即可

    hdfs dfsadmin -refreshNodes
    
  5. 查看结果

在这里插入图片描述

  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. 开启数据均衡命令

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

  2. 停止数据均衡命令

    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. 如果数据不均衡,可以用命令实现集群的再平衡。