Apache Hadoop 是一个支持数据密集型分布式应用程序的开源软件框架,能在大型集群上运行应用程序。Hadoop 框架实现了 MapReduce 编程范式,把应用程序分成许多小部分,每个部分能在任意节点上运行。并且 Hadoop 提供了分布式文件系统存储所有计算节点的数据,为集群带来非常高的带宽。
1 Hadoop 是什么?
Apache Hadoop 是一个支持数据密集型分布式应用程序的开源软件框架,能在大型集群上运行应用程序。Hadoop 框架实现了 MapReduce 编程范式,把应用程序分成许多小部分,每个部分能在任意节点上运行。并且 Hadoop 提供了分布式文件系统存储所有计算节点的数据,为集群带来非常高的带宽。
2 搭建说明
本文几乎所有操作都需要在三台服务器上进行同样的操作,所以为了便于表示,在需要三台服务器上进行同样操作的时候会使用 x3 进行标注。
命令当中的 # 代表 root 用户执行。
命令当中的 $ 代表 hadoop 用户执行。
### 为该命令的注释。
注:可在一台机子上配置好后利用 scp 命令进行复制,若在虚拟机则可直接复制虚拟机。
2.1 节点机器配置
NodeName | OS | CPU | RAM | Disk | IP |
---|---|---|---|---|---|
NameNode | CentOS 7.2 | E7-4830 v3 @ 2.10GHz x2 | 2G | 100G | 192.168.1.69 |
DataNode1 | CentOS 7.2 | E7-4830 v3 @ 2.10GHz x2 | 2G | 500G | 192.168.1.70 |
DataNode2 | CentOS 7.2 | E7-4830 v3 @ 2.10GHz x2 | 2G | 500G | 192.168.1.7 |
2.2 软件包版本
Software | Version |
---|---|
JDK | Oracle JDK 1.8.0_131(非OpenJDK) |
Hadoop | 2.8.0 |
3 安装JDK x3
# mkdir -p /usr/local/java
# cd /usr/local/java
# wget http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
# tar -xvzf jdk-8u131-linux-x64.tar.gz
### 设置新的 JDK 为默认 JDK,如果机器已经安装 OpenJDK,可能需要先卸载。
# echo "export JAVA_HOME=/usr/local/java/jdk1.8.0_131/" >> /etc/profile
# echo "export PATH=$PATH:$JAVA_HOME/bin" >> /etc/profile
# source /etc/profile
# $JAVA_HOME/bin/java -version ### 测试运行
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
4 关闭防火墙 x3
直接关闭整个防火墙不是一个明智的选择,在具体环境中应该挑选出需要的端口,进行放行,本文由于篇幅原因,不再详细讨论,故采用直接关闭防火墙的方法。
# systemctl stop firewalld.service
# systemctl disable firewalld.service
5 配置 hostname 及局域网映射 x3
# hostnamectl set-hostname namenode ### 为 namenode 节点设置 hostname
# hostnamectl set-hostname datanode1 ### 为 datanode1 节点设置 hostname
# hostnamectl set-hostname datanode2 ### 为 datanode2 节点设置 hostname
# echo "192.168.1.69 namenode" >> /etc/hosts
# echo "192.168.1.70 datanode1" >> /etc/hosts
# echo "192.168.1.71 datanode2" >> /etc/hosts
6 创建 hadoop 用户以及 hadoop 用户组 x3
# groupadd hadoop
# useradd -m -g hadoop hadoop
# passwd hadoop
7 SSH 免密登录
Hadoop 在 namenode 节点中使用 ssh 来访问各节点服务器,例如开启或关闭 hadoop。显然在大型集群中,不可能手动逐个输入密码,在这种情况下,我们可以利用 ssh-agent 代理我们输入密码。
注:该设置只需要在 namenode 节点设置。
7.1 ssh-agent
配置 ssh-agent 开机自动运行
# echo 'eval $(ssh-agent)' >> /etc/profile
# source /etc/profile
7.2 配置免密登录
在 namenode 节点上登录 hadoop 用户
$ ssh-keygen -t rsa -f ~