zoukankan      html  css  js  c++  java
  • HDFS 整体把握

    对于HDFS这样一个分布式文件系统,它的目的是为了实现在多台廉价X86服务器上实现大文件存储。

     image

      HDFS 是仿造GFS 设计出来的。 如图所示, 这种实现方案是一种采取有一个中心节点, 多个数据节点围绕的方式。

    这种设计

    优点: 设计简单

    缺点:  中心节是瓶颈。

    按照这种设计   我们核心要解决的两个是

    1 中心节点(Namenode)和数据节点(datanode)的数据怎么存储?

    2 各个数据节点怎么通信?

    例如我要把一个文件存在这个文件系统上。 假若这个文件命名为 ID0001。

    对于问题1 。 namenode节点需要完成的核心任务如下 存储文件ID001文件名到具体存储这个文件的datanode之间的映射。

                    dantanode需要完成文件名(实际为文件ID)到linux文件系统具体存储路径的映射。 HDFS中采取的是hash表。

          其实问题1的核心是实现K-V的存储。我们能找到的可以现在K-V存储的数据结构方式只有: 链表、 hash表、 红黑树这三种。 hdfs中根据需要和java语言特性,采用的是hash表。

    对于问题二。 实际是网络通信问题。

         根据应用需求

          大体上可以分为两种通信需求,一种是各个节点之间交换元信息  它的特点是逻辑复杂,但数据量不大,hdfs中针对这点需求开发了自己的hadoop ipc

        第二种是真正的数据通信。 它的特点是数据量巨大,hafs采取的是TCP协议。

    对于这样一个主从式的分布式文件系统,我觉得把握住这两方面就可以从整体上看到这个文件系统的样子。 文件系统的两大核心问题就是

        K-V存储 和  通信。

  • 相关阅读:
    Maven关于web.xml中Servlet和Servlet映射的问题
    intellij idea的Maven项目运行报程序包找不到的错误
    修改Maven项目默认JDK版本
    刷题15. 3Sum
    刷题11. Container With Most Water
    刷题10. Regular Expression Matching
    刷题5. Longest Palindromic Substring
    刷题4. Median of Two Sorted Arrays
    刷题3. Longest Substring Without Repeating Characters
    刷题2. Add Two Numbers
  • 原文地址:https://www.cnblogs.com/echomyecho/p/3251120.html
Copyright © 2011-2022 走看看