`

Hadoop初学-mapreduce

 
阅读更多

看完hadoop权威指南第一,二章,初步了解了hadoop的结构和相关生态,主要详细从第二章mapreduce学习开始,现总结备查。

 

什么是mapreduce?

读完后,就问自己什么是mapreduce,想自己理解归纳下。

mapreduce是一种分布式的并行计算编程模型。主要把计算分map和reduce两个阶段。

  1. map阶段是把原始输入数据分为多块输入到多个map函数中进行并行的逻辑处理和排序,然后输出中间结果;
  2. reduce阶段是以map阶段的多个输出汇聚后,作为reduce函数的输入,再由reduce函数进行汇总逻辑计算,然后输出最后结果。

两个阶段都是通过KEY/VALUE的方式作为输入和输出。一般map的输入可以是文件格式(如文件行号作为KEY,每行数据作为VALUE)。

 

hadoop的mapreduce工作模式

hadoop中的mapreduce是由job控制和执行的。一个job包括:输入数据,mapreduce程序和配置。

  • 准备输入数据到hadoop的HDFS(分布是文件系统,同时负责把原始输入数据分割个小块,也叫分片。),由namenode主节点控制分片逻辑和元数据,分别保存在多个datanode节点机上。
  • jobtracker(任务主控机,和HDFS的namenode一般在一台机器上)生成多个task,协调多个tasktracker来分别并行执行计算。通常在存储输入数据分片的每个datanode上运行计算(数据就近计算优化:data locality optimization)
  • 一般来说,hadoop为每个分片构建一个map任务,在jobtracker的协调下由tasktracker进行运算,然后把多map任务的输出排序后,通过网络发送给一个reduce任务节点(也是tasktracker,由jobtracker协调),合并数据后由reduce函数继续计算处理并输出最后结果。
  • 关于分片的大小:如果太小,片总数量多,管理和协调分片及计算的时间和构建map任务的时间想多较多;如果太大,并行计算的任务数太小,负载平衡的效果则受到影响。原始数据的分片在hadoop的HDFS中一般是64M,但是可以根据实际情况进行参数调整。
  • map的计算结果是中间结果一般保存在节点本地磁盘,因为中间结果是临时的,不需要写多份;reduce的最终结果保存在HDFS上。



 书中hadoop-HDFS的数据量

 


原始数据的输入有推和拉两种方式

  • 推一般是0.20版本前的JAVA-API提供的每次map函数只读取一行的处理方式(也可以使用实例变量保持每次读取的数据,然后在批量处理,实现拉方式);
  • 拉方式是0.20后的新API提供的UNIX标准流方式进行输入输出,这就和JAVA-IO的处理方式一样,由read来控制读取的数量多少和处理时机。

 

hadoop的流(streaming)

hadoop的mapreduce程序框架提供了UNIX标志流作为hadoop和应用程序间的接口,所以可以使用任何支持标志输入/输出流的语音进行mapreduce程序开发(基本大部分语音都支持,呵呵)。

 

本节无源代码,因为主要是理论,代码也是书上的示例,拷贝无意义。

 

  • 大小: 67.9 KB
分享到:
评论

相关推荐

    Hadoop-0.20.0-HDFS+MapReduce+Hive+HBase十分钟快速入门

    标题与描述中的关键词“Hadoop-0.20.0-HDFS+MapReduce+Hive+HBase十分钟快速入门”揭示了文章旨在介绍Hadoop生态中几个关键组件的基础使用,尤其是针对初学者如何在短时间内掌握这些技术。下面,我们将深入探讨...

    好用的hadoop-eclipse-plugin-2.6.4.jar

    《Hadoop-Eclipse-Plugin-2.6.4.jar:Eclipse中的Hadoop开发利器》 ...对于希望进入Hadoop开发领域的初学者,或者正在寻找提高开发效率的专业人士,Hadoop-Eclipse-Plugin-2.6.4都是值得推荐的选择。

    hadoop-eclipse-plugin-2.6.0.jar.zip_2.6.0_hadoop_hadoop plugin

    《Hadoop Eclipse Plugin 2.6.0:高效开发与测试工具》 Hadoop作为大数据处理的核心框架,为开发者提供了强大的...对于Hadoop初学者和专业开发者来说,熟练掌握并运用这款插件,无疑是提升开发体验和工作效率的关键。

    Hadoop-MapReduce项目代码ZIP压缩包 + 面向小白(注释详细清晰)

    总之,这个Hadoop-MapReduce项目代码压缩包是一个极好的学习资源,通过它,初学者可以深入理解MapReduce的工作机制,并掌握如何在IDEA中进行Hadoop开发。详细的注释使得学习过程更为轻松,同时也为实践应用打下了...

    hadoop-eclipse-plugin-1.1.2

    这个插件使得Java开发者能够在熟悉的Eclipse环境中无缝地创建、调试和管理Hadoop MapReduce项目,极大地提高了开发效率。 1. **Hadoop概述** Hadoop是一个开源框架,由Apache软件基金会维护,用于存储和处理大数据...

    hadoop-eclipse-plugin-2.7.2.rar

    Hadoop Eclipse Plugin是Apache Hadoop项目的一个重要组成部分,主要用于在Eclipse集成开发环境中方便地创建、管理和调试Hadoop ...如果你是Hadoop初学者或者希望提升开发效率,掌握这个插件的使用将对你大有裨益。

    hadoop-eclipse-plugin-2.6.5.jar插件下载

    《Hadoop Eclipse Plugin ...对于初学者而言,它降低了学习Hadoop的门槛;对于经验丰富的开发者,它提供了更高效的工作方式。无论是个人还是团队,都应该充分利用这款强大的插件,提升Hadoop项目开发的效率和质量。

    hadoop-eclipse-plugin-2.2.0.zip

    《Hadoop Eclipse Plugin 2.2.0:整合Hadoop与Eclipse的开发利器》 在大数据处理领域,Hadoop作为开源的分布式计算框架,扮演着至...无论是初学者还是经验丰富的开发者,都能从中受益,更便捷地驾驭Hadoop的广阔天地。

    hadoop-mapreduce

    在这个项目中,会列出Hadoop和MapReduce相关的库,如`hadoop-client`、`hadoop-mapreduce-client-core`等,确保项目能够正常运行。 2. **src/main/java**:源代码目录,包含MapReduce作业的Java实现。通常会有...

    hadoop学习---运行第一个hadoop实例.docx

    1. **运行WordCount**:通过执行命令`hadoop jar /usr/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount /input /output`来启动WordCount任务。这里需要注意的是,具体的Hadoop版本和...

    hadoop-2.7.4-with-windows.tar.gz

    标题中的"hadoop-2.7.4-...总的来说,这个压缩包提供了一个在Windows上快速启动和运行Hadoop 2.7.4的解决方案,避免了手动配置和解决跨平台兼容性问题的麻烦,适合开发者和初学者在本地进行Hadoop相关的开发和学习。

    hadoop-2.8.3-eclipse-plugin插件包

    对于初学者,了解Hadoop的基本概念和MapReduce编程模型至关重要。MapReduce分为Map阶段和Reduce阶段,Map将大任务拆分成小任务并行处理,Reduce则对Map的结果进行聚合。同时,理解Hadoop的配置文件和YARN资源调度器...

    hadoop-common-2.2.0-bin-master

    对于初学者来说,这是一个宝贵的资源,可以帮助快速理解和启动Hadoop环境。 五、Hadoop Common 2.2.0的新特性与改进 - 安全性增强:2.2.0版本在安全性方面进行了加强,支持Kerberos认证,增强了数据保护。 - 文件...

    hadoop1-2-1源码

    这个例子可以帮助初学者理解MapReduce的工作原理,如何定义Map函数来分割和处理数据,以及如何编写Reduce函数来聚合结果。 通过对Hadoop 1.2.1源码的学习,开发者可以深入理解分布式系统的内部工作原理,这对于优化...

    hadoop -1.2.1-jar(全)

    4. **hadoop-examples-1.2.1.jar**:此JAR包提供了几个示例程序,演示了如何使用Hadoop MapReduce进行简单的数据处理任务,如WordCount、PiEstimator等,这些示例对于初学者理解Hadoop的工作原理非常有帮助。...

    hadoop-2.6.0-cdh5.7.0.tar.gz和jdk-7u80-linux-x64.tar.gz安装包

    Hadoop的核心由两个主要部分组成:Hadoop Distributed File System (HDFS) 和 MapReduce。HDFS是一个分布式文件系统,它允许数据在多台机器上进行存储和处理,提高了数据的可用性和容错性。MapReduce是Hadoop的并行...

    hadoop-0.20.2-eclipse-plugin 插件

    Hadoop-0.20.2-Eclipse-Plugin是一个经典的插件,专为Eclipse集成开发环境(IDE)设计,旨在提升Hadoop开发者的工作效率。...对于初学者和经验丰富的Hadoop开发者来说,这种集成开发环境的增强都是一个巨大的福音。

    ant打包hadoop-eclipse-plugin

    在本文中,我们将深入探讨如何使用Apache Ant工具在Windows环境下打包Hadoop-eclipse-plugin,这是一个允许开发者在Eclipse IDE中创建和调试Hadoop ...对于Hadoop初学者和专业开发者来说,熟悉这个流程是十分必要的。

    hadoop-2.7.4-with-centos-6.7.tar.gz

    Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的出现为大数据处理提供了高效、可靠的解决方案。...无论是对Hadoop感兴趣的初学者,还是需要在生产环境中部署Hadoop的开发者,都能从中受益。

    Hadoop-MapReduce-by-Example:所有Hadoop&Map Reduce示例

    《Hadoop-MapReduce-by-Example:所有Hadoop与Map Reduce示例》是关于大数据处理领域的一个重要资源,尤其对于初学者来说,它提供了一系列实际的案例,帮助理解Hadoop和MapReduce的核心概念。Hadoop是Apache软件基金...

Global site tag (gtag.js) - Google Analytics