• 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

          

  • 相关阅读:
    面试题6 重建二叉树
    面试题5 从尾到头打印链表
    面试题4 替换空格
    面试题3 二维数组中查找
    面试题2 单例
    C++ 强制类型转换
    C++ 11 新特性
    STL 函数对象
    STL 算法
    OpenSSH多路复用Multiplexing配置
  • 原文地址:https://www.cnblogs.com/jiangtao1218/p/8729546.html
Copyright © 2020-2023  润新知