如果要搭建一个伪分布式或全分布式的Hadoop集群,在软件安装好之后,要进行一些环境的配置。这里就不详细讲述如何安装软件了。下面进入正题。
软件:hadoop-2.7.2+jdk1.8.0_144
1、集群规划
首先,要明确建立一个怎样的集群,各个节点应该怎么配置。这里以建立一个3个节点的集群为例,该集群各节点配置如下
hadoop102 | hadoop103 | hadoop104 |
namenode | ||
datanode | datanode | datanode |
secondarynamenode | ||
resourcemanager | ||
nodemanager | nodemanager | nodemanager |
jobhistoryserver |
集群规划完成后,进行一些文件的配置。
2、配置集群
这里有多个文件需要配置,这些配置文件都是在Hadoop的etc/hadoop目录下。
2.1 核心文件配置
(1)core-site.xml
指定namenode以及Hadoop运行时产生文件的目录
<!--指定namenode的地址-->
<property>
<name>fs.defaultsFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!--指定hadoop运行时产生文件的存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/hadoop-2.7.2/tmp</value>
</property>
2.2 HDFS文件配置
(1)hadoop-env.sh
修改JAVA_HOME的路径
export JAVA_HOME=/usr/local/java/jdk1.8.0_144
(2)hdfs-site.xml
指定hdfs副本的数量、hadoop secondarynamenode主机配置
<!--指定hdfs副本的数量-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--指定hadoop secondarynamenode配置>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
2.3 YARN文件配置
(1)yarn-env.sh
修改JAVA_HOME的路径
export JAVA_HOME=/usr/local/java/jdk1.8.0_144
(2)yarn-site.xml
主要目的有两个:指定reduce获取数据的方式;指定resourcemanager的地址。
<!--reduce获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定yarn的resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
2.4 MapReduce文件配置
(1)mapred-env.sh
修改JAVA_HOME的路径
export JAVA_HOME=/usr/local/java/jdk1.8.0_144
(2)mapred-site.xml
Hadoop的etc目录下没有该文件,需要将另外一个文件改名
[root@hadoop102 etc]# cp mapred-site.xml.template mapred-site.xml
要添加两个配置:指定mr运行在yarn上;配置历史服务器,以便在web端能够查看程序运行的一些情况,比如耗时等。
<!--指定mr运行在yarn上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--历史服务器端地址-->
<peoperty>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<!--历史服务器web端地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>
2.5 slaves文件配置
打开该文件,只需添加进去节点名称
hadoop102
hadoop103
hadoop104
本文是将namenode与其中一个datanode放在了同一个节点hadoop102,按道理来说最好不要这样做,不过我的电脑内存小,虚拟机就开了三台,凑合着用叭。
3、启动集群
将上述文件配置好后,分发至其他节点。如果集群是第一次启动,需要先格式化namenode
[root@hadoop102 hadoop-2.7.2]#bin/hdfs namenode -format
接着是启动hdfs
[root@hadoop102 hadoop-2.7.2]#sbin/start-dfs.sh
注意,到这步为止,只启动了hadoop102的namenode、datanode,hadoop103的datanaode,hadoop104的datanode、secondarynamenode。因为namenode和resourcemanager不是配置在同一个节点上,因此不能在namenode上启动yarn,应该在resourcemanager上启动yarn。
启动yarn
[root@hadoop103 hadoop-2.7.2]#sbin/start-yarn.sh
最后是启动历史服务器
[root@hadoop102 hadoop-2.7.2]#sbin/mr-jobhistory-daemon.sh start historyserver
这时,启动集群的指令算是输入完成,那么集群到底启动成功了吗?可以通过输入指令查看各个节点的进程端口号看是不是与设计的集群规划一样。
[root@hadoop102 hadoop-2.7.2]#jps
还可以通过web端查看相关详细
#查看node的信息
http://hadoop102:50070
#查看yarn的信息
http://hadoop103:8088
#查看历史信息
http://hadoop102:19888
这样,一个简单的集群就算是配置好了,且已经启动成功了,接下来可以利用Hadoop自带的样例程序运行一下,比如wordcount。如果想要在本地进行mapreduce程序的开发,还需要进行其他的配置,我会在之后的文章中进行说明。
接触Hadoop快一年了,我感觉自己会的还是太少。在前期刚接触时,在安装软件、配置环境方面,就已经消耗了大量时间,一度还差点把电脑弄瘫痪,这个真的是很考验人的心态。多亏大神的指导,还参考了大量的技术文章,总算把这个集群配置好了,感谢。由于我的水平还很低,文章中难免会有些错误,请见谅,同时欢迎大家的批评指正!