第 1 章 集群及开发环境搭建
Hadoop的项目开发需要掌握 Hadoop 生态圈中其他套件的集成与使用.
本章介绍如何搭建一个高可用的Hadoop集群.
- Hadoop2.7版本的安装
- Zookeeper套件的集成
- Hadoop应用程序的运行
1.1 环境准备
- Hadoop 设计之初便是以 Linux 操作系统为前提,因而其在 Linux 操作系统中具有完美的支持.
- Hadoop 的源代码是基于 Java语言编写的。虽然 Java语言具有跨平台的特性,但由于 Hadoop 的部分功能对 Linux 操作系统有一 定依赖,因而 Hadoop 对其他平台(如 Windows 操作系统)的兼容性不是很好 。
接下来介绍如何在 Linux操作系统下完成基础软件的配置与部署.
1.1.1 基础软件下载
由于 Hadoop采用的开发语言是 Java编程语言,所以首要任务是先安装 Java语言的基础开发包 Java Development Kit (简称 JDK).
本书JDK版本是Oracle官方的JDK8, 版本号为8u144. rpm 安装包和 tar.gz 安装包均可 。本书是 x64.tar.gz 安装包(下载地址:https://www.oracle.com/java/technologies/downloads/)。
1.1.2 准备 Linux 操作系统
Linux 操作系统的版本有很多 ,如 RedHat、 Ubuntu、 CentOS 等。本书的操作系统是基于64bitCentOS 6.6类型的。关系不大。
1. 安装配置 jdk
CentOS 会自带 OpenJDK 环境,安装 Oracle 官网下载的 JDK 版本之 前,先检查 CentOS 中是否存在 OpenJDK 环境 ,如果存在,则需先行卸载自带的 JDK环境,步骤如下:
#(1)卸载 CentOS 操作系统自带的 JDK 环境
[hadoop@nna ~] $rpm -qa | grep Java #查找 Java 安装依赖库
[hadoop@nna ~]$ yum - y remove Java* #卸载 Java 依赖库
#(2)将下载的 JDK 安装包解压缩到指定目录下:
[hadoop@nna ~]♀ tar -zxvf jdk-8ul44-linux-x64.tar.gz
[hadoop@nna ~]♀ mv jdk-8ul44- linux x64 /data/soft/new/jdk
#(3)编辑环境变量,打开全局环境变量配置文件
[hadoop@nna ~]♀ vi /etc/profile
export JAVA_HOME=/data/soft/new/jdk
export $PATH : $JAVA_HOME/bin
#(4)保存刚刚编辑完成后的文件,若要配置的内容立即生效,执行如下命令:
[hadoop@nna ~]$ source /etc/profile
#(5)验证安装的 JDK 环境是否成功:
[hadoop@nna ~]$ java -version
# 若操作终端上显示对应的 JDK 版本号,即可认为 JDK 环境配置成功
1.2 同步安装包
将该节点上的 JDK 安装包,传输到其他节点上 :
# 将 nna 节点的 JDK 文件复制到 nns 节点
[hadoop@nna ~]$ scp -r /data/soft/new/jdk hadoop@nns:/data/soft/new
1.2 安装 hadoop
1.2.1 基础环境配置
Hadoop集群的硬件配置如表 1-2所示
1. 创建 hadoop 账号
搭建 Hadoop集群环境时,不推荐使用 root账号来操作,可以创建一个 Hadoop账 号用来专 门 管理集群环境。
# 创建 Hadoop账号的过程均在 root账号下完成
[root@nna ~]# useradd hadoop # 创建名为 hadoop 的账号
[root@nna ~]# passwd hadoop #给名为 hadoop 的账号设置密码
给 Hadoop 账号设置免密码登录权限,也可以自行添加其他权限:
#给 sudoers 文件赋予写权限
[root@nna ~]# chmod +w /etc/sudoers
#打开 sudoers 文件并进行编辑,添加以下内容
[root@nna ~]# vi /etc/sudoers
hadoop ALL=(root)NOPASSWD:ALL
#取消 sudoers 文件的写权限
[root@nna ~]# chmod -w /etc/sudoers
2. 安装 Java 环境-JDK
前面已经介绍
3. 配置 hosts 系统文件
所有节点的 hosts配置都是相同的(推荐这样配置) ,用别名取代 IP, 可以避免很多不必要的麻烦,方便操作与配置。
[hadoop@nna ~] $ v i /etc/hosts
#然后在 hosts 文件中添加以下内容
10.211.55.5 nna
10.211.55.6 nns
10.211.55.7 dn1
10.211.55.8 dn2
10.211.55.9 dn3
完成该节点 hosts 文件的编辑后,使用 scp 命令将 nna 节点的 hosts 文件分发到其他节点
[hadoop@nna ~]$ scp /etc/hosts hadoop@nns:/etc
4. 安装SSH
( 1)创建密钥
Hadoop 集群需要保证各个节点互相通信,这里需要用到 SSH。
#生成该节点的私钥和公钥
[hadoop@nna ~]$ ssh-keygen -t rsa
只需按键盘上的回车键 ,不用设置任何信息,命令操作结束后会在~/ .ssh/目录下生成对应的私钥和公钥等文件。
(2)认证授权
将公钥 (id_rsa.pub)文件中的内容追加到 authorized_keys 文件中 :
[hadoop@nna ~]$ cat ~/.ssh/id_rsa .pub >> ~/.ssh/authorized_keys
(3 )文件赋权
hadoop账号下, 需要给 authorized_keys文件赋予 600权限, 否则由于权限限制会导致免密码登录失败 :
[hadoop@nna ~]♀ chmod 600 ~/ .ssh/authorized_keys
(4)其他节点创建密钥
其他 Hadoop 集群节点下,通过使用 hadoop 账号登录,使用 ssh-keygen -t rsa命令 ,生成对应的公钥,然后将各个节点的公钥 id_rsa.pub文件中的内容追加到 nna 节点的 authorized_keys 中。
完成所有节点的公钥追加之后,将 nna 节点下的 authorized_keys 文件分发到其他节点的 hadoop 账号的~/.ssh/目录下:
[hadoop@nna ~]$ scp ~/.ssh/authorized_keys hadoop@nns:~/.ssh/
完成所有节点的分发任务后,使用 ssh命令进行互相登录,验证是否能够 实现免密码登录 :
#以从 nna 节点免密码 登录 nns 节点为例子
[hadoop@nna ~]$ ssh nns
5.关闭防火墙 (或端口限制〉
由于 Hadoop 集群各个节点之间需要进行通信( Hadoop RPC 机制〉,因而需要监控系统对应的端口。在学习阶段,可以将各个节点的防火墙直接关闭,本书的环境都是直接将防火墙关闭了:
#关闭防火墙
[hadoop@nna ~]♀ chkconfig iptables off
#输入以下命令验证系统的防火墙是否均己关闭:
[hadoop@nna ~]$ chkconfig iptables --list
notes:若用于生产环境, 直接关闭防火墙是存在安全隐患的,可通过配直防火墙的过滤规则,即将 Hadoop 集群 需要监听的端口配直到防火墙接受 的规则当中 。
6. 修改时区
Hadoop 集群的各个节点上的时间如果不同步,会出现启动异常或者其他异常,可以将时间统一设置为 Shanghai 时区:
#这里以 nns 节点为例子,其他节点操作相同
[hadoop@nna ~]♀ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cp : overwrite 、/etc/local time ’ ? yes
#修改为中国的东八区
[hadoop@nna ~]$ vi /etc/sysconfig/clock
#添加以下内容
ZONE="Asia/Shanghai"
UTC=false
ARC=false