zoukankan      html  css  js  c++  java
  • 班课2

    1. hadoop分为三部分

    Hadoop distributed file system(HDFS)

    MapReduce

    YARN(Yet Another Resource Neigotiator) Hadoop2.0才开始有的

    2. NameNode可以理解为元数据,不实际存储数据本身(只有一个);DataNode用来数据存储。同一台电脑可以只扮演一个角色,也可以即使DataNode又是NameNode

    NameNode类比为manager

    3. 在NameNode中,fsimage存储原数据,edits记录改变

    4. 若所有record都存入内存中,断电后数据会消失;若所有record都存入磁盘中效率过低

    故而引入fsimage与edits,让原始文件与其修改合并

    若每次都是NameNode自己启动的时候合并速度太慢,所以引入Secondary Name Node帮助fsimage与edits合并

    5. Secondary NameNode每隔一段时间就询问NameNode是否需要合并,若edit logs文件大到一定程度就开始合并。NameNode将其fsimage与edit拷贝给Secondary NameNode,Secondary NameNode将其合并成新的fsimage在返还给NameNode

    6. NameNode被启动的时候,首先合并上一次生成的edits,fsimage文件并加载到内存中并生成一个新的空edits_inprogress_001文件

    需要更新NameNode的数据时,这些更新将被首先记录到edits _inprogress_001文件中,然后在内存中修改

    每过一个设定的时间,Secondary NameNode发出checkPoint请求

    NameNode收到checkpoint请求后,另起一个edits_inprogress_002记录后续的更新,此时将edits_inprogress_001重命名为edits_001并将其与fsimage一起拷贝给Secondary NameNode进行合并。合并后传回NameNode,作为新的fsimage

    7. HDFS分块(block)

    HDFS会将文件分块,Hadoop 2.0开始block默认值为128MB

    如果block很小带来的后果是占取更多空间(元文件太多,每个集群上的文件无论大小,在NameNode上都占150B),小文件会增加寻址时间(因为文件数量太多),影响MapReduce

    8. 每个block都会被复制3份,避免一个DataNode失联整个集群无法恢复

    9. HDFS写流程

    HDFS首先创建一个分布式FileSystem,向NameNode请求,NameNode返回哪三个可以使用的DataNode,三个DataNode之间彼此联通。写文件然后发给第一个DataNode,再依次转发给第二个,第二个到第三个。同一时间只能有一个客户端在写,所有blocks同时被上传,三个DataNode的选择是随机的,选择基于Rack Awareness

    10. Rack Awareness可以减少延迟,同一个Rack上可理解为距离更近,但是同一个Rack容错率低,如一个rack断电的时候。故而第一个复制到local DataNode,没有的话放到同一个rack上的随机machine,即写到本地;第二个选择一个不同rack的DataNode,第三个选择跟第二个相同rack的不同机器

    11. HDFS client向NameNode请求文件位置,根据network topology选择最近的

    节点间距离等于两节点到达最近的公共路由/交换机的距离之和

    若同一rack,距离公共交换机的距离均为1;同一集群不同rack则距离均为2,不同集群则距离均为3

    每个rack有一个公共路由,每一个集群有一个公共路由,再往上也有一个公共路由

    12. 可以同时有很多个reader,blocks是同时读的

  • 相关阅读:
    HDU 2836 Traversal 简单DP + 树状数组
    UVa 1402 Runtime Error 伸展树
    UVa 11922
    HDU 4358 Boring counting 树状数组+思路
    HDU 4351 Digital root 线段树区间合并
    LA 6187
    UPC 2224 / “浪潮杯”山东省第四届ACM大学生程序设计竞赛 1008 Boring Counting 主席树
    max 宏定义取消:error C2589: error C2059: 语法错误 : “::”
    QT+VTK 对接使用
    标准C++中的string类的用法总结
  • 原文地址:https://www.cnblogs.com/eleni/p/13137541.html
Copyright © 2011-2022 走看看