一. 规划
集群中各机器的配置均相同:
- CPU x3
- 内存 25G
- 硬盘 1.5T
1.1 软件版本
组件名 | 版本 | 下载地址 |
---|---|---|
JDK | java version “1.8.0_60” | http://www.oracle.com/technetwork/java/javase/downloads/index.html |
Hadoop | hadoop-2.5.0-cdh5.3.2.tar.gz | http://archive.cloudera.com/cdh5/cdh/5/ |
Zookeeper | zookeeper-3.4.5-cdh5.3.2.tar.gz | http://archive.cloudera.com/cdh5/cdh/5/ |
1.2 主机规划
IP | 主机名 | 用户名 | 部署模块 | 进程 |
---|---|---|---|---|
10.6.3.43 | master5 | hadoop5 | NameNode ResourceManager |
NameNode DFSZKFailoverController ResourceManager JobHistoryServer |
10.6.3.33 | master52 | hadoop5 | NameNode ResourceManager |
NameNode DFSZKFailoverController ResourceManager JobHistoryServer |
10.6.3.48 | slave51 | hadoop5 | DataNode NodeManager Zookeeper |
DataNode NodeManager JournalNode QuorumPeerMain |
10.6.3.32 | slave52 | hadoop5 | DataNode NodeManager Zookeeper |
DataNode NodeManager JournalNode QuorumPeerMain |
10.6.3.36 | slave53 | hadoop5 | DataNode NodeManager Zookeeper |
DataNode NodeManager JournalNode QuorumPeerMain |
1.3 变量名及目录路径规划
目录名 | 路径 |
---|---|
临时 tar.gz 安装包 | /home/hadoop5/softwares/tar_packages |
环境变量修改文件 | /home/hadoop5/.bash_profile |
集群所在目录 | /usr/local/cluster |
$JAVA_HOME | /usr/local/jdk1.8.0_60 |
$HADOOP_HOME | /usr/local/cluster/hadoop |
$ZOOKEEPER_HOME | /usr/local/cluster/zookeeper |
Note: 以上路径若不存在,则直接按照以下命令直接创建,并修改相关属性即可,其他类似
sudo mkdir -p /usr/local/cluster
sudo chown -R hadoop5:hadoop5 /usr/local/cluster/
二. 环境准备
2.1 创建 hadoop 用户
在集群中的每台机器都创建特定且相同的 Hadoop 用户账号可以区分 Hadoop 和本机上的其他服务,本教程创建的是 hadoop5 用户。
相关配置请参考 《Centos6.5 创建新用户》
2.2 网络配置
- 要确保集群中的每台机器之间能够 ping 通
- 关闭防火墙 和 SeLinux
- 集群中的所有机器的 /etc/hosts 文件内容均一致,都要将集群中的各 IP 和 主机名对应起来
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.6.3.43 master5
10.6.3.33 master52
10.6.3.48 slave51
10.6.3.32 slave52
10.6.3.36 slave53
2.3 安装 JDK
本教程安装的 java version “1.8.0_60” 的 jdk。相关配置请参考 《 Centos6.5 JAVA配置 》
安装 jdk 路径为 /usr/local/jdk1.8.0_60
。 请参考 《变量名及目录路径规划》
2.4 配置 SSH 免密码通信
相关配置请参考 《Centos6.5下SSH免密码登陆配置》
2.5 VNC 配置 (可选)
配置 VNC 是可选的,对搭建 hadoop 不是必需的,但因为提供了图形化操作界面,还是有必要安装下。相关教程请参考 《 Centos6.5 VNC 配置 》
三. 安装 ZooKeeper
按照 主机规划 中,仅在 slave51、slave52、slave53 的节点上安装搭建 ZooKeeper 的复制模式 (Replicated Mode)。
详细的安装步骤请参考 :《 ZooKeeper 搭建》
ZooKeeper 的主进程 QuorumPeerMain 可以先不用启动,本文的最后,会梳理整个 HA 模式下启动的流程顺序。
四. 安装 Hadoop (重点)
4.1 下载,解压,配置环境变量
在 master5 的节点上,将从官网上下载的 hadoop tar 包解压至相应目录,详见 《变量名及目录路径规划》
1. 创建相应目录
sudo mkdir -p /usr/local/cluster/hadoop
sudo chown -R hadoop5:hadoop5 /usr/local/cluster/
创建,并修改成功之后应该是如下这样,否则就是各种权限不足的问题了:
2. 解压 tar 包至指定目录
sudo tar -zxvf ~/softwares/tar_packages/hadoop-2.5.0-cdh5.3.2.tar.gz -C /usr/local/cluster/hadoop --strip-components 1
sudo chown -R hadoop5:hadoop5 /usr/local/cluster/hadoop
3. 替换本地库文件
因为在 lib/native
路径下,没有任何文件,这个就涉及到编译源码的问题了。有兴趣详见:Hadoop-2.5.0-cdh5.3.2 获取源码及编译。
将编译之后的 lib/native 下的所有库文件都拷贝到解压后的 hadoop 包下的 lib/native 下。如下图
需要注意的是:最好保证编译时的机器环境与你搭建的集群环境是相同的,不容易出错。相关的 lib/native 包,笔者已上传 http://download.csdn.net/detail/u011414200/9201161
4. 配置环境变量
登陆到集群中每台机器上完成该配置:
vim ~/.bash_profile
添加如下:
export HADOOP_HOME=/usr/local/cluster/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
并执行以下命令,使环境变量生效
source ~/.bash_profile
4.2 修改配置文件
需要修改文件名:
文件名称 | 格式 | 描述 |
---|---|---|
hadoop-env.sh | Bash 脚本 | 记录脚本中要用到的环境变量,以运行 Hadoop |
core-site.xml | Hadoop 配置 XML | Hadoop Core 的配置项,例如 HDFS 和 MapReduce 常用的 I/O 设置等 |
hdfs-site.xml | Hadoop 配置 XML | Hadoop 守护进程的配置项,包括 namenode 和 datanode |
mapred-site.xml | Hadoop 配置 XML | MapReduce 守护进程的配置项 |
yarn-site.xml | xml | Yarn 守护进程的配置项:资源管理器、作业历史服务器、Web 应用程序代理服务器和节点管理器 |
slaves | 纯文本 | 运行 datanode 和 tasktracker 的机器列表(每行一个) |
cd /usr/local/cluster/hadoop/etc/hadoop/
1. 修改 $HADOOP_HOME/etc/hadoop/hadoop-env.sh
vim hadoop-env.sh
其中修改的 JAVA_HOME 只要操作这一次,就能够保证整个集群使用同一版本的 Java。完整添加的代码如下
export JAVA_HOME=/usr/local/jdk1.8.0_60
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
- 添加
-Djava.library.path
到变量HADOOP_OPTS
中,是为了让 HADOOP 能正确地指向本地库
2. 修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml
vim hdfs-site.xml
在 <configuration>
与 </configuration>
之间添加如下内容
<property>
<name>dfs.nameservices</name></