学习日记30--Hadoop架构分析

  1. 【转】为什么HDFS的副本数通常选择3?
    HDFS的存放策略是一个副本存放在本地机架节点上,另一个副本存放在同一机架的另一个节点上,第三个副本存放在在不同机架的节点上。这种策略减少了机架间的数据传输,提高了写操作的效率。机架错误的概率远比节点错误的概率小,所以这种策略不会对数据的可靠性和可用性造成影响。与此同时,因为数据只存在两个机架上,这种策略减少了读数据时需要的网络传输带宽。
  2. hdfs架构(HDFS Architecture)分析
    [查看官方文档] (http://hadoop.apache.org/docs/r2.7.6/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html)

    1. 按需定制MapReduce
    2. 数据高度冗余,写入成本很高。用于一次写入之后的查询运算。
    3. 每个节点不需要RAID-独立磁盘冗余 (redundant array of independent disks)。磁盘阵列技术,RAID-0,RAID-1,RAID-5,RAID-10,成本较高。目的:对数据做备份,又要提高性能,
    4. Blocksize较大(128M),把数据均匀分成几个block。理论上1个block会存3份。均匀分布才能最大发挥集群效应。
    5. 定制节点的位置感知。越点数:两个进程到达同一点的节点的距离个数。
  3. NameNode

    • 存储文件元数据,比如目录结构
    • 运行NameNode的服务器至关重要,只有一个
    • 只对元数据的增删做日志记录,不对block和文件流做记录。
    • DataNode故障时,负责创建更多的副本block。
    • HDFS公开文件系统命名空间,并允许用户数据存储在文件中。 在内部,文件被分成一个或多个块,这些块存储在一组DataNode中。 NameNode执行文件系统命名空间操作,如打开,关闭和重命名文件和目录。 它还确定了块到DataNode的映射。 DataNode负责提供来自文件系统客户端的读写请求。 DataNode还根据NameNode的指令执行块创建,删除和复制。
  4. DataNode 架构分析
          常大的文件。它将每个文件存储为一系列块。复制文件的块以实现容错。块大小和复制因子可根据文件进行配置。
           除最后一个块之外的文件中的所有块都具有相同的大小,而在添加了对可变长度块的支持以追加和hsync之后,用户可以启动新块而不将最后一个块填充到配置的块大小。
           应用程序可以指定文件的副本数。复制因子可以在文件创建时指定,并可以在以后更改。 HDFS 中的文件是一次写入的(除了追加和截断),并且在任何时候都有一个写入器。
           NameNode做出有关块复制的所有决定。它定期从群集中的每个DataNode接收Heartbeat和Blockreport。收到Heartbeat意味着DataNode正常运行。 Blockreport包含DataNode上所有块的列表。

    1. 存储真实数据
    2. 可运行在多种文件系统上(ext3/4,NTFS等)
    3. 通知NameNode自己有哪些block
    4. NameNode在同一机架创建放置一个副本,另一机架放置2个副本。
补充知识
  1. POSIX 表示可移植操作系统接口(Portable Operating System Interface)
  2. 【官方文档介绍】Hadoop分布式文件系统(HDFS)是一种分布式文件系统,设计用于在商用硬件上运行。 它与现有的分布式文件系统有许多相似之处。 但是,与其他分布式文件系统的差异很大。 HDFS具有高度容错能力,旨在部署在低成本硬件上。 HDFS提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。 HDFS放宽了一些POSIX要求,以实现对文件系统数据的流式访问。 HDFS最初是作为Apache Nutch网络搜索引擎项目的基础设施而构建的。 HDFS是Apache Hadoop Core项目的一部分。

猜你喜欢

转载自blog.csdn.net/dershine/article/details/81844968