写在前面
如果你想通过这篇博客在本地成功搭建 Hadoop 集群的话,你需要先跟着视频课程 三天入门大数据实操课程 在本地搭建集群环境,在这个视频课程中你需要学习的章节是:
- 课程目标
- VMWare WorkStation 安装
- 创建虚拟机
- 安装 Centos 7 操作系统
- Centos 7 网络配置方式说明
- Centos 7 网络配置
- 使用客户端登录操作虚拟机
- 克隆三台虚拟机
- 修改主机名
- ip 映射主机名
- 配置无密钥登录
- 虚拟机的文件上传和下载
- 关闭防火墙
- 安装 Java
请在看本篇博客之前务必学习完上面视频课程中章节,如果你能学习完 三天入门大数据实操课程 所有的章节的话就更好,因为你学完这个课程可以有以下三大收获:
- 搭建一个属于自己的大数据集群
- 使用大数据技术处理大数据文件
- 建立大数据技术知识体系架构
Hadoop 安装
安装前
分别在 master、slave1、slave2 三台机器的 root 用户下的主目录下创建目录 bigdata,即执行下面的命令:
mkdir ~/bigdata
Hadoop 安装包下载
我们下载安装包的时候一般会去官网下载,Hadoop 的官网是 https://hadoop.apache.org/ 。
Hadoop 所有版本的安装包都放在 https://archive.apache.org/dist/hadoop/common/ 这个网址中,我们可以根据自己的需求下载相应的版本。
我们这篇文章以 Hadoop 2.x 系列的 Hadoop 2.7.5 版本为例来进行安装。
实际上,Hadoop 2 中的所有版本的安装步骤基本都是一致的。
我们可以在 master 机器上通过下面的命令来下载 Hadoop 安装包:
## 进入到主目录下的 bigdata 目录下
cd ~/bigdata
## 使用 wget 下载 hadoop 2.7.5 的安装包
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.5/hadoop-2.7.5.tar.gz
第一次运行上面的 wget 命令的时候,会报如下的错误:
[root@master bigdata]# wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.5/hadoop-2.7.5.tar.gz
-bash: wget: command not found
当出现上面的错误的时候,我们需要使用 yum 来安装 wget :
## 安装 wget 命令
yum -y install wget
然后再执行下面的命令:
## 使用 wget 下载 hadoop 2.7.5 的安装包
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.5/hadoop-2.7.5.tar.gz
上面命令执行完后,在当前的目录下会出现名字为 hadoop-2.7.5.tar.gz 的压缩安装包。我们通过下面的命令解压安装包:
## 解压 hadoop 压缩安装包
tar zxvf hadoop-2.7.5.tar.gz
执行完后,在当前的目录下会出现一个名为 hadoop-2.7.5 的文件目录,这个目录就是 hadoop 的安装目录。
至此,Hadoop 安装包下载完毕。
在 Hadoop 中包含了 3 个技术组件,分别是:
- 分布式存储技术 - HDFS
- 分布式资源管理技术 - Yarn
- 分布式计算技术 - MapReduce
那么,我们常说的 Hadoop 安装,实际上就包含了 HDFS 的安装、Yarn 的安装以及 MapReduce 的安装,我们接下来分别配置安装。
HDFS 配置安装
修改配置
执行下面的命令进入到 hadoop 的配置文件所在的目录:
cd ~/bigdata/hadoop-2.7.5/etc/hadoop/
1. 修改 core-site.xml 配置文件
vi core-site.xml
在 configuration 标签中添加如下的内容:
fs.defaultFS
hdfs://master:9999
表示HDFS的基本路径
修改完后进行保存退出。
2. 创建 NameNode 和 DataNode 需要的文件目录
在 master 机器上执行下面的命令:
## 创建 NameNode 需要存储数据的文件目录
mkdir -p ~/bigdata/dfs/name
## 创建 DataNode 需要存放数据的文件目录
mkdir -p ~/bigdata/dfs/data
3. 修改 hdfs-site.xml 配置文件
vi hdfs-site.xml
在 configuration 标签中添加如下的内容:
dfs.replication
1
表示数据块的备份数量,不能大于DataNode的数量
dfs.namenode.name.dir
/home/hadoop-twq/bigdata/dfs/name
表示 NameNode 需要存储数据的文件目录
dfs.datanode.data.dir
/home/hadoop-twq/bigdata/dfs/data
表示 DataNode 需要存放数据的文件目录
添加完后保存退出。
4. 修改 slaves 文件
执行下面的命令将 slaves 的机器名字填入到 slaves 文件中:
vi slave2
删除文件中 localhost ,然后添加如下内容:
slave1
slave2
5. 配置 Hadoop 依赖的 JAVA_HOME
修改配置 hadoop-env.sh :
vi hadoop-env.sh
添加如下的 JAVA_HOME
export JAVA_HOME=/usr/local/lib/jdk1.8.0_161
6. 拷贝配置到 slave1 和 slave2 上
在 master 机器中执行如下的命令:
## 将 NameNode 存储的文件目录以及 DataNode 存储的文件目录拷贝到 slave1 和 slave2 中
scp -r ~/bigdata/dfs root@slave1:~/bigdata
scp -r ~/bigdata/dfs root@slave2:~/bigdata
## 将在 master 中配置好的 hadoop 安装目录拷贝到 slave1 和 slave2 中
scp -r ~/bigdata/hadoop-2.7.5 root@slave1:~/bigdata
scp -r ~/bigdata/hadoop-2.7.5 root@slave2:~/bigdata
7. 配置环境变量
在 master 机器上执行下面的命令,配置 hadoop 的环境变量:
## 修改环境变量
vi ~/.bash_profile
添加如下的内容:
export HADOOP_HOME=~/bigdata/hadoop-2.7.5
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
然后执行下面的命令,使得环境变量生效:
source ~/.bash_profile
8. 启动验证
到目前为止,HDFS 的配置已经全部结束,接下来我们启动 HDFS 集群,并且验证。
第一次启动 HDFS 之前,需要先对集群做格式化处理,执行下面的命令:
## 格式化 HDFS 集群的 namenode
hdfs namenode -format
注意:格式化只能执行一次,如果你执行了多次,那么集群启动的时候会不正常,这个时候的解决方案就是重新安装。
接下来我们在 master 节点中执行下面的命令来启动 HDFS 集群:
start-dfs.sh
我们分别在 master 、slave1、slave2 机器上执行 jps 命令,如果能看到如下的进程,说明机器成功启动:
我们也可以打开浏览器,访问网址:http://master:50070/ 。 如果出现下面的界面,也说明 HDFS 安装成功:
9. 停止 HDFS 集群
我们可以在 master 机器上执行下面的命令来停止 HDFS 集群:
stop-dfs.sh
Yarn 配置安装
我们现在基于上面 HDFS 的安装配置来配置安装 Yarn,你会发现还是很简单的。
1. 创建 Yarn 存储临时数据的文件目录
在 master 机器上执行如下命令:
mkdir -p ~/bigdata/yarn/local-dir
2. 修改 yarn-site.xml 配置文件
在 master 机器上执行如下的命令来修改 yarn-site.xml 文件:
cd ~/bigdata/hadoop-2.7.5/etc/hadoop/
vi yarn-site.xml
在文件中的 configuration 标签中增加如下的内容:
yarn.resourcemanager.hostname
master
表示ResourceManager安装的主机
yarn.resourcemanager.address
master:8032
表示ResourceManager监听的端口
yarn.nodemanager.local-dirs
/home/hadoop-twq/bigdata/yarn/local-dir
表示nodeManager中间数据存放的地方
yarn.nodemanager.resource.memory-mb
1630
表示这个NodeManager管理的内存大小
yarn.nodemanager.resource.cpu-vcores
2
表示这个NodeManager管理的cpu个数
3. 拷贝 yarn 相关配置到 slave1 和 slave2 中
在 master 机器上执行如下的命令:
scp ~/bigdata/hadoop-2.7.5/etc/hadoop/yarn-site.xml root@slave1:~/bigdata/hadoop-2.7.5/etc/hadoop/
scp ~/bigdata/hadoop-2.7.5/etc/hadoop/yarn-site.xml root@slave2:~/bigdata/hadoop-2.7.5/etc/hadoop/
scp -r ~/bigdata/yarn/local-dir root@slave1:~/bigdata/
scp -r ~/bigdata/yarn/local-dir root@slave2:~/bigdata/
4. 启动验证
在 master 机器上执行下面的命令,来启动 yarn :
start-yarn.xml
我们可以在三台机器上执行 jps 来查看 yarn 的相关进程,如下图:
看到以上三个进程,说明 Yarn 集群安装成功。
我们也可以打开浏览器,输入网址:http://master:8088/ 来访问 Yarn 集群,如果出现下面的界面,也可以说明集群安装成功:
5. 停止 Yarn 集群
我们可以在 master 机器上执行下面的命令来停止 Yarn 集群:
stop-yarn.sh
MapReduce 配置安装
在安装 MapReduce 之前,需要先保证 Yarn 集群是停止的,可以通过执行 stop-yarn.sh 来完成。
1. 修改 yarn-site.xml 配置
在 master 机器上修改 yarn-site.xml 文件:
cd ~/bigdata/hadoop-2.7.5/etc/hadoop/
vi yarn-site.xml
添加一个配置项:
yarn.nodemanager.aux-services
mapreduce_shuffle
为map reduce应用打开shuffle 服务
2. 修改 mapred-site.xml 配置
在 master 机器上执行如下的命令:
## 创建 mapred-site.xml 文件
cp mapred-site.xml.template mapred-site.xml
然后修改 mapred-site.xml 配置文件:
vi mapred-site.xml
添加如下的配置:
mapreduce.framework.name
yarn
向yarn申请资源
3. 将 MapReduce 相关的配置文件同步到 slave1 和 slave2 上
在 master 中执行下面的命令:
scp yarn-site.xml mapred-site.xml root@slave1:~/bigdata/hadoop-2.7.5/etc/hadoop
scp yarn-site.xml mapred-site.xml root@slave2:~/bigdata/hadoop-2.7.5/etc/hadoop
4. 启动 yarn
在 master 机器上执行下面的命令
start-yarn.sh
5. 验证 MapReduce
在 master 上执行下面的命令:
## 准备目录和数据
hadoop fs -mkdir /input
hadoop fs -put ~/bigdata/hadoop-2.7.5/etc/hadoop /input
hadoop fs -rm -r /output
## 执行 MapReduce 任务
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar grep /input/hadoop /output 'dfs[a-z.]+'
出现下面的界面:
说明 MapReduce 的配置安装也是成功的。