Hadoop 集群环境搭建

假设局域网中有 4 台 CentOS Linux 主机:

  • master (IP: 192.168.0.2)
  • slave0 (IP: 192.168.0.3)
  • slave1 (IP: 192.168.0.4)
  • slave2 (IP: 192.168.0.5)

cluster

其中 master 为集群的 Master 节点,部署 NameNode 和 ResourceManger。其它 slave 为集群的 Worker 节点,部署 DataNode 和 NodeManager。

下面以该环境为例,说明如何搭建 Hadoop 集群。

环境准备

通过 SSH 客户端连接到 Master 节点和 Worker 节点,执行以下操作:

安装 JDK 1.7

CentOS上,可以使用系统包管理工具 yum 安装 JDK 1.7:

yum install java-1.7.0-openjdk-devel

安装成功后,执行指令检查是否正确安装:

java -version

显示版本为 1.7.0 表示 JDK 安装成功。

创建 Hadoop 用户和用户组(可选)

创建用户:

useradd hadoop

创建用户组:

groupadd hadoop

安装 Hadoop

下载并解压 Hadoop 安装包:

cd /usr/local  
wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-X.Y.Z/hadoop-X.Y.Z.tar.gz  
tar -zxf hadoop.X.Y.Z.tar.gz  

修改目录所有者:

chown -R hadoop:hadoop hadoop-X.Y.Z

SSH 免密码登录配置(可选)

在集群 Master 节点执行以下操作:

首先,使用 RSA 算法生成一对密钥:

ssh-keygen -t rsa -f ~/.ssh/id_rsa

执行完毕,会生成一个公钥 id_rsa.pub 和一个私钥 id_rsa

然后,将公钥拷贝到集群中所有 Worker 节点:

ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@slave0  
ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@slave1  
ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@slave2  

Hadoop 配置

Hadoop 配置文件主要分为两大类:

  • 环境配置 Shell 脚本
  • 守护进程配置 XML 文件

环境配置文件:

  • etc/hadoop/hadoop-env.sh
  • etc/hadoop/mapred-env.sh
  • etc/hadoop/yarn-env.sh

守护进程配置文件:

  • etc/hadoop/core-site.xml
  • etc/hadoop/hdfs-site.xml
  • etc/hadoop/yarn-site.xml
  • etc/hadoop/mapred-site.xml

环境配置

编辑 hadoop-env.sh,配置环境变量:

export JAVA_HOME=/usr/lib/jvm/java-1.7.0  
export HADOOP_PREFIX=/usr/local/hadoop-X.Y.Z  

守护进程配置

编辑 core-site.xml

定义默认使用的文件系统为 HDFS

<?xml version="1.0">  
<configuration>  
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://master/</value>
  </property>
</configuration>  

编辑 hdfs-site.xml

TODO

编辑 yarn-site.xml

Master 节点配置:

定义 Master 节点 ResourceManager 主机名

<?xml version="1.0">  
<configuration>  
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
  </property>
</configuration>  

Worker 节点配置:

定义每个 Work 节点 NodeManager 主机名

<?xml version="1.0">  
<configuration>  
  <property>
    <name>yarn.nodemanager.hostname</name>
    <value>master</value>
  </property>
</configuration>  

编辑 mapred-site.xml

定义 MR 使用的框架为 Yarn

<?xml version="1.0">  
<configuration>  
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>  

slave 配置

Master 节点,编辑 slave 文件,添加:

slave0  
slave1  
slave2  

集群启停

Master 节点执行以下命令:

启停 HDFS:

sbin/start-dfs.sh  
sbin/stop-dfs.sh  

启停 Yarn:

sbin/start-yarn.sh  
sbin/stop-yarn.sh  

启停所有:

sbin/start-all.sh  
sbin/stop-all.sh