《深入理解Hadoop(原书第2版)》——3.3一个MapReduce程序的组成

3.3一个MapReduce程序的组成

本节介绍基于Java语言的MapReduce程序由哪些部分构成。下文逐一讲解了各个组成部分:

  • Java程序客户机(Client Java program):一个Java程序,由集群中的一个客户端节点(又被称为边缘节点)提交运行。这个客户端节点可以访问Hadoop集群,它经常(并不总是)由集群中的一个数据节点来充当。该节点仅是集群中的一台机器,并且有权限访问Hadoop。
  • 自定义Mapper类(Custom Mapper class):除非在最简单的应用场景下,MapReduce程序中的这个Mapper类通常是一个用户自定义类。如果不是在伪集群模式下运行MapReduce程序作业,这个类的实例会在远程任务节点上执行。这些任务节点往往与用来提交作业程序的客户端节点不同。
  • 自定义Reducer类(Custom Reducer class):除非在最简单的应用场景下,MapReduce程序中的这个Reducer类通常是一个用户自定义类。与Mapper类一样,如果不是在伪集群模式下运行MapReduce程序作业,这个类的实例会在远程任务节点上执行。这些任务节点往往与用来提交作业程序的客户端节点不同。
  • 客户端函数库(Client-side libraries):客户端函数库不同于Hadoop系统的标准函数库,这个函数库是在客户端运行期间使用的。客户端需要使用的Hadoop系统的标准函数库已经安装,并且使用通过Hadoop的Client命令(这与客户端程序不同)配置到CLASSPATH中。我们在文件夹$HADOOP_HOME/bin/中可以找到它,其名称为hadoop。就像Java命令用来执行一个Java程序,hadoop命令用来执行客户端程序,该程序会启动一个Hadoop作业。这些函数库都被配置到了环境变量HADOOP_CLASSPATH中。这个变量与CLASSPATH变量一样,是一个冒号分隔的函数列表。
  • 远程函数库(Remote libraries):这个函数库是用户自定义Mapper类和 Reducer类所需要的。这个远程函数库不包括Hadoop系统自带的函数库,因为Hadoop系统自带的函数库已经在每个数据节点都配置好了。举个例子,如果Mapper类用到了一个特殊的XML解析器,包含这个解析器的函数库就必须要被传输到执行这个Mapper类实例的远程数据节点。
  • Java程序档案文件(Java Application Archive (JAR) files):Java程序以JAR文件的形式打包,这个JAR文件中包括了客户端Java类,以及用户自定义Mapper 和 Reducer类。还包括了客户端Java类、Mapper类和Reducer类用到的其他自定义依赖类。
时间: 2024-08-18 19:13:25

《深入理解Hadoop(原书第2版)》——3.3一个MapReduce程序的组成的相关文章

《深入理解Hadoop(原书第2版)》——导读

前 言 Hadoop已经进入Apache社区发展五年多了,使用Hadoop系统进行开发的工作仍然富于挑战但收获丰厚.本书第1版在若干年前就已经出版了,在这期间,Hadoop系统已经被越来越多的企业使用,自身也得到了飞速发展. Hadoop2.0基于YARN框架做了全新升级,重写了Hadoop系统的底层平台.本书从Hadoop使用者的角度出发讲解Hadoop的实现原理,浓缩了Hadoop软件系统的精华.作为作者,我们希望可以深入到源代码级别来理解Hadoop的运行原理及其背后的设计目标,渴望与你分

《深入理解Hadoop(原书第2版)》——第2章 Hadoop中的概念 2.1 Hadoop简介

第2章 Hadoop中的概念 价格实惠的普通计算机经常满足不了应用程序的计算资源需求,很多企业的业务应用程序已经不再适合在单台廉价的计算机上运行.这时,一个简单昂贵的解决方案就是购买一些具有多CPU的高端服务器,这通常需要巨额资金.只要能买到最高端的服务器,这个解决方案就能够达到理想的效果,但预算往往是个大问题.另一个替代方案,就是搭建一个高可用的集群,这个集群经过专业的安装和精心的管理服务,使用起来就像一台计算机一样.很多高可用的集群都是企业专有的而且价格也十分贵. 为了获取所需的计算资源,一

《深入理解Hadoop(原书第2版)》——3.4第一个Hadoop程序

3.4第一个Hadoop程序 本节中,你将开发你的第一个Hadoop程序.开发此程序使用的开发环境是带有Maven插件的Eclipse.如果你使用Cloudera公司的虚拟机,开发环境已经预先安装于其中了.附录B讲解了如何在Eclipse中创建一个Maven工程. 首先创建一个空的Maven工程,并将所需依赖库添加其中.项目对象模型(Project Object Model,POM)如代码清单3-1所示.创建一个文件名为pom.xml的文件,把代码清单3-1中的代码拷贝到该文件中. 现在可以开发

《深入理解Hadoop(原书第2版)》——2.6本章小结

2.6本章小结 本章介绍了Hadoop系统的各种概念.从一个典型的单词计数程序示例开始,一步步地介绍了Hadoop系统的各种特性.介绍了Hadoop分布式文件系统(HDFS),介绍了Hadoop1.x系统中是如何通过作业跟踪器守护进程和任务跟踪器守护进程来管理作业的.认识到了这些守护进程限制了系统的可扩展性之后,我们引入了YARN的讲解.YARN是Hadoop2.x系统的重要特性,解决了系统扩展性的问题.最后,我们讲解了高可用名称节点. 下面的章节,我们会介绍Hadoop系统的安装,还会教你编写

《机器学习与R语言(原书第2版)》一2.3 探索和理解数据

本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第2章,第2.3节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问"华章计算机"公众号查看. 2.3 探索和理解数据 在收集数据并把它们载入R数据结构以后,机器学习的下一个步骤是仔细检查数据.在这个步骤中,你将开始探索数据的特征和案例,并且找到数据的独特之处.你对数据的理解越深刻,你将会更好地让机器学习模型匹配你的学习问题. 理解数据探索的最好方法就是通过例子.在

《机器学习与R语言(原书第2版)》一 第2章 数据的管理和理解

本节书摘来自华章出版社<机器学习与R语言(原书第2版)>一书中的第2章,第2.1节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问"华章计算机"公众号查看. 第2章 数据的管理和理解 任何机器学习项目初期的核心部分都是与管理和理解所收集的数据有关的.尽管你可能发现这些工作不像建立和部署模型那样令人有成就感(建立和部署模型阶段就开始看到了劳动的成果),但是忽视这些重要的准备工作是不明智的.任何学习算法的好坏取决于输入数据的好坏.

Java核心技术 卷Ⅰ 基础知识(原书第10版)

Java核心技术系列 Java核心技术 卷Ⅰ 基础知识 (原书第10版) Core Java Volume I-Fundamentals (10th Edition) [美] 凯S.霍斯特曼(Cay S. Horstmann) 著 周立新 陈 波 叶乃文 邝劲筠 杜永萍 译 图书在版编目(CIP)数据 Java核心技术 卷Ⅰ 基础知识(原书第10版) / (美)凯S. 霍斯特曼(Cay S. Horstmann)著:周立新等译. -北京:机械工业出版社,2016.8 (Java核心技术系列) 书

ROS机器人程序设计(原书第2版).

机器人设计与制作系列 ROS机器人程序设计 (原书第2版) Learning ROS for Robotics Programming,Second Edition 恩里克·费尔南德斯(Enrique Fernández) 路易斯·桑切斯·克雷斯波(Luis Sánchez Crespo) 阿尼尔·马哈塔尼(Anil Mahtani) 亚伦·马丁内斯(Aaron Martinez) 著 刘锦涛 张瑞雷 等译 图书在版编目(CIP)数据 ROS机器人程序设计(原书第2版) / (西)恩里克·费尔南

《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一导读

前 言 致读者 本书是按照Java SE 8完全更新后的<Java核心技术 卷Ⅱ 高级特性(原书第10版)>.卷Ⅰ主要介绍了Java语言的一些关键特性:而本卷主要介绍编程人员进行专业软件开发时需要了解的高级主题.因此,与本书卷Ⅰ和之前的版本一样,我们仍将本书定位于用Java技术进行实际项目开发的编程人员. 编写任何一本书籍都难免会有一些错误或不准确的地方.我们非常乐意听到读者的意见.当然,我们更希望对本书问题的报告只听到一次.为此,我们创建了一个FAQ.bug修正以及应急方案的网站http:/