如何在CentOS 7/6 上配置Hadoop 多节点集群

我们以前的文章中描述了如何设置单节点集群。本文将帮助你在CentOS/RHEL 7/6中建立Hadoop的多节点群集。

Apache Hadoop 软件库是一个框架,它允许使用简单的编程模型计算机集群服务来分布式处理大型数据集。 我们前面的文章对Hadoop的描述了如何设置单节点集群 。本文将帮助你在CentOS/RHEL 6上一步一步安装和配置Hadoop的多节点集群。 Hadoop的ST

设置详细信息:

Hadoop Master:192.168.1.15(Hadoop主服务器) Hadoop Slave:192.168.1.16(Hadoop从服务器1) Hadoop Slave:192.168.1.17(Hadoop从服务器2)

第1步:安装Java

安装Hadoop的之前,请确保你已经在Hadoop集群系统的所有节点上都安装了Java。
# java -version

java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)
如果您没有安装Java的使用下面的文章安装Java。 在CentOS/RHEL 7/6/5 上安装 JAVA 7

第2步:创建用户帐户

创建系统用户帐户使主机和从机系统使用Hadoop的安装
# useradd hadoop
# passwd hadoop
Changing password for user hadoop.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

第3步:添加FQDN映射

编辑所有主从服务器上的 /etc/hosts 文件,并添加以下项。
# vim /etc/hosts
192.168.1.15 hadoop-master
192.168.1.16 hadoop-slave-1
192.168.1.17 hadoop-slave-2

第4步:配置基于密钥登录

建立Hadoop的用户通过ssh本身链接时不需要密码。使用下面的命令来配置所有Hadoop集群服务器之间自动登录..
# su - hadoop
$ ssh-keygen -t rsa
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hadoop-master
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hadoop-slave-1
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@hadoop-slave-2
$ chmod 0600 ~/.ssh/authorized_keys
$ exit

第5步:下载并解压缩的Hadoop源文件

只有Hadoop的主服务器下载其官方网站Hadoop的最新版本。
# mkdir /opt/hadoop
# cd /opt/hadoop/
# wget http://apache.mesi.com.ar/hadoop/common/hadoop-1.2.0/hadoop-1.2.0.tar.gz
# tar -xzf hadoop-1.2.0.tar.gz
# mv hadoop-1.2.0 hadoop
# chown -R hadoop /opt/hadoop
# cd /opt/hadoop/hadoop/

第6步:配置Hadoop

首先编辑Hadoop配置文件,并以下更改。 6.1编辑核心的site.xml
# vim conf/core-site.xml
#Add the following inside the configuration tag
<property>
    <name>fs.default.name</name>
    <value>hdfs://hadoop-master:9000/</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
6.2编辑HDFS-site.xml
# vim conf/hdfs-site.xml
# Add the following inside the configuration tag
<property>
	<name>dfs.data.dir</name>
	<value>/opt/hadoop/hadoop/dfs/name/data</value>
	<final>true</final>
</property>
<property>
	<name>dfs.name.dir</name>
	<value>/opt/hadoop/hadoop/dfs/name</value>
	<final>true</final>
</property>
<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>
6.3编辑mapred-site.xml
# vim conf/mapred-site.xml
# Add the following inside the configuration tag
<property>
        <name>mapred.job.tracker</name>
	<value>hadoop-master:9001</value>
</property>
6.4编辑hadoop-env.sh
# vim conf/hadoop-env.sh
export JAVA_HOME=/opt/jdk1.7.0_75
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
export HADOOP_CONF_DIR=/opt/hadoop/hadoop/conf
为每个Java的系统配置JAVA_HOME路径。

第7步:复制Hadoop的源文件到slave服务器

以上配置更新后,我们需要将源文件复制到所有的slaves服务器。
# su - hadoop
$ cd /opt/hadoop
$ scp -r hadoop hadoop-slave-1:/opt/hadoop
$ scp -r hadoop hadoop-slave-2:/opt/hadoop

第8步:仅限Master服务器上配置的Hadoop

进入Hadoop文件夹, hadoop-master 做如下设置。
# su - hadoop
$ cd /opt/hadoop/hadoop
$ vim conf/masters

hadoop-master
$ vim conf/slaves

hadoop-slave-1
hadoop-slave-2
在Hadoop-Master 服务器中 Format Name Node,如下
# su - hadoop
$ cd /opt/hadoop/hadoop
$ bin/hadoop namenode -format
13/07/13 10:58:07 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = hadoop-master/192.168.1.15
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 1.2.0
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473; compiled by 'hortonfo' on Mon May  6 06:59:37 UTC 2013
STARTUP_MSG:   java = 1.7.0_25
************************************************************/
13/07/13 10:58:08 INFO util.GSet: Computing capacity for map BlocksMap
13/07/13 10:58:08 INFO util.GSet: VM type       = 32-bit
13/07/13 10:58:08 INFO util.GSet: 2.0% max memory = 1013645312
13/07/13 10:58:08 INFO util.GSet: capacity      = 2^22 = 4194304 entries
13/07/13 10:58:08 INFO util.GSet: recommended=4194304, actual=4194304
13/07/13 10:58:08 INFO namenode.FSNamesystem: fsOwner=hadoop
13/07/13 10:58:08 INFO namenode.FSNamesystem: supergroup=supergroup
13/07/13 10:58:08 INFO namenode.FSNamesystem: isPermissionEnabled=true
13/07/13 10:58:08 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100
13/07/13 10:58:08 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
13/07/13 10:58:08 INFO namenode.FSEditLog: dfs.namenode.edits.toleration.length = 0
13/07/13 10:58:08 INFO namenode.NameNode: Caching file names occuring more than 10 times
13/07/13 10:58:08 INFO common.Storage: Image file of size 112 saved in 0 seconds.
13/07/13 10:58:08 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/opt/hadoop/hadoop/dfs/name/current/edits
13/07/13 10:58:08 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/opt/hadoop/hadoop/dfs/name/current/edits
13/07/13 10:58:08 INFO common.Storage: Storage directory /opt/hadoop/hadoop/dfs/name has been successfully formatted.
13/07/13 10:58:08 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop-master/192.168.1.15
************************************************************/

第9步:启动Hadoop服务

在Hadoop-Master 服务器中使用下面的命令来启动所有Hadoop服务
$ bin/start-all.sh