版本:Centos7 Haddop3.2.1 JDK1.8

装备工作

在安装前先要确保三台服务器之间能够ping通,已经安装了jdk,主机名的设置以及hosts文件的修改(ip和主机名映射关系),还有各主机的免密登录以及关闭防火墙。

本次安装用到的三台虚拟机如下:

ip

hostname

192.168.59.101

hadoop1(主机节点)

192.168.59.102

hadoop2(从节点)

192.168.59.103

hadoop3(从节点)

1、设置主机名称

hostnamectl set-hostname hostname

2、修改hosts文件添加ip映射关系

在三台机器中打开并编辑 vim /etc/hosts文件并追加ip和主机名的映射关系

3、配置免密登录

以hoaddp1为例,我们执行如下命令生成密匙

ssh-keygen -t rsa

执行这条命令一直按回车即可,生成成功后出现如下界面:

然后另外两台机器也要执行如上操作,这样三台机器就成功的生成了密匙,我这里使用的是root用户,密匙生成在/.ssh/目录下,接下来我们需要把三台服务器生成的公匙都追加到各服务器的/.ssh/authorized_keys文件中,操作如下:

#在hadoop1、hadoop2、hadoop3中都执行下面这三台命令
ssh-copy-id -i hadoop1
ssh-copy-id -i hadoop2
ssh-copy-id -i hadoop3

这样我们三台机器之间就可免密登录了。

4、关闭防火墙

#关闭防火墙
systemctl stop firewalld
#禁止开机启用防火墙
systemctl disable firewalld

集群安装Hadoop

1、下载安装包

在安装之前需要下载一下hadoop的安装包,由于官网下载较慢我这里贴出了一个镜像下载地址:http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz

2、解压

下载好之后上传到服务器,我这里上传到/opt目录中,然后解压:

tar -zxvf hadoop-3.2.1.tar.gz

3、修改配置文件

hadoop的配置文件在hadoop目录下的etc/hadoop中,这里只修改其中一台服务器的,其他的也一样,只要拷贝过去就行。

3.1、修改hadoop-env.sh文件,增加环境变量信息

vim /opt/hadoop/etc/hadoop/hadoop-env.sh

添加如下配置:

export JAVA_HOME=/usr/local/src/jdk1.8
export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop

注意:这两个目录是根据你的自己的配置而定的,不一定和我的一样。

3.2、修改core-site.xml文件

注意fs.defaultFS属性中的主机名需要和你配置的主机名保持一致

vim /opt/hadoop/etc/hadoop/core-site.xml

添加如下配置:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/data/hadoop_repo</value>
    </property>
</configuration>

3.3、修改hdfs-site.xml文件

注意:这里把hdfs中文件副本的数量设置为2,集群中副本数一定要小于等于从节点数

vim /opt/hadoop/etc/hadoop/hdfs-site.xml

添加如下配置:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop1:50090</value>
    </property>
</configuration>

3.4、修改mapred-site.xml

设置mapreduce使用的资源调度框架

vim /opt/hadoop/etc/hadoop/mapred-site.xml

添加如下配置:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

3.5、修改yarn-site.xml

设置yarn上支持运行的服务和环境变量白名单

vim /opt/hadoop/etc/hadoop/yarn-site.xml

添加如下配置:

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.env-whitelist</name>
    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop1</value>
  </property>
</configuration>

3.6、修改workers文件

增加所有从节点的主机名,一个一行,我这里使用hadoop1做主节点,那么hadoop2、hadoop3就是从节点了

vim /opt/hadoop/etc/hadoop/workers

首先删除文件中的默认localhost,然后添加从节点的主机名:

hadoop2
hadoop3

4、修改启动脚本

1、修改start-dfs.sh,stop-dfs.sh这两个脚本文件在文件中前面都增加如下内容:

这两个文件在hadoop目录下的sbin/目录下,修改内容如下:

HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

2、修改start-yarn.sh,stop-yarn.sh这两个文件在文件前面增加人如下内容:

这两个文件在hadoop目录下的sbin/目录下,修改内容如下:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

到此一台服务器就配置完成了,其他两台也配置也和上面一模一样,你只需要拷贝过去就行了,拷贝很多种怎么方便怎么来、就不贴出来了。

5、格式化namenode

在hadoop1中切换到hadoop目录下,执行如下命令:

bin/hdfs namenode -format

如果你看得到如下输出就说明你格式化成功了!

6、启动集群

在主节点的hadoop目录下执行如下命令启动所有进程:

sbin/start-all.sh

7:验证集群

接下来用jps这个命令来查看三个节点中已启动的进程来验证集群是否成功:

hadoop1:

hadoop2:

hadoop3:

除了用jps来验证还可以在浏览器中访问cluster界面也是可以的:

http://节点ip:8088

我的如下:

如果你没有访问到有可能是你的防火墙没有关闭。

到此一个简单的hadoop集群就搭建好了,理解有限,仅供自己参考!