关于hadoop:Hadoop-入门笔记九-HDFS-数据迁移和安全模式

33次阅读

共计 2905 个字符,预计需要花费 8 分钟才能阅读完成。

一. HDFS 数据迁徙解决方案

数据迁徙指的是一种大规模量级的数据转移,转移的过程中往往会跨机房、跨集群,数据迁徙规模的不同会导致整个数据迁徙的周期也不尽相同。
在 HDFS 中,同样有许多须要数据迁徙的场景,比方冷热数据集群之间的数据转化,或者 HDFS 数据的双机房备份等等。因为波及跨机房、跨集群,所以数据迁徙不会是一个简略的操作。

1. 数据迁徙应用场景

  • 冷热集群数据同步、分类存储
  • 集群数据整体搬迁
    当公司的业务迅速的倒退, 导致以后的服务器数量资源呈现长期缓和的时候, 为了更高效的利用资源, 会将原 A 机房数据整体迁徙到 B 机房的, 起因可能是 B 机房机器多, 而且 B 机房自身开销较 A 机房成本低些等;
  • 数据的准实时同步
    数据准实时同步的目标在于 数据的双备份可用 , 比方某天 A 集群忽然宣告不容许再应用了, 此时 能够将线上应用集群间接切向 B 的同步集群, 因为 B 集群实时同步 A 集群数据, 领有完全一致的实在数据和元数据信息, 所以对于业务方应用而言是不会受到任何影响的。

    2. 数据迁徙因素考量

  • Bandwidth- 带宽
    带宽用的多了, 会影响到线上业务的工作运行, 带宽用的少了又会导致数据同步过慢的问题。
  • Performance- 性能
    是采纳简略的单机程序? 还是多线程的性能更佳的分布式程序?
  • Data-Increment- 增量同步
    当 TB,PB 级别的数据须要同步的时候, 如果每次以全量的形式去同步数据, 后果肯定是十分蹩脚。如果 仅针对变动的增量数据进行同步将会是不错的抉择。能够配合 HDFS 快照等技术实现增量数据同步。
  • Syncable- 数据迁徙的同步性
    数据迁徙的过程中须要保障周期内数据是肯定可能同步完的, 不能差距太大. 比方 A 集群 7 天内的增量数据, 我只有花半天就能够齐全同步到 B 集群, 而后我又能够等到下周再次进行同步. 最可怕的事件在于 A 集群的 7 天内的数据, 我的程序花了 7 天还同步不完, 而后下一个周期又来了, 这样就无奈做到准实时的一致性. 其实 7 天还是一个比拟大的工夫, 最好是能达到按天同步
    数据在指定周期内还没有同步完, 下一个周期就开始了, 这样就无奈做到准实时的一致性

    3. HDFS 分布式拷贝工具:DistCp

    1. DistCp 介绍:

    DistCp 是 Apache Hadoop 中的一种风行工具,在 hadoop-tools 工程下,作为独立子工程存在。其定位就是 用于数据迁徙的,定期在集群之间和集群外部备份数据 。(在备份过程中,每次运行 DistCp 都称为一个备份周期。)只管 性能绝对较慢 ,但它的遍及水平曾经越来越高。

    DistCp 底层 应用 MapReduce 在群集之间或并行在同一群集内复制文件。执行复制的 MapReduce 只有 mapper 阶段。它波及两个步骤:

    • 构建要复制的文件列表(称为复制列表)
    • 运行 MapReduce 作业以复制文件,并以复制列表为输出。

2. DistCp 劣势个性

  • 带宽限流
    DistCp 能够通过命令参数 bandwidth 来为程序进行带宽限流。避免拷贝数据占用大量带宽导致集群性能降落
  • 增量数据同步
    在 DistCp 中能够通过 update、append 和 diff 这 3 个参数实现增量同步

    参数 性能
    Update 只拷贝不存在的文件或者目录
    Append 追加写指标门路下已存在的文件
    Diff 通过快照的 Diff 比照信息来同步源门路与指标门路

    Update 解决了新增文件、目录的同步。
    Append 解决己存在文件的增量更新同步。
    Diff 解决删除或重命名类型文件的同步。

  • 高效的性能: 分布式个性
    DistCp 底层应用 MapReduce 执行数据同步,MapReduce 自身是一类分布式程序。

    3. DistCp 命令

    $ hadoop distcp
    usage: distcp OPTIONS [source_path...] <target_path>
               
     -append                   // 拷贝文件时反对对现有文件进行追加写操作
     -async                    // 异步执行 distcp 拷贝工作
     -bandwidth <arg>          // 对每个 Map 工作的带宽限速
     -delete                   // 删除绝对于源端, 指标端多进去的文件
     -diff <arg>               // 通过快照 diff 信息进行数据的同步                  
     -overwrite                // 以笼罩的形式进行拷贝,如果指标端文件曾经存在,则间接笼罩
     -p <arg>                  // 拷贝数据时, 扩大属性信息的保留,包含权限信息、块大小信息等等
     -skipcrccheck             // 拷贝数据时是否跳过 cheacksum 的校验
     -update                   // 拷贝数据时, 只拷贝绝对于源端,指标端不存在的文件数据
    

    命令:

    hadoop distcp hdfs://nnl:8020/foo/a   hdfs://nn2:8020/bar/foo

    下面的命令示意从 nnl 集群拷贝/foo/a 门路下的数据到 nn2 集群的/bar/foo 门路下。

二. HDFS NAMENODE 平安模式

1. 平安模式概述

Hadoop 中的 平安模式 safe mode 是 NameNode 的保护状态 ,在此状态下 NameNode 不容许对文件系统进行任何更改,能够承受读数据申请。
在 NameNode 启动过程中,首先会从 fsimage 和 edits 日志文件加载文件系统状态。而后,期待 DataNodes 汇报可用的 block 信息。在此期间,NameNode 放弃在平安模式。随着 DataNode 的 block 汇报继续进行,当整个零碎达到平安规范时,HDFS 主动来到平安模式 。在 NameNode Web 主页上会显示平安模式是关上还是敞开。
如果 HDFS 处于平安模式下,不容许 HDFS 客户端进行任何批改文件的操作, 包含上传文件,删除文件,重命名,创立文件夹, 批改正本数等操作。

2. 平安模式主动进入来到

1. 主动进入工夫

DFS 集群启动时,当 NameNode 启动胜利之后,此时集群就会主动进入平安模式

2. 主动来到条件

平安模式相干的配置属性参数都在 hdfs-default.xml 中定义,如果须要笼罩任何值,请在 hdfs-site.xml 文件中从新笼罩定义

  • dfs.replication
    hdfs block 的正本数据,默认 3
  • dfs.replication.max
    最大块正本数,默认 512
  • dfs.namenode.replication.min
    最小块正本数,默认 1
  • dfs.namenode.safemode.threshold-pct
    已汇报可用数据块数量占整体块数量的百分比阈值。默认 0.999f。
    小于或等于 0,则示意退出平安模式之前,不要期待特定百分比的块。大于 1 的值将使平安模式永恒失效。
  • dfs.namenode.safemode.min.datanodes
    指在退出平安模式之前必须存活的 DataNode 数量,默认 0
  • dfs.namenode.safemode.extension
    达到阈值条件后继续扩大的工夫。倒计时完结如果仍然满足阈值条件,主动来到平安模式。默认 30000 毫秒

    3. 平安模式的手动进入来到

    1. 手动获取平安模式的状态信息

    hdfs dfsadmin -safemode get

    2. 手动进入平安模式

     hdfs dfsadmin -safemode enter

    动进入平安模式 对于集群保护或者降级的时候十分有用,因为这时候 HDFS 上的数据是只读的。

    3. 手动来到平安模式

    hdfs dfsadmin -safemode leave

正文完
 0