文档首页/ MapReduce服务 MRS/ 组件操作指南(LTS版)/ 使用Mapreduce/ 配置使用分布式缓存执行MapReduce任务
更新时间:2024-08-16 GMT+08:00

配置使用分布式缓存执行MapReduce任务

配置场景

本章节操作适用于MRS 3.x及之后版本。

分布式缓存在两种情况下非常有用。

  • 滚动升级

    在升级过程中,应用程序必须保持文字内容(jar文件或配置文件)不变。而这些内容并非基于当前版本的Yarn,而是要基于其提交时的版本。一般情况下,应用程序(例如MapReduce、Hive、Tez等)需要进行完整的本地安装,将库安装至所有的集群机器(客户端及服务器端机器)中。当集群内开始进行滚动升级或降级时,本地安装的库的版本必然会在应用运行过程时发生改变。在滚动升级过程中,首先只会对少数NodeManager进行升级,这些NodeManager会获得新版本的软件。这导致了行为的不一致,并可能发生运行时错误。

  • 同时存在多个Yarn版本

    集群管理员可能会在一个集群内运行使用多个版本Yarn及Hadoop jars的任务。这在当前很难实现,因为jars已被本地化且只有一个版本。

    MapReduce应用框架可以通过分布式缓存进行部署,且无需依赖安装中复制的静态版本。因此,可以在HDFS中存放多版本的Hadoop,并通过配置“mapred-site.xml”文件指定任务默认使用的版本。只需设置适当的配置属性,用户就可以运行不同版本的MapReduce,而无需使用部署在集群中的版本。

    图1 具有多个版本NodeManagers及Applications的集群

    图1中:可以看出,应用程序可以使用HDFS中的Hadoop jars,而无需使用本地版本。因此在滚动升级中,即使NodeManager已经升级,应用程序仍然可以运行旧版本的Hadoop。

配置描述

  1. 进入HDFS客户端。

    1. 以客户端安装用户,登录安装客户端的节点。
    2. 执行以下命令,切换到客户端安装目录。

      cd 客户端安装路径

    3. 执行以下命令配置环境变量。

      source bigdata_env

    4. 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。

      kinit 组件业务用户

  2. 将指定版本的MapReduce tar包存放至HDFS中应用程序可以访问的目录下,如下所示:

    $HADOOP_HOME/bin/hdfs dfs -put hadoop-x.tar.gz /mapred/framework/

  3. 执行以下命令,根据表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