电子科技大学成都学院实践专周设计报告
1.2.2 扩展功能
1.编写手机拨打电信、联通、移动特殊号码的统计应用。 2.倒排索引的实现。
3.Hadoop集群环境搭建,需调用jps命名启动5个服务进程。
1.3 设计思路
环境搭建 1、安装前的准备
完成分布式集群环境的搭建,一个master节点,两个slave节点,在hosts中添加主从节点的IP地址。在hostname中修改主机名,并使其生效。在主要点中添加相应从节点的IP。在yarn-env.sh中添加Java_home的路径。
2、安装JDK JDK安装较为简单。
使用VMware Workstation 安装了3个RHEL 5.2系统。装好一个RHEL,并且安装好JDK,再利用VMware Workstation的克隆功能完成另外两个的安装。
3、更改主机名 IP设置:
Master:10.18.5.116 Slave1:10.18.6.77 Slave2:10.18.6.33
1.4 功能描述
步骤1:用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
2
第1章 引 言
步骤2:ResourceManager为该应用程序分配第一个Container(这里可以理解为一种资源比如内存),并与对应的Node-Manager通信,要求它在这个Container中启动应用程序的ApplicationMaster。
步骤3:ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManage查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。
步骤4:ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。
步骤5:一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。
步骤6:NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
步骤7:各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。
步骤8:应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己)。
1.5 设计过程
在hosts中添加主从节点的IP地址。 在hostname中修改主机名,并使其生效。 在主节点中添加相应从节点的IP。 在yarn-env.sh中添加Java_home的路径。 在hadoop-env.sh中修改Java_home的路径。
3
电子科技大学成都学院实践专周设计报告
第2章 相关技术简介
2.1 Hadoop平台介绍
Hadoop自身包括以下内容:Hadoop Common: hadoop的基础,Hadoop Distributed File System (HDFS): 分布式文件系统,Hadoop YARN: 集群任务资源管理及任务调度的框架,Hadoop MapReduce: 基于YARN的分布式计算。
MRAppMaster是MapReduce的ApplicationMaster实现,它使得MapReduce应用程序可以直接运行于YARN之上。在YARN中, MRAppMaster负责管理MapReduce作业的生命周期,包括作业管理、资源申请与再分配、Container启动与释放、作业恢复等。
图2-1 Hadoop结构
2.2 MapReduce并行程序设计
2.2.1 Map函数
1.将小数据集进一步解析成一批
4
第2章 简介技术相关
2.2.2 Reduce函数
输入的中间结果
2.2.3 MapReduce计算模型的优化
1.任务调度:
计算方面:Hadoop会优先将任务分配给空闲的机器,已达到公平分享系统资源的目的。
IO方面:Hadoop会尽量将Map任务分配给“输入分片(InputSplit)”所在机器,以减少IO的消耗。
2.数据预处理与输入分片的大小: MapReduce任务擅长处理少量的大数据
若是大量的小数据,则选择先对数据进行一次预处理,将数据合并以提高MapReduce任务的执行效率。
或当一个Map任务运行只需几秒时,考虑多分配些数据,让其处理。 通常,一个Map任务运行60秒左右是比较合适的。 3.Map和Reduce任务的数量
Map/Reduce任务槽:这个集群能够同时运行的Map/Reduce任务的最大数量。 任务槽帮助对任务调度进行设置。
设置Map数量主要参考Map运行的时间,设置Reduce任务的数据量参考任务槽的设置,即Reduce任务数是任务槽的0.95或1.75倍。
4.Combine函数
用于本地合并数据的函数。
作用:某些数据在本地会产生很多相同重复的数据,若此时一个一个传递给Reduce任务是非常耗时的;因此,MapReduce框架运行Combine函数用于本地合并,这会大大减少IO操作的消耗。
合理设计该函数能有效减少网络传输的数据量,提高MapReduce的效率。 5.压缩
5
电子科技大学成都学院实践专周设计报告
对Map的中间结果输出和最终结果输出,进行压缩 作用:减少网络传输。
有副作用,请根据实际情况来选择。
图2-2 MapReduce体系图
2.3 HDFS简介
HDFS是Hadoop项目的核心子项目,是Hadoop主要应用的一个分布式文件系统。HDFS非常适合用在商用硬件上作分布式存储和计算,因为它具有高容错性和可扩展性;HDFS可配置性极高;使用Java语言开发,支持所有主流平台;支持类shell命令,可直接和HDFS进行交互;NameNode和DataNode有内置的Web服务器。HDFS以流式数据访问模式来存储超大文件,运行于商用硬件集群上。
2.3.1 HDFS节点
HDFS是一个主从结构,一个HDFS集群是由一个名字节点,它是一个管理文件命名空间和调度客户端访问文件的主服务器,当然还有一些数据节点,通常是一个节点一个机器,它来管理对应节点的存储。HDFS对外开放命名空间并允许用户以文件形式存储。 2.3.2 关于NameNode
管理文件系统的命名空间。
6