zoukankan      html  css  js  c++  java
  • 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。

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

                    当前功能尚在完善中。

  • 相关阅读:
    Leetcode929.Unique Email Addresses独特的电子邮件地址
    Leetcode914.X of a Kind in a Deck of Cards卡牌分组
    new Date()设置日期在IOS的兼容问题
    koa2 使用passport权限认证中间件
    当 better-scroll 遇见 Vue
    百度地图开发
    通过Ajax方式上传文件,使用FormData进行Ajax请求
    app中页面滑动,防止a链接误触
    js判断是微信、QQ内置浏览器打开页面
    百度天气预报接口介绍
  • 原文地址:https://www.cnblogs.com/tq03/p/4967268.html
Copyright © 2011-2022 走看看