04-Hadoop思想与原理

1.用图文与自己的话,简要描述Hadoop起源与发展阶段。

  1.   2003-2004年,Google公布了部分GFS和MapReduce思想的细节,
  2.   2006年2月被分离出来,成为一套完整独立的软件,起名为Hadoop
  3.   Hadoop的成长过程
  4.   Lucene–>Nutch—>Hadoop

2.用图与自己的话,简要描述名称节点、第二名称节点、数据节点的主要功能及相互关系。

名称节点:管理HDFS,   存储实际的数据块,执行数据块的读/写操作。

                 接受客户端的请求:文件上传、文件下载

                 管理和维护日志(edits文件)和元信息(数据块的位置信息:fsimage文件)

第二名称节点:

         1、辅助 NameNode,分担其工作量。

         2、定期合并 fsimage和fsedits,并推送给NameNode。

         3、在紧急情况下,可辅助恢复 NameNode

数据结点:   

   是HDFS的工作节点,负责数据的存储和读取  , 存储管理用户的文件块数据

 

 

 

 

 

 

 

 

3.分别从以下这些方面,梳理清楚HDFS的 结构与运行流程,以图的形式描述。

  • 客户端与HDFS
  • 客户端读
  • 客户端写
  • 数据结点与集群
  • 数据结点与名称结点
  • 名称结点与第二名称结点
  • 数据结点与数据结点
  • 数据冗余
  • 数据存取策略数据错误与恢复
  •  

  •  

    4.梳理HBase的结构与运行流程,以用图与自己的话进行简要描述。

    • Master主服务器的功能:
      1. 为Region server分配region
      2. 负责Region server的负载均衡
      3. 发现失效的Region server并重新分配其上的region。
      4. HDFS上的垃圾文件回收。
      5. 处理schema更新请求。
    • Region服务器的功能:
      1. 维护master分配给他的region,处理对这些region的io请求。
      2. 负责切分正在运行过程中变的过大的region。
    • Zookeeper协同的功能:
      Client客户端的请求流程
      • 保证任何时候,集群中只有一个master
      • 存储所有Region的寻址入口
      • 实时监控Region server的上线和下线信息。并实时通知给master
      • 存储HBase的schema和table元数据
    • 四者之间的相系关系
    • 与HDFS的关联

       

       

    5.理解并描述Hbase表与Region的关系。

       Region是HBase中分布式存储和负载均衡的最小单元。不同Region分布到不同RegionServer上,但并不是存储的最小单元。

     Region由一个或者多个Store组成,每个store保存一个columns family,每个Strore又由一个memStore和0至多个StoreFile 组成。memStore存储在内存中, StoreFile存储在HDFS上。HBase通过将region切分在许多机器上实现分布式。

    6.理解并描述Hbase的三级寻址。

    三级寻址对应了三层表:
         (1) -ROOT-表:存储元数据表,即.MEAT.表的信息。它被“写死”在ZooKeeper文件中,是唯一的、不能再分裂的
         (2) .META.表:存储用户数据具体存储在哪些Region服务器上。它会随存储数据的增多而分裂成更多个。
         (3) 用户数据表:具体存储用户数据。它是最底层的、可分裂的
    寻址过程:
         (1) ZooKeeper找到-ROOT-表地址
         (2) -ROOT-表中找到需要的.META.表地址
         (3) .META.表找到所需的用户数据表地址
         (4) 最后从用户数据表取出目标数据

    7.假设.META.表的每行(一个映射条目)在内存中大约占用1KB,并且每个Region限制为2GB,通过HBase的三级寻址方式,理论上Hbase的数据表最大有多大?

     

     

       (2G/1K)x(2G/1k)=242 即2ZB
    所以上Hbase的数据表最大有2

  •  

      •  

        8.MapReduce的架构,各部分的功能,以及和集群其他组件的关系。

         

         

         

        a)client客户端
        每一个Job都会在用户端通过Client类将应用程序以及参数配置Configuration打包成Jar文件存储在HDFS,并把路径提交到JobTracker的master服务,然后由master创建每一个Task(即MapTask和ReduceTask),将它们分发到各个TaskTracker服务中去执行。
        b)JobTracker
        JobTracker负责资源监控和作业调度。JobTracker监控所有的TaskTracker与job的健康状况,一旦发现失败,就将相应的任务转移到其它节点;同时JobTracker会跟踪任务的执行进度,资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合适的任务使用这些资源。在Hadoop中,任务调度器是一个可插拔的模块,用于可以根据自己的需要设计相应的调度器。
        c)TaskTracker
        TaskTracker会周期性地通过HeartBeat将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时执行JobTracker发送过来的命令 并执行相应的操作(如启动新任务,杀死任务等)。
        d)Task
        Task分为MapTask和Reduce Task两种,均由TaskTracker启动

        9.MapReduce的工作过程,用自己词频统计的例子,将split, map, partition,sort,spill,fetch,merge reduce整个过程梳理并用图形表达出来。

         

         

        1、Splitting部分
        把要读取的文件分成几个部分,分到不同的机器上实现并行处理。

        2、Map和Combine部分
        从Splitting部分接收到文件的一部分,Map将字符切割后得到了一些键值对<key,value>,key就是每一个单词,value就是根据单词的出现频次得到的:(1,1,1,1,1…)出现多少次就有多少个1。
        然后再由Combine进行局部的统计后,又得到了一些键值对<key,value>,这里的value就是Map中的1相加的结果。
        3、Shuffle/Sort部分
        这里是Mapper和Reducer的中间部分,它的每一个处理步骤都分散在map task和reduce task节点上,整体看来,就是对Map的结果进行分区、排序、分割。也就是对Combine中的value进行分区,排序后合并。

        4、Reduce部分
        接受经过Shuffle后得到的<key,value>,把各value的值相加,得到最后每一个单词的出现次数。

      •   

posted @ 2021-10-28 21:40  蚊子布丁  阅读(84)  评论(0编辑  收藏  举报