YARN 快速安装指南

YARN可以被看作是集群层次上的操作系统,为应用程序提供基本服务以利用大型动态和并行资源基础架构。 以任何语言编写的应用程序都可以利用任何规模集群内的Hadoop计算和存储资产。虽然受大型集群需求的驱动,但YARN能够在单个集群节点或台式机上运行。 本章中的说明允许在单台机器上安装YARN的Apache Hadoop版本2。

Apache Hadoop系统可能需要一些时间才能正确设置,并且不需要开始尝试许多YARN概念和属性。 

在开始快速入门之前,我们将提到一些背景细节,这些细节将有助于与安装。这些项目包括Linux的基本知识,软件包安装和基本系统管理命令。

基本的Apache Hadoop版本2系统有两个核心组件:

用于存储数据的Hadoop分布式文件系统(HDFS)

Hadoop YARN用于实现应用程序来处理数据

其他Apache Hadoop组件(如Pig和Hive)可以在两个核心组件安装并正常运行后添加。

配置单节点YARN集群的步骤

以下类型的安装通常称为“伪分布式”,因为它模仿分布式Hadoop集群的某些功能。当然,单台机器对于任何生产用途都不实用,也不是并行运行的。但是,小规模Hadoop安装可以提供一种学习Hadoop基础知识的简单方法。

第1步:下载Apache Hadoop

从Hadoop网站下载最新的发行版(http://hadoop.apache.org/)。 例如,以root身份执行以下操作:

# cd /root
# wget http://mirrors.ibiblio.org/apache/hadoop/common/hadoop-2.7.0/hadoop-2.7.0.tar.gz
Next create and extract the package in /opt/yarn:
# mkdir –p /opt/yarn
# cd /opt/yarn
# tar xvzf /root/hadoop-2.2.0.tar.gz

第2步:设置JAVA_HOME

对于Hadoop 2,推荐版本的Java可以在http://wiki.apache.org/hadoop/HadoopJavaVersions找到。 通常,Java Development Kit 1.6(或更高版本)应该可以工作。 对于这次安装,将使用Open Java 1.6.0_24,它是Red Hat Enterprise Linux 6.3的一部分。 确保你已经安装了可用的Java JDK; 在这种情况下,它是Java-1.6.0-openjdk RPM。 要为所有bash用户包含JAVA_HOME(其他shell必须以类似方式设置),请在/etc/profile.d中输入如下条目:

# echo "export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/" > /etc/ profile.d/java.sh

要确保此会话定义了JAVA_HOME,请运行新脚本:

# source /etc/profile.d/java.sh

第3步:创建用户和组

最好使用不同的帐户运行各种守护进程。 可以创建组中的三个帐户(yarn,hdfs,mapred),如下所示:

# groupadd hadoop
# useradd -g hadoop yarn
# useradd -g hadoop hdfs
# useradd -g hadoop mapred

第4步:制作命名节点和数据节点及日志目录

Hadoop需要具有各种权限的各种数据和日志目录。 输入以下行来创建这些目录:

# mkdir -p /var/data/hadoop/hdfs/nn
# mkdir -p /var/data/hadoop/hdfs/snn
# mkdir -p /var/data/hadoop/hdfs/dn
# chown hdfs:hadoop /var/data/hadoop/hdfs –R
# mkdir -p /var/log/hadoop/yarn
# chown yarn:hadoop /var/log/hadoop/yarn -R

接下来,移至YARN安装根目录并创建日志目录并按如下方式设置所有者和组:

# cd /opt/yarn/hadoop-2.7.0
# mkdir logs
# chmod g+w logs
# chown yarn:hadoop . –R

第5步:配置core-site.xml

从Hadoop安装路径的基础(例如/opt/yarn/hadoop-2.7.0)编辑etc / hadoop / core-site.xml文件。 原始安装的文件除了<configuration> </ configuration>标记之外不会有其他条目。 需要设置两个属性。 第一个是fs.default.name属性,它为NameNode(HDFS的元数据服务器)设置主机和请求端口名称。 第二个是hadoop.http.staticuser.user,它将默认用户名设置为hdfs。 将以下行复制到Hadoop etc / hadoop / core-site.xml文件中,并删除原始的空<configuration> </ configuration>标记。

<configuration>
       <property>
               <name>fs.default.name</name>
               <value>hdfs://localhost:9000</value>
       </property>
       <property>
               <name>hadoop.http.staticuser.user</name>
               <value>hdfs</value>
       </property>
</configuration>

第6步:配置hdfs-site.xml

从Hadoop安装路径的底部,编辑etc / hadoop / hdfs-site.xml文件。 在单节点伪分布式模式下,我们不需要或希望HDFS复制文件块。 默认情况下,HDFS保留文件系统中每个文件的三个副本以实现冗余。 在单台机器上不需要复制; 因此dfs.replication的值将被设置为1。

在hdfs-site.xml中,指定了我们在步骤4中创建的NameNode,Secondary NameNode和DataNode数据目录。这些是HDFS各组件用来存储数据的目录。 将以下行复制到Hadoop etc / hadoop / hdfs-site.xmland中,删除原来的空<configuration> </ configuration>标记。

<configuration>
 <property>
   <name>dfs.replication</name>
   <value>1</value>
 </property>
 <property>
   <name>dfs.namenode.name.dir</name>
   <value>file:/var/data/hadoop/hdfs/nn</value>
 </property>
 <property>
   <name>fs.checkpoint.dir</name>
   <value>file:/var/data/hadoop/hdfs/snn</value>
 </property>
 <property>
   <name>fs.checkpoint.edits.dir</name>
   <value>file:/var/data/hadoop/hdfs/snn</value>
 </property>
 <property>
   <name>dfs.datanode.data.dir</name>
   <value>file:/var/data/hadoop/hdfs/dn</value>
 </property>
</configuration>

第7步:配置mapred-site.xml

从Hadoop安装的基础,编辑etc / hadoop / mapred-site.xml文件。 Hadoop 2的新配置选项是指定MapReduce的框架名称的功能,并设置mapreduce.framework.name属性。 在这次安装中,我们将使用“yarn”的值来告诉MapReduce它将作为YARN应用程序运行。 首先,将模板文件复制到mapred-site.xml。

#cp mapred-site.xml.template mapred-site.xml

接下来,将以下行复制到Hadoop etc / hadoop / mapred-site.xml文件中,并删除原始的空<configuration> </ configuration>标记。

<configuration>
<property>
   <name>mapreduce.framework.name</name>
   <value>yarn</value>
 </property>
</configuration>

第8步:配置yarn-site.xml

从Hadoop安装的基础上,编辑etc / hadoop / yarn-site.xml文件。 yarn.nodemanager.aux-services属性告诉NodeManagers将会有一个名为mapreduce.shuffle的辅助服务需要实现。 在我们告诉节点管理员实现该服务后,我们给它一个类名作为实现该服务的手段。 这个特殊的配置告诉MapReduce如何进行shuffle。 由于NodeManagers默认不会为非MapReduce作业转换数据,因此我们需要为MapReduce配置此类服务。 将以下行复制到Hadoop etc / hadoop / yarn-site.xml文件中,并删除原始的空<configuration> </ configuration>标记。

<configuration>
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
 </property>
 <property>
   <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
   <value>org.apache.hadoop.mapred.ShuffleHandler</value>
 </property>
</configuration>

第9步:修改Java Heap大小

Hadoop安装使用几个环境变量来确定每个Hadoop进程的堆大小。 这些在Hadoop使用的etc / hadoop / * – env.sh文件中定义。 大多数进程的默认值为1 GB堆大小; 因为我们运行在与标准服务器相比可能资源有限的工作站上,但是,我们需要调整堆大小设置。 以下值适用于小型工作站或服务器。

编辑etc / hadoop / hadoop-env.sh文件以反映以下内容(不要忘记删除行首的“#”):

HADOOP_HEAPSIZE="500"
HADOOP_NAMENODE_INIT_HEAPSIZE="500"

接下来,编辑mapred-env.sh以反映以下内容:

HADOOP_JOB_HISTORYSERVER_HEAPSIZE= 250

最后,编辑yarn-env.sh以反映以下内容:

JAVA_HEAP_MAX=-Xmx500m

需要将以下行添加到yarn-env.sh中:

YARN_HEAPSIZE= 500

第10步:格式化HDFS

要启动HDFS NameNode,它需要初始化它将保存其数据的目录。 NameNode服务跟踪文件系统的所有元数据。 格式化过程将使用早些时候在etc / hadoop / hdfs-site.xml中分配给dfs.namenode.name.dir的值(即/ var / data / hadoop / hdfs / nn)。 格式化破坏目录中的所有内容并设置新的文件系统。 将NameNode目录格式化为HDFS超级用户,通常是“hdfs”用户帐户。

从Hadoop发行版的基础上,将目录更改为“bin”目录并执行以下命令:

# su - hdfs
$ cd /opt/yarn/hadoop-2.7.0/bin
$ ./hdfs namenode –format

如果该命令正常工作,应该会在一长串消息的末尾看到以下内容:

INFO common.Storage: Storage directory /var/data/hadoop/hdfs/nn has been successfully formatted.

第11步:启动HDFS服务

格式化成功后,必须启动HDFS服务。 NameNode(元数据服务器),一个DataNode(存储实际数据的地方)和SecondaryNameNode(NameNode的检查点数据)服务。 Hadoop发行版包括设置这些命令的脚本,以及命名其他值(如PID目录,日志目录和其他标准过程配置)的脚本。 从步骤10的bin目录中,以用户hdfs的身份执行以下操作:

$ cd ../sbin
$ ./hadoop-daemon.sh start namenode

该命令应显示以下内容:

starting namenode, logging to /opt/yarn/hadoop-2.7.0/logs/hadoop-hdfs-namenode-limulus.out

secondarynamenode和datanode服务可以以相同的方式启动:

$ ./hadoop-daemon.sh start secondarynamenode
starting secondarynamenode, logging to /opt/yarn/hadoop-2.7.0/logs/hadoop-hdfs-secondarynamenode-limulus.out
$ ./hadoop-daemon.sh start datanode
starting datanode, logging to /opt/yarn/hadoop-2.7.0/logs/hadoop-hdfs-datanode-limulus.out

如果守护进程成功启动,您应该会看到指向日志文件的输出响应。 (请注意,实际的日志文件附加了“.log”,而不是“.out。”)。 作为完整性检查,请发出jps命令以确认所有服务正在运行。 实际的PID(Java进程ID)值将与此列表中显示的不同:

$ jps
15140 SecondaryNameNode
15015 NameNode
15335 Jps
15214 DataNode

如果进程没有启动,检查日志文件可能会有所帮助。 例如,检查NameNode的日志文件。 (请注意,路径取自前面的命令。)

vi /opt/yarn/hadoop-2.7.0/logs/hadoop-hdfs-namenode-limulus.log

所有Hadoop服务都可以使用hadoop-daemon.sh脚本停止。 例如,要停止datanode服务,请输入以下内容(作为/opt/yarn/hadoop-2.7.0/sbin目录中的用户hdfs):

$ ./hadoop-daemon.sh stop datanode

NameNode和SecondaryNameNode可以做同样的事情。

第12步:启动YARN服务

与HDFS服务一样,需要启动YARN服务。 一个ResourceManager和一个NodeManager必须以用户yarn(首先从用户hdfs退出)启动:

# su - yarn
$ cd /opt/yarn/hadoop-2.7.0/sbin
$ ./yarn-daemon.sh start resourcemanager
starting resourcemanager, logging to /opt/yarn/hadoop-2.7.0/logs/yarn-yarn-resourcemanager-limulus.out
$ ./yarn-daemon.sh start nodemanager
starting nodemanager, logging to /opt/yarn/hadoop-2.7.0/logs/yarn-yarn-nodemanager-limulus.out

当在步骤1中启动HDFS守护进程时,正在运行的守护进程的状态将发送到它们各自的日志文件。 要检查服务是否正在运行,请发出jps命令。 以下显示了在单个服务器上运行YARN所需的所有服务:

$ jps
15933 Jps
15567 ResourceManager
15785 NodeManager

如果缺少服务,请检查特定服务的日志文件。 与HDFS服务的情况类似,可以通过向守护程序脚本发出停止参数来停止这些服务:

./yarn-daemon.sh stop nodemanager

第13步:使用Web界面验证正在运行的服务

HDFS和YARN ResourceManager都有一个Web界面。 这些界面是浏览Hadoop安装许多方面的便捷方式。 要监视HDFS:

$ http:// localhost:50070

连接到50070端口将会出现类似于下图:

1542030598492217.png

HDFS 文件系统Web 界面

通过输入以下内容可以查看ResourceManager的Web界面:

$ http:// localhost:8088

将显示下面网页:

1542030702204083.png

YARN 快速安装指南

发表评论

邮箱地址不会被公开。 必填项已用*标注

+ 五十 二 = 六十 一

滚动到顶部