HDFS分布式文件系统

Posted xupccc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDFS分布式文件系统相关的知识,希望对你有一定的参考价值。

HDFS分布式文件系统

  1. 分布式存储
  2. 分布式计算

2、hadoop

hadoop含有四个模块,分别是 common、 hdfs和yarn。

  1. common

    公共模块。

  2. HDFS

    hadoop distributed file system,hadoop分布式文件系统,负责文件的存储管理。HDFS包括Namenode进程、DataNode进程和Secondary Namenode进程。

    1. NameNode
    2. DataNode
    3. Secondary Namenode
  3. mapreduce

    高度抽象的编程模型,包括映射和化简两个阶段,是大数据计算技术的基础。

  4. yarn

资源调度框架,完成在job执行时,进行集群整体资源的调配管理的。集群中所有资源的配置都有ResourceManager完成。

HA

High availability,系统提供持续服务的能力,通常使用9的个数来衡量,例如5个9就是指99.999%。

high availability,高可用问题。
衡量系统持续提供服务的能力。通常使用几个9衡量。
99.999%                 //折合一年可以宕机5分钟
99.9999%                //折合一年可以宕机5分钟

hadoop部署模式

1.local
    不会启动任何进程。

2.pesudo
    一个节点启动所有进程(5).

3.full
    在不同节点启动不同进程。

4.HA模式
    active(宕机) + standby(待命)

webui

http://namenode:50070/
http://2nn:50090/
http://datanode:50075/

hadoop

start-all.sh
start-dfs.sh
start-yarn.sh

hadoop-daemon.sh start namenode
hadoop-daemons.sh start datanode

副本的放置策略(273)

不同的hadoop版本,对副本的放置策略也不用。

机架感知

按照ip地址返回网络拓扑树形结构/a/b/c/xxx | /a/b/c/xxx

网络拓扑距离

每个节点到达共同交换机的跃点数的总和。

zookeeper

协同服务,HA服务支持。
容灾能力 : (n - 1) / 2
奇数.

namenode配置多个目录

每个目录下的内容相同,用于备份。

datanode配置多个目录

每个目录下的内容不同,用于扩容。

spark

hadoop

1.配额管理
    1.1)空间配额
        限制
    1.2)目录配额
        限制目录或文件的个数
        hdfs dfsadmin -setQuota 1 data2         //1保持目录为空
        hdfs dfsadmin -clsQuota data2           //1保持目录为空

2.快照
    瞬间照相(差异化存储)。

3.OIV
    offline image viewer,离线镜像查看器
    fsimage(元数据)

4.OEV
    offline edit viewer,离线编辑日志查看器。
    edit存放的对dfs的操作过程。

镜像控制(检查点)

[hdfs-site.xml]
1.dfs.namenode.checkpoint.period=3600
    两次检查点的时间间隔.

2.操作记录数=1000,000
    操作记录超过该值,也会导致检查点的创建。
    dfs.namenode.checkpoint.txns

3.检查周期(默认60)
    dfs.namenode.checkpoint.check.period=60

4.设置检查点文件个数,默认是2
    dfs.namenode.num.checkpoints.retained=2

5.手动融合镜像文件(需要安全模式)
    hdfs dfsadmin -safemode enter
    hdfs dfsadmin -saveNamespace
    hdfs dfsadmin -safemode leave

6.从client可以下载镜像文件
    //下载集群的镜像文件到当前目录下
    hdfs dfsadmin -fetchImage .

metasave

保存块复制信息等和datanode的心跳信息到日志文件。
该日志文件在namenode的本地logs下。
hdfs dfsadmin -metasave 1.log

安全模式

hdfs dfsadmin -safemode get         //查看
hdfs dfsadmin -safemode enter       //进入
hdfs dfsadmin -safemode leave       //退出
hdfs dfsadmin -safemode wait        //等待

快照

//启用快照
hfds dfsadmin -allowSnapshot data
//禁用快照
hfds dfsadmin -disallowSnapshot data

//创建快照
hdfs dfs -createSnapshot data sp1
//删除
hdfs dfs -deleteSnapshot data sp1
//重命名
hdfs dfs -renameSnapshot data sp1 sp2

删除目录时,如果是可快照目录并且有快照,无法删除,需要
先删除快照再删除目录。

旧节点退役(datanode下线)

1.描述
    hdfs的datanode下线由dfs.hosts.exclude属性控制,yarn的nodemanager下线
    由yarn.resourcemanager.nodes.exclude-path控制。
2.dfs.hosts.exclude
    配置datanode黑名单文件路径名,名单中的节点不允许连接到nn。如果该属性不配置,
    所有节点都可以连接。
3.dfs.hosts
    配置datanode白名单文件路径名,名单中的节点允许连接到nn。如果该属性不配置,
    所有节点都可以连接。
4.规则
    
        dfs.hosts       dfs.host.exlucde        result
    ---------------------------------------------------
        NO                  NO                  Not
        NO                  YES                 Not
        YES                 NO                  Yes
        YES                 YES                 Yes并将退役


5.退役实操
    5.0)准备黑白名单
        dfs_exclude.conf
        dfs_include.conf

    5.1)配置hdfs-site.xml的黑白名单属性
        <property>
                <name>dfs.hosts</name>
                <value>/soft/hadoop/etc/full/dfs_include.conf</value>
        </property>
        <property>
                <name>dfs.hosts.exclude</name>
                <value>/soft/hadoop/etc/full/dfs_exclude.conf</value>
        </property>
        
    5.2)添加退役节点地址到黑名单,不要更新白名单
        [dfs_exclude.conf]
        s102

    5.3)刷新nn
        hdfs dfsadmin -refreshNodes
         
    5.4)进入webui,查看退役的节点是否显式为"退役中",开始复制数据块到其他节点。

    5.5)一旦复制完成,状态显式"Decommissioned",停止退役节点

    5.6)从白名单中删除退役节点
        s103
        s104
        s106
    
    5.7)再次刷新节点
        hdfs dfsadmin -refreshNodes

    5.8)从slaves中删除退役节点
        s103
        s104
        s106    

新节点上线(datanode)

1.准备环境
    克隆新虚拟机
    配置ssh
    删除本地临时目录

2.实操过程
    2.1)添加新地址到白名单
        s103
        s104
        s106
        s102
        [删除黑名单记录]
    2.2)刷新名称节点
        hdfs dfsadmin -refreshNodes

    2.3)更新slaves文件
        s103
        s104
        s106
        s102

    2.4)启动新节点的datanode进程
        [s102]
        hadoop-daemon.sh start datanode

    2.5)检查webui

旧节点下线(nodemanager)

1.描述
    hdfs的datanode下线由dfs.hosts.exclude属性控制,yarn的nodemanager下线
    由yarn.resourcemanager.nodes.exclude-path控制。
2.dfs.hosts.exclude
    配置datanode黑名单文件路径名,名单中的节点不允许连接到nn。如果该属性不配置,
    所有节点都可以连接。
3.dfs.hosts
    配置datanode白名单文件路径名,名单中的节点允许连接到nn。如果该属性不配置,
    所有节点都可以连接。
4.规则
    
        dfs.hosts       dfs.host.exlucde        result
    ---------------------------------------------------
        NO                  NO                  Not
        NO                  YES                 Not
        YES                 NO                  Yes
        YES                 YES                 Yes并将退役


5.退役实操
    5.0)准备黑白名单
        yarn_exclude.conf
        yarn_include.conf

    5.1)配置yarn-site.xml的黑白名单属性
        <property>
                <name>yarn.resourcemanager.nodes.include-path</name>
                <value>/soft/hadoop/etc/full/yarn_include.conf</value>
        </property>
        <property>
                <name>yarn.resourcemanager.nodes.exclude-path</name>
                <value>/soft/hadoop/etc/full/yarn_exclude.conf</value>
        </property>
        
    5.2)添加退役节点地址到黑名单,不要更新白名单
        [yarn_exclude.conf]
        s102

    5.3)刷新nn
        yarn rmadmin -refreshNodes
         
    5.4)进入webui,查看退役的节点是否显式为"退役中",开始复制数据块到其他节点。
        http://rm:8088/

    5.5)一旦复制完成,状态显式"Decommissioned",停止退役节点

    5.6)从白名单中删除退役节点
        [yarn-include.conf]
        s103
        s104
        s106
    
    5.7)再次刷新节点
        yarn rmadmin -refreshNodes

    5.8)从slaves中删除退役节点
        s103
        s104
        s106

以上是关于HDFS分布式文件系统的主要内容,如果未能解决你的问题,请参考以下文章

从设计到实现:HDFS复制流程细节 | 分布式文件系统读书笔记

02 HDFS 分布式环境实战

浅谈HDFS分布式文件系统

HDFS 分布式文件系统

HDFS读写机制剖析

HDFS分布式文件系统