• 大数据基础之HDFS


    https://hadoop.apache.org
    A distributed file system that provides high-throughput access to application data.

    特点:

    • 大文件、一次写入多次读取,修改只支持Append
    • 多副本
    • 流式、非低延时

    一 概念

    元数据、File-Block、机架、副本、读数据、写数据

    File-Block、Replication

    QJM部署

    NameNode、DataNode、ZKFC、JournalNode

    HA

    zk节点

    • /hadoop-ha/${dfs.nameservices}/ActiveBreadCrumb 永久节点
    • /hadoop-ha/${dfs.nameservices}/ActiveStandbyElectorLock 临时节点

    代码

    org.apache.hadoop.hdfs.tools.DFSZKFailoverController

    二 常用命令

    hdfs dfs -ls /
    hdfs dfs -du -h /
    hdfs dfsadmin -report
    hdfs haadmin -getAllServiceState
    hdfs fsck /tmp/36c8b0727c814dc2ae5d520a45fadeb0.51c9f1f1e3652991ed3071c6c0bb0264 -files -blocks -locations -racks
    hdfs dfs -setrep 2 /user/hive/warehouse/temp.db/test_ext_o/000000_0
    hdfs balancer -threshold 10
    hadoop distcp hdfs://master1:8020/foo/a hdfs://master1:8020/foo/b hdfs://master2:8020/bar/foo

    三 读写过程

    四 Namenode相关

    文件

    全量+增量
    fsimage、edit log

    内存估算

    Total = 198 ∗ num(Directory + Files) + 176 ∗ num(blocks) + 2% ∗ size(JVM Memory Size)

    五 Datanode相关

    分配策略

    选择策略:

    • 1 当前机架(相对hdfs client而言)chooseLocalNode
    • 2 远程机架(相对hdfs client而言)chooseRemoteRack
    • 3 另一机架
    • 4 全部随机 chooseRandom

    代码:

    org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.findNewDatanode

    副本检查

    BlockManager中启动线程ReplicationMonitor,ReplicationMonitor定期检查哪些block存在副本缺失,并将待复制block信息通知原始DataNode,DataNode收到信息后会不断复制block,默认一次2个block;

    代码:

    org.apache.hadoop.hdfs.server.blockmanagement.BlockManager

    相关配置:

    dfs.replication
    dfs.namenode.replication.interval
    dfs.namenode.replication.work.multiplier.per.iteration
    dfs.namenode.replication.max-streams

    六 安全模式

    SafeMode 是 NameNode 的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受上传、删除、修改等变更请求。
    在 NameNode 主节点启动时,HDFS 首先进入安全模式,DataNode 在启动的时候会向 NameNode 发送心跳信号并汇报可用的 block 的状态,当整个系统达到安全标准时,HDFS 自动离开安全模式。
    安全标准:block缺失率低于0.1%
    dfs.namenode.safemode.threshold-pct=0.999

    退出安全模式命令

    hdfs dfsadmin -safemode leave

  • 相关阅读:
    指针问题,p+i什么意思i代表什么
    怎么用C语言写一个飞机程序
    switch()语句中()中必须是常量吗
    一元二次方程运行结果中输入上系数后总显示输入不合法无论系数可以得出实根
    我想学号图论求大神请教
    c-freelib库
    十进制转十六进制问题(有代码)
    关于逐个读取同一目录下txt文本的问题
    JAVA-JDK1.7-ConCurrentHashMap-测试和验证
    JAVA-JDK1.7-ConCurrentHashMap-源码并且debug说明
  • 原文地址:https://www.cnblogs.com/barneywill/p/16330814.html
Copyright © 2020-2023  润新知