集群部署YARN

翻译: https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_yarn_cluster_deploy.html#topic_11_4
版本: 5.14.2

重要:

  • 在不使用Cloudera Manager的系统上遵循这些命令行指示信息。
  • 此信息特别适用于CDH 5.14.X。有关其他版本的信息,请参阅Cloudera文档。

本节仅介绍YARN群集的配置,专门针对从软件包安装YARN的管理员量身定制。

重要:
在配置和部署HDFS后执行以下任务:

继续阅读:

  1. 关于MapReduce v2(YARN)
  2. 第1步:配置YARN集群的属性
  3. 第2步:配置YARN守护进程
  4. 第3步:配置JobHistory服务器
  5. 第4步:配置staging目录
  6. 第5步:如果有必要,请将自定义配置部署到整个群集
  7. 步骤6:如果必要,请在群集中的每台主机上启动HDFS
  8. 步骤7:如有必要,创建HDFS / tmp目录
  9. 第8步:创建历史目录并设置权限
  10. 第9步:启动YARN和MapReduce JobHistory服务器
  11. 第10步:为每个MapReduce用户创建一个主目录
  12. 第11步:配置Hadoop守护进程在启动时运行

注意: 运行服务

使用service命令来启动,停止和重新启动CDH组件,而不是直接在/etc/init.d中运行脚本。

关于MapReduce v2(YARN)

CDH 5中默认安装是基于YARN框架构建的MapReduce 2 (MRv2)。在本文档中,我们通常将这个新版本称为 YARN。MRv2的YARN体系结构的基本思想是将JobTracker的两个主要职责 - 资源管理和作业调度/监视 - 分解为单独的守护进程:全局的ResourceManager(RM)和每个应用程序的ApplicationMasters(AM)。使用MRv2,ResourceManager(RM)和per-host NodeManagers(NM)构成数据计算框架。ResourceManager服务有效地替代了JobTracker的功能,并且NodeManagers替代TaskTracker守护进程在工作主机上运行。ApplicationMaster实际上是一个特定的框架库,它负责与ResourceManager协商资源并与NodeManager一起运行和监视任务。有关新体系结构的详细信息,请参阅Apache Hadoop NextGen MapReduce(YARN)。

另请参阅为作业选择适当的JAR文件。

重要:
确保你没有试图在同一主机上同时运行MRv1和YARN。建议不要这样做,特别是在不受Cloudera Manager管理的群集中; 它会降低性能并可能导致群集不稳定。

  • 如果您已经从软件包安装了YARN,请按照以下说明进行部署。(改为部署MRv1,请参阅 在群集上部署MapReduce v1(MRv1)。)
  • 如果您从tarball安装了CDH 5,则默认部署为YARN。请记住,此页面上的说明适用于从软件包安装后进行的部署。

第1步:配置YARN集群的属性

注意:
在您复制Hadoop配置时创建的自定义配置目录中编辑这些文件。完成后,将此配置推送到群集中的所有主机; 请参阅步骤5。

属性 配置文件 描述
mapreduce.framework.name mapred-site.xml 如果您打算运行YARN,则必须将此属性设置为yarn

示例配置:

mapred-site.xml中:


 mapreduce.framework.name
 yarn

第2步:配置YARN守护进程

配置以下服务:ResourceManager(在专用主机上)和NodeManager(在计划运行MapReduce v2作业的每台主机上)。

下表显示了您必须为集群配置的yarn-site.xml 中最重要的属性。

属性 建议值 描述
yarn.nodemanager.aux-services mapreduce_shuffle 需要为Map Reduce应用程序设置的Shuffle服务。
yarn.resourcemanager.hostname resourcemanager.company.com 以下属性将设置为此主机上的默认端口:yarn.resourcemanager. address, yarn.resourcemanager. admin.address, yarn.resourcemanager. scheduler.address, yarn.resourcemanager. resource-tracker.address, yarn.resourcemanager. webapp.address
yarn.application.classpath $HADOOP_CONF_DIR, $HADOOP_COMMON_HOME/, $HADOOP_COMMON_HOME/lib/, $HADOOP_HDFS_HOME/, $HADOOP_HDFS_HOME/lib/, $HADOOP_MAPRED_HOME/, $HADOOP_MAPRED_HOME/lib/, $HADOOP_YARN_HOME/, $HADOOP_YARN_HOME/lib/ 应用程序的类路径Classpath。
yarn.log.aggregation-enable true

接下来,您需要指定,创建并将正确的权限分配给您希望YARN守护程序存储数据的本地目录。

您可以通过配置所有群集主机上的yarn-site.xml中的以下两个属性来指定目录:

属性 描述
yarn.nodemanager.local-dirs 指定NodeManager存储其本地化文件的目录的URI。运行特定YARN应用程序所需的所有文件将在应用程序运行期间放在这里。Cloudera建议为此属性在每个JBOD安装点上指定一个目录; 例如,file:///data/1/yarn/local 到 /data/N/yarn/local。
yarn.nodemanager.log-dirs 指定NodeManager存储容器日志文件的目录的URI。Cloudera建议为此属性在每个JBOD安装点上指定一个目录; 例如,file:///data/1/yarn/logs 到 file:///data/N/yarn/logs.
yarn.nodemanager.remote-app-log-dir 指定聚合日志的目录的URI。将该值设置为hdfs://namenode-host.company.com:8020/var/log/hadoop-yarn/apps (使用NameNode的完全限定名) hdfs:/var/log/hadoop-yarn/apps.。

这是一个示例配置:

**yarn-site.xml: **

  
    yarn.resourcemanager.hostname
    resourcemanager.company.com
     
  
    Classpath for typical applications.
    yarn.application.classpath
    
        $HADOOP_CONF_DIR,
        $HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,
        $HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,
        $HADOOP_MAPRED_HOME/*,$HADOOP_MAPRED_HOME/lib/*,
        $HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*
    
  
  
    yarn.nodemanager.aux-services
    mapreduce_shuffle
  
  
    yarn.nodemanager.local-dirs
    file:///data/1/yarn/local,file:///data/2/yarn/local,file:///data/3/yarn/local
  
  
    yarn.nodemanager.log-dirs
    file:///data/1/yarn/logs,file:///data/2/yarn/logs,file:///data/3/yarn/logs
  
  
    yarn.log.aggregation-enable
    true 
    
  
    Where to aggregate logs
    yarn.nodemanager.remote-app-log-dir
    hdfs://:8020/var/log/hadoop-yarn/apps
  

在yarn-site.xml 中指定这些目录后,您必须创建目录并为群集中每台主机上的目录分配正确的文件权限。

在以下说明中,本地路径示例用于表示Hadoop参数。更改路径示例以匹配您的配置。

配置YARN使用的本地存储目录:

  1. 创建yarn.nodemanager.local-dirs 本地目录:
$ sudo mkdir -p /data/1/yarn/local /data/2/yarn/local /data/3/yarn/local /data/4/yarn/local
  1. 创建 yarn.nodemanager.log-dirs 本地目录:
$ sudo mkdir -p /data/1/yarn/logs /data/2/yarn/logs /data/3/yarn/logs /data/4/yarn/logs
  1. 配置 yarn.nodemanager.local-dirs 的所有者 yarn 用户:
$ sudo chown -R yarn:yarn /data/1/yarn/local /data/2/yarn/local /data/3/yarn/local /data/4/yarn/local
  1. 配置yarn.nodemanager.log-dirs 的所有者yarn 用户:
$ sudo chown -R yarn:yarn /data/1/yarn/logs /data/2/yarn/logs /data/3/yarn/logs /data/4/yarn/logs

以下是本地目录的正确所有者和权限摘要:

目录 所有者 权限
yarn.nodemanager.local-dirs yarn:yarn drwxr-xr-x
yarn.nodemanager.log-dirs yarn:yarn drwxr-xr-x

第3步:配置JobHistory服务器

如果您决定在群集上运行YARN而不是MRv1,则还应该运行MapReduce JobHistory Server。下表显示了您在mapred-site.xml中必须配置的最重要的属性。

属性 建议值 描述
mapreduce.jobhistory.address historyserver.company.com:10020 JobHistory服务器的地址 host:port
mapreduce.jobhistory.webapp.address historyserver.company.com:19888 JobHistory服务器Web应用程序的地址host:port

另外,请确保代理已对mapred 用户启用 ; 在 core-site.xml中配置以下属性。

属性 建议值 描述
hadoop.proxyuser.mapred.groups * 允许 mapred 用户移动属于这些组中的用户的文件
hadoop.proxyuser.mapred.hosts * 允许mapred用户移动属于这些主机的文件

第4步:配置Staging目录

YARN运行作业时需要一个临时目录来存放临时文件。默认情况下它会创建具有严格限制权限的目录/tmp/hadoop-yarn/staging ,这个权限可能会阻止其他用户运行作业。为了避免这种情况,你应该自己配置和创建Staging 目录; 在下面的例子中我们/user:

  1. 在mapred-site.xml配置 yarn.app.mapreduce.am.staging-dir:

    yarn.app.mapreduce.am.staging-dir
    /user

  1. 一旦HDFS启动并运行,您将创建该目录和一个history 子目录下(参见步骤8)。

或者,您可以执行以下操作:

  1. 在mapred-site.xml中 配置mapreduce.jobhistory.intermediate-done-dir and mapreduce.jobhistory.done-dir 。
  2. 创建这两个目录。
  3. 设置权限 mapreduce.jobhistory.intermediate-done-dir 为 1777。
  4. 设置权限 mapreduce.jobhistory.done-dir 为750。

如果你按上述配置了mapreduce.jobhistory.intermediate-done-dir and mapreduce.jobhistory.done-dir ,您可以跳过步骤8。

第5步:如果有必要,请将自定义配置部署到整个群集

如果您尚未这样做,请部署配置。

步骤6:如果必要,请在群集中的每台主机上启动HDFS

如果您尚未这样做,请启动HDFS。

步骤7:如有必要,创建HDFS / tmp目录

如果您尚未这样做,请创建/ tmp目录。

重要:

如果你不创建 / tmp目录限,您以后可能会遇到CDH组件的问题。具体来说,如果你不创建/ tmp目录,另一个进程可能会自动创建限制性权限,以防止其他应用程序使用它,会造成其他组件无法正常使用该目录。

步骤5 6 7 请参见 上篇翻译: 集群部署HDFS

第8步:创建history 目录和设置权限

这是您在步骤4中配置的staging目录的子目录。在这个例子中,我们使用/user/history。创建并设置权限,如下所示:

sudo -u hdfs hadoop fs -mkdir -p /user/history
sudo -u hdfs hadoop fs -chmod -R 1777 /user/history
sudo -u hdfs hadoop fs -chown mapred:hadoop /user/history

第9步:启动YARN和MapReduce JobHistory服务器

要启动YARN,请启动ResourceManager和NodeManager服务:

注意:

确保在启动NodeManager服务之前先启动ResourceManager。

在ResourceManager系统上:

$ sudo service hadoop-yarn-resourcemanager start

在每个NodeManager系统上(通常与运行DataNode服务的系统相同):

$ sudo service hadoop-yarn-nodemanager start

启动MapReduce JobHistory服务器

在MapReduce JobHistory服务器系统上:

$ sudo service hadoop-mapreduce-historyserver start

第10步:为每个MapReduce用户创建一个主目录

在NameNode上为每个MapReduce用户创建一个主目录。例如:

$ sudo -u hdfs hadoop fs -mkdir  /user/
$ sudo -u hdfs hadoop fs -chown  /user/

其中是每个用户的Linux用户名。

或者,您可以以每个Linux用户身份登录(或者编写脚本来执行此操作),然后按照以下步骤创建主目录:

sudo -u hdfs hadoop fs -mkdir /user/$USER
sudo -u hdfs hadoop fs -chown $USER /user/$USER

第11步:配置Hadoop守护进程在启动时运行

使用chkconfig 工具进行配置。
对于Hadoop核心服务配置随机器启动,参见 Configuring init to Start Core Hadoop System Services.

非核心组件也可以配置随机器启动,在安装后参见 Configuring init to Start Non-core Hadoop System Services for instructions.

你可能感兴趣的:(集群部署YARN)