Hadoop点滴-初识MapReduce(2)

  1. 术语:
    1. job(作业):客户端需要执行的一个工作单元,包括输入数据、MP程序、配置信息
    2. Hadoop将job分成若干task(任务)来执行,其中包括两类任务:map任务、reduce任务。这些任务在集群的节点上,并通过YARN进行调度
    3. Hadoop将MP输入数据划分成等长的小数据块,成为“输入分片(input split)。Hadoop为每个分片构建一个map任务
    4. 多余大多数作业来说,一个合理分片大小趋向于HDFS的一个块的大小,默认128MB。每个新建文件可以单独指定块大小
    5. Hadoop在数据分片所在的节点上运行map任务,即所谓的”数据本地化优化“。
    6. 仅仅在非常偶然的情况下(该情况基本不会发生),将map任务分配的计算节点与数据节点分开
    7. 分片大小与块大小相同:优势:确保可以存储在单个节点上的最大输入块的大小,如果分片跨越两个数据块,那么对于任何一个HDFS节点,基本上都不可能同时存储这两个数据块
    8. map任务将其输出写入本地磁盘,而非HDFS,因为map的输出是中间结果。
    9. reduce任务并不具备数据本地化优势
    10. 单个reduce任务的输入通常来自于所有map的输出;
    11. reduce的输出通常存储在HDFS中以实现可靠存储。
    12. reduce输出的第一个副本存储在本地节点上,其他副本出于可靠性考虑存储在其他机架的节点中。因此,reduce输出写入HDFS确实需要占用网络带宽。
    13. reduce任务的数量并非由输入数据的大小决定,而是独立指定的。
    14. 可将map输出进行分区,对每个分区指定和一个reduce任务
    15. 存在物reduce的MP数据流????
    16. combiner函数
      1. 集群上的可用带宽限制 MapReduce作业的数量,因此尽量避免map和reduce任务之间的数据传输时有利的。
      2. Hadoop允许用户针对map任务的输出指定一个combiner
      3. combiner接口与reduce相同,代码也可与reduce完全相同,但不能以偏概全,例如,求平均值的reduce代码,不能用于combiner
      4. combiner的作用:将map的结果预先reduce。
    17. MapReduce框架保证了键的有序性
    18. 通过Hadoop Streaming ,可以使用非java语言,实现mapreduce计算架构;
    19. 通过Hadoop Streaming ,利用Hadoop的job管理功能,实现ruby、shell的mapreduce计算
    20. Hadoop Streaming 使用Unix标准流作为Hadoop和应用程序之间的接口,所以我们可以使用任何编程语言通过标准输入输出来写Mapreduce程序。
    21. Hadoop Streaming 语法
      1.         hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-*.jar \
      2.             -input input/ncdc/sample.txt \
      3.             -output output \
      4.             -mapper xxx.rb \
      5.       -reducer yyy.rb

      

posted on 2018-04-07 00:28  手握太阳  阅读(126)  评论(0编辑  收藏  举报

导航