打怪升级之小白的大数据之旅(四十七)<HDFS扩展知识点>

Posted GaryLea

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打怪升级之小白的大数据之旅(四十七)<HDFS扩展知识点>相关的知识,希望对你有一定的参考价值。

打怪升级之小白的大数据之旅(四十七)

HDFS扩展知识点

上次回顾

上一章我们学习了HDFS个模块的运行原理,学会了这些,本章节的扩展知识就会更加容易理解

HDFS的扩展知识点

NameNode故障处理

当我们的NameNode出现了故障后,我们可以采用如下两种方法恢复数据,当然了,只能恢复部分的数据,因为内存中正在运行的数据还没有滚动写入到edit文件中

NameNode数据恢复方法

利用NN和2NN的工作原理,我们可以将SecondaryNameNode中数据拷贝到NameNode存储数据的目录,然后对edit文件和fsimage文件进行合并,从而恢复NameNode的数据

恢复步骤如下:

  1. 关闭NameNode服务

    hdfs --daemon stop namenode 
    
  2. 删除NameNode存储的数据

    rm -rf /opt/module/hadoop-3.1.3/data/dfs/name/current/*
    
  3. 拷贝SecondaryNameNode中数据到原NameNode存储数据目录

    scp -r atguigu@hadoop104:/opt/module/hadoop-3.1.3/data/dfs/namesecondary/current/*  /opt/module/hadoop-3.1.3/data/dfs/name/current/
    
  4. 重新启动NameNode

    hdfs --daemon start namenode 
    
  • 因为使用2NN这种方法,真的遇到特殊情况,也只能恢复部分数据,所以在真正工作中,我们基本上不用它,我们用的是HDFS+HV,后面会将它,不要急哈

集群安全模式

  • 当我们刚启动集群时,是无法进行数据的操作的,因为此时集群处于安全模式,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式
  • 安全模式的基本语法
    1)bin/hdfs dfsadmin -safemode get		(功能描述:查看安全模式状态)
    (2)bin/hdfs dfsadmin -safemode enter  	(功能描述:进入安全模式状态)
    (3)bin/hdfs dfsadmin -safemode leave	(功能描述:离开安全模式状态)
    (4)bin/hdfs dfsadmin -safemode wait	(功能描述:等待安全模式状态)
    
  • 知道了这个,我们通常写入数据时会以脚本的方式进行写入
# 编写脚本safemode.sh
vim safemode.sh
# 脚本内容
#!/bin/bash
hdfs dfsadmin -safemode wait
hdfs dfs -put /opt/module/hadoop-3.1.3/README.txt /
  • 这么的好处就是可以通过监控安全模式的状态来进行文件的写入,防止因集群还没有启动完成就进行操作导致节点异常崩溃掉

服役新数据节点

  • 服役新数据节点的意思就是,当我们需要添加新的节点时,可以不用停止集群,直接启动该节点即可将该节点添加进集群中
  • 准备工作
    • 我们首先克隆一台主机
    • 然后修改IP地址和主机名称
    • 注意看一下hosts文件是否有新加的主机名称,我前面多配了很多台,所以我们不需要修改hosts
    • 利用source更新一下配置文件
  • 直接启动DataNode即可关联到集群中
  • 如果数据不均衡,我们可以使用下面的命令,实现集群的再平衡
sbin/start-balancer.sh

退役旧数据节点

添加白名单

再前面我添加新数据节点时,只需要直接启动即可关联到集群中,这样很不安全,如果是黑客这么操作,它可以将我们的数据通过副本机制直接拷贝到他的服务器中,为了增加安全性,我们需要对我们集群中的节点添加到白名单中,步骤如下:

  1. 在NameNode的/opt/module/hadoop-3.1.3/etc/hadoop目录下创建dfs.hosts文件
    cd /opt/module/hadoop-3.1.3/etc/hadoop
    vim dfs.hosts
    # 添加节点到白名单中
    hadoop102
    hadoop103
    hadoop104
    
  2. 在NameNode的hdfs-site.xml配置文件中增加dfs.hosts属性(并重启NameNode)
    <property>
    <name>dfs.hosts</name>
    <value>/opt/module/hadoop-3.1.3/etc/hadoop/dfs.hosts</value>
    </property>
    
  3. 文件分发
    xsync hdfs-site.xml
    
  4. 刷新NameNode
    hdfs dfsadmin -refreshNodes
    
  5. 更新ResourceManager节点
    yarn rmadmin -refreshNodes
    
  6. 如果数据不均衡,可以使用集群再平衡
    ./start-balancer.sh
    

黑名单退役

当我们需要将某个节点清出集群时,不能直接拔电源,因为这个节点中还有我们的数据在里面,此时我们就需要使用黑名单退役来进行安全的节点退出工作,步骤如下

  1. 在NameNode的/opt/module/hadoop-3.1.3/etc/hadoop目录下创建dfs.hosts.exclude文件

    cd /opt/module/hadoop-3.1.3/etc/hadoop
    # 创建黑名单文件
    vim dfs.hosts.exclude
    # 添加要退役的主机节点
    hadoop105
    
  2. 在NameNode的hdfs-site.xml配置文件中增加dfs.hosts.exclude属性(并重启NameNode)

    <property>
    <name>dfs.hosts.exclude</name>
          <value>/opt/module/hadoop-3.1.3/etc/hadoop/dfs.hosts.exclude</value>
    </property>
    
  3. 刷新NameNode、刷新ResourceManager

    hdfs dfsadmin -refreshNodes
    yarn rmadmin -refreshNodes
    
  4. 检查Web浏览器,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他节点
    在这里插入图片描述

  5. 等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役
    在这里插入图片描述

  6. 如果数据不均衡,可以用命令实现集群的再平衡

    sbin/start-balancer.sh 
    

Datanode多目录配置

  • 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>
    

总结

本章节主要是对一些我们工作中可能会遇到的一些操作进行了总结,好饿了,到这里HDFS的内容就结束了,下一章我会为大家带来MR(MapReduce)的知识点

以上是关于打怪升级之小白的大数据之旅(四十七)<HDFS扩展知识点>的主要内容,如果未能解决你的问题,请参考以下文章

打怪升级之小白的大数据之旅(四十五)<认识HDFS与常用操作>

打怪升级之小白的大数据之旅(五十七)<Hadoop压缩>

打怪升级之小白的大数据之旅(四十八)<初识MapReduce>

打怪升级之小白的大数据之旅(四十)<Shell编程>

打怪升级之小白的大数据之旅(四十一)<大数据与Hadoop概述>

打怪升级之小白的大数据之旅(四十三)<Hadoop运行模式(集群搭建)>