image.png

hdfs

image.png

参数优先级

参数优先级排序:(1)客户端代码中设置的值 >(2)ClassPath下的用户自定义配置文件 >(3)然后是服务器的自定义配置(xxx-site.xml) >(4)服务器的默认配置(xxx-default.xml)

hdfs写入数据流程

image.png

  • HDFS采取了串行写的方案,即客户端向第一个datanode写入文件,第一个datanode向第二个datanode写入,直到最后一个

    hdfs读数据流程

    image.png

  • DataNode的选择会考虑最近 负载

  • 串行读,先读第一块再读第二块

    NameNode工作机制

    image.png

  • SecondaryNamenode专门用于FsImageEdits的合并。

  • 磁盘中 fsImage + edits(追加数据)= 内存中的数据
  • edits相当于redo log了。
  • NameNode不记录数据块在哪个DataNode。DataNode启动时汇报给NameNode。

    DataNode工作机制

    image.png
    image.png

MapReduce工作流程

MapTask工作机制

image.png

ReduceTask工作机制

image.png

shuffle

image.png

  • 缓冲区,左侧存索引,右侧存数据?
  • 缓冲区达到80%,反向溢写。

Partition分区

image.png

  • reduceTask数量和分区数量不同
    • reduceTask = 1 :使用默认分区器
    • reduceTask < 分区数:报错
    • reduceTask > 分区数:多出的是空文件

      排序

      Bean对象作为key需要实现WritableComparable。

Combiner

mapTask中的局部汇总
image.png

自定义OutputFormat

image.png

Join

reduceJoin

MapJoin

  • 适合一张小表,一张大表。

数据清洗etl

yarn

image.png
image.png