写在前面

如果你想通过这篇博客在本地成功搭建 Hadoop 集群的话,你需要先跟着视频课程 三天入门大数据实操课程 在本地搭建集群环境,在这个视频课程中你需要学习的章节是:

  • 课程目标
  • VMWare WorkStation 安装
  • 创建虚拟机
  • 安装 Centos 7 操作系统
  • Centos 7 网络配置方式说明
  • Centos 7 网络配置
  • 使用客户端登录操作虚拟机
  • 克隆三台虚拟机
  • 修改主机名
  • ip 映射主机名
  • 配置无密钥登录
  • 虚拟机的文件上传和下载
  • 关闭防火墙
  • 安装 Java

请在看本篇博客之前务必学习完上面视频课程中章节,如果你能学习完 三天入门大数据实操课程 所有的章节的话就更好,因为你学完这个课程可以有以下三大收获:

  1. 搭建一个属于自己的大数据集群
  2. 使用大数据技术处理大数据文件
  3. 建立大数据技术知识体系架构

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的基本路径

Hadoop 安装详细步骤_第1张图片

修改完后进行保存退出。

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

Hadoop 安装详细步骤_第2张图片

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 命令,如果能看到如下的进程,说明机器成功启动:

Hadoop 安装详细步骤_第3张图片

我们也可以打开浏览器,访问网址:http://master:50070/ 。 如果出现下面的界面,也说明 HDFS 安装成功:

Hadoop 安装详细步骤_第4张图片

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 的相关进程,如下图:

Hadoop 安装详细步骤_第5张图片

看到以上三个进程,说明 Yarn 集群安装成功。

我们也可以打开浏览器,输入网址:http://master:8088/ 来访问 Yarn 集群,如果出现下面的界面,也可以说明集群安装成功:

Hadoop 安装详细步骤_第6张图片

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.]+'

出现下面的界面:

Hadoop 安装详细步骤_第7张图片

说明 MapReduce 的配置安装也是成功的。