• hadoop入门(2)——HDFS2.0应用场景、原理、基本架构及使用方法


    一、HDFS概述

            优点:高容错性、适合批处理、适合大数据处理、流式文件访问:一次写入,多次读取。

            缺点:不适合低延迟数据访问、不适合小文件存取(受限于NameNode)、不适合并发写入。

    二、HDFS基本架构和原理

            考虑一个问题:如何实现一个分布式文件系统?

            业务场景:目前有几个T级别的大文件,有数个大容量存储主机。

            初期思路:将每个文件创建几个副本,通过冗余机制,分别存放到不同的机器上。另外,通过一台专门的主机master,记录这些文件及其副本都存储到了哪些机器上。

            初期思路的缺点:①存储负载不均衡。②读取文件时无法并行读取,受限于单台机器的IO性能。③master存在单点故障风险。④当文件大于存储机器的磁盘容量时,就无法进行存储了。

            HDFS的思路:基本原理是将大文件分块,每个文件块大小相同(64M),用一个节点master记录文件块的存放位置。每个文件块建立多个副本。采用NameNode和DataNode的方式,两者通过心跳进行检测。同时为了避免单点故障,提供一个standby的NameNode。client负责切分文件,并与NameNode交互,获取文件位置信息。

            HDFS数据块(block):

            HDFS写流程:通过client类,首先询问当前文件是否存在。然后client通过流水线的方式写入。每次会把block拆分成更加小的packet。写完一个之后继续下一个,然后datanode传输之前写入的packet。以此类推,直至写完。

            HDFS读流程:client通过询问NameNode获取该文件所在的datanode位置,然后将文件读取出来。

            HDFS的物理拓扑:集群内有多个机架,每个机架上有多个节点。所以分配block时需要考虑跨机架的效率问题。

            HDFS副本放置策略:副本1写在和client相同 的节点上。副本2写在不同机架的节点上。副本3写在与副本2同机架的另一个节点上。

            HDFS可靠性策略:

                    3种常见错误:文件损坏、网络或者机器失效、NameNode挂掉。

                    文件完整性校验:通过CRC32校验,用其他副本去掉损坏文件。

                    Heartbeat:检测datanode机器是否失效。

                    元数据信息:FSImage多份存储、主备切换。

            HDFS不适合存储小文件:①NameNode的内存是有限的。②大量小文件寻址时间长。③NameNode存储block数目是有限的。

    三、HDFS程序设计

            HDFS访问方式:HDFS shell 、Java api、rest api、fuse协议、lib hdfs、其他语言编程API。

            HDFS Shell命令一览表:通过hadoop提供的命令行工具完成。也提供了很多的管理脚本。(详见后续介绍)

            Java API: Configuration类、FileSystem类、FSDataInputStream、FSDataOutputStream。

            其他语言:略。

    四、HDFS2.0新特性

            1、NameNode HA:

            2、NameNode Federation:集群中提供多个NameNode,每个NameNode负责管理一部分DataNode。

            3、HDFS 快照:帮助用户保存某个时刻的数据。防止用户误删数据。使用命令开启该功能。

            4、HDFS 缓存:

            5、HDFS ACL:启用时需要修改配置文件。原来的方式受限于单一user和单一group机制。

            6、异构层级存储结构:原本是将所有的存储介质抽象成性能相同的DISK。

                    每个节点是由多种异构存储介质组成的。

                    当前功能尚在完善中。

  • 相关阅读:
    继续对dubbo源代码进行maven builder
    Oracle操作XML各种场景介绍
    GitHub上的SliddingMenu滑动过程中卡顿问题的解决的方法
    [leetcode] Reverse Words in a String [1]
    UI标签库专题五:JEECG智能开发平台 Tabs(选项卡父标签)
    JAVA的一次编译,到处执行,你知道多少?
    设计模式学习--------12.代理模式学习
    P3573 [POI2014]RAJ-Rally
    2019-2-21-PowerShell-通过-WMI-获取补丁
    2019-2-21-PowerShell-通过-WMI-获取补丁
  • 原文地址:https://www.cnblogs.com/tq03/p/4967268.html
Copyright © 2020-2023  润新知