配置使用分布式缓存执行MapReduce任务
配置场景
本章节操作适用于MRS 3.x及之后版本。
分布式缓存在两种情况下非常有用。
- 滚动升级
在升级过程中,应用程序必须保持文字内容(jar文件或配置文件)不变。而这些内容并非基于当前版本的Yarn,而是要基于其提交时的版本。一般情况下,应用程序(例如MapReduce、Hive、Tez等)需要进行完整的本地安装,将库安装至所有的集群机器(客户端及服务器端机器)中。当集群内开始进行滚动升级或降级时,本地安装的库的版本必然会在应用运行过程时发生改变。在滚动升级过程中,首先只会对少数NodeManager进行升级,这些NodeManager会获得新版本的软件。这导致了行为的不一致,并可能发生运行时错误。
- 同时存在多个Yarn版本
集群管理员可能会在一个集群内运行使用多个版本Yarn及Hadoop jars的任务。这在当前很难实现,因为jars已被本地化且只有一个版本。
MapReduce应用框架可以通过分布式缓存进行部署,且无需依赖安装中复制的静态版本。因此,可以在HDFS中存放多版本的Hadoop,并通过配置“mapred-site.xml”文件指定任务默认使用的版本。只需设置适当的配置属性,用户就可以运行不同版本的MapReduce,而无需使用部署在集群中的版本。
在图1中:可以看出,应用程序可以使用HDFS中的Hadoop jars,而无需使用本地版本。因此在滚动升级中,即使NodeManager已经升级,应用程序仍然可以运行旧版本的Hadoop。
配置描述
- 进入HDFS客户端。
- 将指定版本的MapReduce tar包存放至HDFS中应用程序可以访问的目录下,如下所示:
$HADOOP_HOME/bin/hdfs dfs -put hadoop-x.tar.gz /mapred/framework/
- 执行以下命令,根据表1,对“客户端安装路径/Yarn/config/mapred-site.xml”文件中的参数进行设置。
vi 客户端安装路径/Yarn/config/mapred-site.xml
表1 分布式缓存相关参数 参数
说明
默认值
mapreduce.application.framework.path
此参数值为指向存档位置的URL。
说明:如果对URL片段标示名称进行如下指定,该属性还可以为存档创建别名。作为示例,这里将别名设为了mr-framework。
<property> <name>mapreduce.application.framework.path</name> <value>hdfs:/mapred/framework/hadoop-x.tar.gz#mr-framework</value> </property>
NA
mapreduce.application.classpath
设定属性mapreduce.application.classpath,使其可以包含类目录中相关的MR jars。
说明:例如,此处利用在框架路径中使用过的别名“mr-framework”对目录进行匹配。
<property> <name>mapreduce.application.classpath</name> <value>$PWD/mr-framework/hadoop/share/hadoop/mapreduce/*:$PWD/mr-framework/hadoop/share/hadoop/mapreduce/lib/*:$PWD/mr-framework/hadoop/share/hadoop/common/*:$PWD/mr-framework/hadoop/share/hadoop/common/lib/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/lib/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/lib/*:/etc/hadoop/conf/secure</value></property>
NA
可以将多个版本的MapReduce tar包上传至HDFS。不同的“mapred-site.xml”文件可以指向不同的位置。用户在此之后可以针对特定的“mapred-site.xml”文件运行任务。以下是一个针对x版本的MapReduce tar包运行MapReduce任务的样例:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi -conf etc/hadoop-x/mapred-site.xml 10 10