Hadoop集群配置
上一节仅仅进行了单机上的Hadoop安装,为了在多台机器上进行Hadoop集群搭建和使用,还需要对相关配置文件进行修改,来保证集群服务协调运行。
Hadoop默认提供了两种配置文件:一种是只读的默认配置文件,包括core-default.xml、hdfs-default.xml、mapred-default.xml和yarn-default.xml,这些文件包含了Hadoop系统各种默认配置参数;另一种是Hadoop集群自定义配置时编辑的配置文件(这些文件多数没有任何配置内容,都存在于Hadoop解压包下的etc/hadoop/目录中),包括core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml等,可以根据需要在这些文件中对上一种默认配置文件中的参数进行修改,Hadoop会优先选择这些配置文件中的参数。
接下来,先通过一张表来对Hadoop集群搭建可能涉及到的主要配置文件及功能进行描述,如表1所示。
表1 Hadoop主要配置文件
配置文件 | 功能描述 |
---|---|
hadoop-env.sh | 配置Hadoop运行所需的环境变量 |
yarn-env.sh | 配置Yarn运行所需的环境变量 |
core-site.xml | Hadoop核心全局配置文件,可在其他配置文件中引用该文件 |
hdfs-site.xml | HDFS配置文件,继承core-site.xml配置文件 |
mapred-site.xml | MapReduce配置文件,继承core-site.xml配置文件 |
yarn-site.xml | Yarn配置文件,继承core-site.xml配置文件 |
在表1中,前2个配置文件都是用来指定Hadoop和Yarn所需运行环境,hadoop-env.sh用来保证Hadoop系统能够正常执行HDFS的守护进程NameNode、Secondary NameNode和DataNode;而yarn-env.sh用来保证YARN的守护进程ResourceManager和NodeManager能正常启动。另外其他4个配置文件都是用来设置集群运行参数的,在这些配置文件中可以使用Hadoop默认配置文件中的参数进行配置来优化Hadoop集群,从而使集群更加稳定高效。
Hadoop提供的默认配置文件core-default.xml、hdfs-default.xml、mapred-default.xml和yarn-default.xml中的参数非常之多,这里不便一一展示说明。读者在具体使用时可以通过访问Hadoop官方文档http://hadoop.apache.org/docs/stable/index.html
,进入到文档最底部的Configuration部分进行学习和查看。
接下来,就以Hadoop集群规划图为例,来详细讲解Hadoop集群配置,具体步骤如下。
1.配置Hadoop集群主节点
(1)修改hadoop-env.sh文件
先进入到主节点hadoop01解压包下的etc/hadoop/目录,使用“vi hadoop-env.sh”指令打开其中的hadoop-env.sh文件,找到JAVA_HOME参数位置,进入如下修改(注意JDK路径)。
export JAVA_HOME=/export/servers/jdk
上述配置文件中设置的是Hadoop运行时需要的JDK环境变量,目的是让Hadoop启动时能够执行守护进程。
(2)修改core-site.xml文件
该文件是Hadoop的核心配置文件,其目的是配置HDFS地址、端口号,以及临时文件目录。参考上一步,打开该配置文件,添加如下配置内容。
<configuration>
<!-- 用于设置Hadoop的文件系统,由URI指定 -->
<property>
<name>fs.defaultFS</name>
<!-- 用于指定namenode地址在hadoop01机器上 -->
<value>**hdfs://hadoop01:9000**</value>
</property>
<!-- 配置Hadoop的临时目录,默认/tmp/hadoop-${user.name} -->
<property>
<name>hadoop.tmp.dir</name>
<value>**/export/servers/hadoop-2.7.4/tmp**</value>
</property>
</configuration>
在上述核心配置文件中,配置了HDFS的主进程NameNode运行主机(也就是此次Hadoop集群的主节点位置),同时配置了Hadoop运行时生成数据的临时目录。
(3)修改hdfs-site.xml文件
该文件用于设置HDFS的NameNode和DataNode两大进程。打开该配置文件,添加如下配置内容。
<configuration>
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- secondary namenode 所在主机的ip和端口-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>**hadoop02:50090**</value>
</property>
</configuration>
在上述配置文件中,配置了HDFS数据块的副本数量(默认值就为3,此处可以省略),并根据需要设置了Secondary NameNode所在服务的HTTP协议地址。
(4)修改mapred-site.xml文件
该文件是MapReduce的核心配置文件,用于指定MapReduce运行时框架。在etc/hadoop/目录中默认没有该文件,需要先通过“cp mapred-site.xml.template mapred-site.xml”命令将文件复制并重命名为“mapred-site.xml”。接着,打开mapred-site.xml文件进行修改,添加如下配置内容。
<configuration>
<!-- 指定MapReduce运行时框架,这里指定在Yarn上,默认是local -->
<property>
<name>mapreduce.framework.name</name>
<value>**yarn**</value>
</property>
</configuration>
在上述配置文件中,就是指定了Hadoop的MapReduce运行框架为Yarn。
(5)修改yarn-site.xml文件
本文件是Yarn框架的核心配置文件,需要指定Yarn集群的管理者。打开该配置文件,添加如下配置内容。
<configuration>
<!-- 指定Yarn集群的管理者(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>**hadoop01**</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>**mapreduce_shuffle**</value>
</property>
</configuration>
在上述配置文件中,配置了YARN的主进程ResourceManager运行主机为hadoop01,同时配置了NodeManager运行时的附属服务,需要配置为mapreduce_shuffle才能正常运行MapReduce默认程序。
(6)修改slaves文件
该文件用于记录Hadoop集群所有从节点(HDFS的DataNode和YARN的NodeManager所在主机)的主机名,用来配合一键启动脚本启动集群从节点(并且还需要保证关联节点配置了SSH免密登录)。打开该配置文件,先删除里面的内容(默认localhost),然后配置如下内容。
hadoop01
hadoop02
hadoop03
在上述配置文件中,配置了Hadoop集群所有从节点的主机名为hadoop01、hadoop02和hadoop03(这是因为此次在该3台机器上搭建Hadoop集群,同时前面的配置文件hdfs-site.xml指定了HDFS服务副本数量为3)。
2.将集群主节点的配置文件分发到其他子节点
完成Hadoop集群主节点hadoop01的配置后,还需要将系统环境配置文件、JDK安装目录和Hadoop安装目录分发到其他子节点hadoop02和hadoop03上,具体指令如下。
$ scp /etc/profile hadoop02:/etc/profile
$ scp /etc/profile hadoop03:/etc/profile
$ scp -r /export/ hadoop02:/
$ scp -r /export/ hadoop03:/
执行完上述所有指令后,还需要在其他子节点hadoop02、hadoop03上分别执行“source /etc/profile”指令立即刷新配置文件。
至此,整个集群所有节点就都有了Hadoop运行所需的环境和文件,Hadoop集群也就安装配置完成。在下节中,将对此次安装配置的集群进行效果测试。