美文网首页我爱编程
Hadoop 的核心 —— HDFS(1)

Hadoop 的核心 —— HDFS(1)

作者: 土冥王 | 来源:发表于2018-03-16 04:31 被阅读26次

    首先来看看Hadoop 是什么?

    Hadoop 是一个开源的大数据框架

    Hadoop是一个分布式计算的解决方案

    Hadoop = HDFS(分布式文件系统)+ MapReduce(分布式计算)

    Hadoop 的两个核心:

    HDFS 分布式文件系统:存储是大数据技术的基础

    MapReduce 编程模型:分布式计算是大数据应用的解决方案

    先来介绍第一个核心 —— HDFS,它有三个特点:

    普通的成百上千的机器构成

    按TB甚至PB为单位的大量的数据

    简单便捷的文件获取

    HDFS 的基本概念:

    数据块-数据块是抽象块而非整个文件作为存储单元,在 Hadoop1.x 中默认大小是64M,Hadoop2.x 中默认大小是128M,默认每个块备份3份。

    由于HDFS是分布式的,也就是主从模式,NameNode 就是主,DataNode 就是从。所以 HDFS 是由一个 NameNode 和多个 DataNode 组成的。

    NameNode:

    管理文件系统的命名空间,存放文件元数据

    维护着文件系统的所有文件和目录,文件与数据块的映射

    记录每个文件中各个块所在数据节点的信息(这些信息在 DataNode 启动时会发送给 NameNode)

    P.S. 如果 NameNode挂掉了怎么办?(分布式系统存在的问题,后面会讨论这个问题)

    DataNode(文件系统的工作节点):

    存储并检索数据块;

    向 NameNode 更新所存储块的列表

                                                                    HDFS 结构图

    HDFS 的优点:

    适合大文件存储,支持 TB、PB 级的数据存储,并有副本策略

    可以构建在廉价的机器上,并有一定的容错和恢复机制

    支持流式数据访问,一次写入,多次读取,高效

    HDFS 的缺点:

    不适合大量小文件存储

    不适合并发写入,不支持文件随即修改

    不支持随机读等低延时的访问方式

    P.S. Hadoop 本来也不是为这些场景设计的,所以到底用不用 Hadoop 要基于具体的业务场景来考虑。

    NameNode 挂掉了怎么办?如何解决单点故障问题?

    这是一个很严重的问题,因为我们很难把这些位于不同 DataNode 的数据块重建成文件。Hadoop2 给出了HDFS的高可用 HA 方案:HDFS通常由两个NameNode组成,一个处于 active 状态(主节点),另一个处于 standby 状态(备用节点),两者的数据是时刻保持一致的。当主节点出现问题,备用节点会自动切换,用户不会受到影响,这样就避免了 NameNode 的单点故障问题。当主节点对外提供服务,比如处理来自客户端的 RPC 请求,而备用节点则不对外提供服务,仅同步主节点的状态,以便能够在它失败时快速进行切换。

    HDFS 的写流程:

    客户端向 NameNode 发起写数据的请求

    分块写入 DataNode 节点,DataNode 自动完成副本的备份

    DataNode 向 NameNode 汇报储存完成,NameNode 通知客户端

    HDFS 的读流程:

    客户端向 NameNode 发起读数据的请求

    NameNode 找出距离最近的 DataNode 节点信息

    客户端从 DataNode 分块下载文件

    本文首发于知乎专栏:「数据池塘

    相关文章

      网友评论

        本文标题:Hadoop 的核心 —— HDFS(1)

        本文链接:https://www.haomeiwen.com/subject/wzzkqftx.html