1.准备工作

(准备工作需要三台虚拟机都进行操作)

1.1准备三台centos7的虚拟机

在vm中安装好三台centos7的虚拟机

centos7搭建hadoop3.1.4环境_环境变量

1.2更改虚拟机的主机名

使用  hostnamectl set-hostname hostname   命令修改主机名

为三台虚拟机分别更改主机名为node1,node2,node3(名字可以自己取,最好有个顺序)

[root@localhost ~]# hostname          #查看当前的主机名

localhost

[root@localhost ~]# hostnamectl  set-hostname  node1      #永久修改主机名,node1为自己修改的主机名

[root@localhost ~]# hostname           # 查看主机名是否修改成功

hadoop-1

1.3修改虚拟机ip

配置文件的位置:vi  /etc/sysconfig/network-scripts/ifcfg-ens33

配置文件 ifcfg-ens33 每个人可能不一样,大家按自己的来。

修改网卡配置文件如下:

TYPE=Ethernet
BOOTPROTO=static    #将dhcp改为static 表示手动设置静态IP
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=c2fc8f33-3273-45c6-86c0-96240601e105
DEVICE=ens33    #网卡名
ONBOOT=yes    #改为yes,表示自动激活网卡

#以下内容需自己添加
IPADDR=192.168.5.210    #IP地址(根据自己的地址池修改)
NETMASK=255.255.255.0    #子网掩码
GATEWAY=192.168.5.2    #网关IP
DNS1=192.168.5.2    #DNS配置选择和网关一致即可

重启网络服务

[root@code1 ~]# service network restart

1.4修改hosts文件

hosts文件位置:vi /etc/hosts

#在文件中添加集群所有主机的IP和主机名的对应关系,IP 与主机名之间使用一个 TAB 键分隔

192.168.5.210   node1  
192.168.5.220   node2
192.168.5.230   node3

1.5关闭防火墙

centos7 中使用 systemctl 命令来管理服务,命令如下:

[root@localhost ~]# firewall-cmd --state  				   #查看防火墙状态
[root@localhost ~]# systemctl disable firewalld            # 永久关闭防火墙(重启生效)
[root@localhost ~]# systemctl stop firewalld               # 临时关闭防火墙(立即生效)

1.6同步时间

 centos7同步时间命令:

yum install ntpdate              #安装过程中,需要按提示输入两次Y或yes
ntpdate cn.pool.ntp.org          #安装完毕后,执行该语句同步时间

1.7ssh免密登录

实现三台虚拟机之间免密登录

ssh-keygen -t rsa        #安装过程中要按4个回车,生成公钥、私钥

将公钥分别拷贝其他机器上,如在node1上将公钥拷贝到node2和node3。

ssh-copy-id node2
ssh-copy-id node3

测试三台虚拟机之间的免密登录

ssh node3       #登录到node3上

使用exit命令登出

[root@node1 ~]# ssh node3
Last login: Sat Oct  2 14:00:33 2021 from 192.168.5.1
[root@node3 ~]# exit
登出
Connection to node3 closed.

1.8创建统一工作目录    

mkdir -p /export/server/      #软件安装路径     
mkdir -p /export/data/       #数据存储路径     
mkdir -p /export/software/     #安装包存放路径 

 

2.下载安装jdk  

(以下操作可以先对一台虚拟机进行操作,然后在发到其他的虚拟机上)

2.1在官网(Java Downloads | Oracle)下载jdk1.8版本

(官网下载需要注册oracle账号,若嫌麻烦可以在我的百度网盘上下载jdk和Hadoop的安装包

    链接:https://pan.baidu.com/s/1pn71mprVUWJXDeraauWkIQ 
    提取码:yjjn )

centos7搭建hadoop3.1.4环境_hadoop_02

2.2将jdk上转到虚拟机中

将jdk上传到虚拟机的 /export/software/ 目录下  (上传及操作可以使用XShell+Xftp)

2.3对jdk进行解压安装

cd /export/software/                 # 切换到jdk的安装包路径               
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /export/server/      # 进行解压到 /export/server/ 路径下

2.4配置环境变量

vi /etc/profile
JAVA_HOME=/export/server/jdk1.8.0_181(这里 JAVA_HOME=你自己的jdk的安装路径)
CLASSPATH=.:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
source /etc/profile       # 令配置文件立即生效

2.5测试

javac或者java -version

 下图代表JDK安装成功

centos7搭建hadoop3.1.4环境_hadoop_03

centos7搭建hadoop3.1.4环境_java_04

2.6分发同步安装包及配置文件

# 发送jdk文件
scp -r /export/server/jdk1.8.0_181 root@node2:/export/server/
scp -r /export/server/jdk1.8.0_181 root@node3:/export/server/
# 发送配置文件
scp -r /etc/profile root@node2:/etc/
scp -r /etc/profile root@node3:/etc/

 2.7在其他虚拟机上更新配置文件

source /etc/profile           #重新加载环境变量
3.hadoop安装

3.1在官网(hadoop下载)选择下载hadoop3.1.4

centos7搭建hadoop3.1.4环境_环境变量_05

3.2上传解压安装hadoop

将hadoop上传到 /export/software 路径下,进行解压安装

cd /export/software/                 # 切换到hadoop的安装包路径 
tar zxvf hadoop-3.1.4-bin-snappy-CentOS7.tar.gz -C /export/server/

3.3配置hadoop的环境变量

vim /etc/profile
export HADOOP_HOME=/export/server/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile           #重新加载环境变量

3.4测试

 centos7搭建hadoop3.1.4环境_主机名_06

4.修改hadoop的配置文件

4.1core-site.xml

<configuration>
    <!-- 指定 namenode 的通信地址 默认 8020 端口 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:8020</value>
    </property>

<!-- 指定 hadoop 运行时产生文件的存储路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/export/data/hadoop-3.1.4</value>
    </property>
</configuration>

4.2hadoop-env.sh 

#配置JAVA_HOME
export JAVA_HOME=/export/server/jdk1.8.0_65

4.3hdfs-site.xml 

<!-- 设定SNN运行主机和端口。-->
<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node2:9868</value>
    </property>
</configuration>

4.4mapred-site.xml

<configuration>
    <!-- mr程序默认运行方式。yarn集群模式 local本地模式-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!-- MR App Master环境变量。-->
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <!-- MR MapTask环境变量。-->
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
    <!-- MR ReduceTask环境变量。-->
    <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
    </property>
</configuration>

4.5yarn-site.xml 

<configuration>

<!-- Site specific YARN configuration properties -->
    <!-- yarn集群主角色RM运行机器。-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node1</value>
    </property>
    <!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MR程序。-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 每个容器请求的最小内存资源(以MB为单位)。-->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <!-- 每个容器请求的最大内存资源(以MB为单位)。-->
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>2048</value>
    </property>
    <!-- 容器虚拟内存与物理内存之间的比率。-->
    <property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>4</value>
    </property>

</configuration>

4.6workers 

node1
node2
node3

4.7在环境变量中添加配置

vi /etc/profile.d/my_env.sh  # my_env.sh是自己添加的文件,不建议直接修改profile.d

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

4.8分发同步安装包 

 在node1机器上将Hadoop安装包scp同步到node1,node2机器上 

scp -r /export/server/hadoop-3.1.4 root@node2:/export/server/
scp -r /export/server/hadoop-3.1.4 root@node3:/export/server/

# 发送配置文件
scp -r /etc/profile root@node2:/etc/
scp -r /etc/profile root@node3:/etc/

scp -r /etc/profile.d/my_env.sh root@node2:/etc/profile.d
scp -r /etc/profile.d/my_env.sh root@node3:/etc/profile.d

 

5.启动

5.1 格式化

启动之前需对每一台虚拟机进行格式化

cd /export/server/hadoop3.1.4/   # 先进入Hadoop路径下
hdfs namenode -format           # 进行格式化

5.2在hadoop的sbin目录下启动

start-all.sh

5.3启动完毕之后可以使用jps命令查看进程是否启动成功

centos7搭建hadoop3.1.4环境_主机名_07  centos7搭建hadoop3.1.4环境_主机名_08   centos7搭建hadoop3.1.4环境_环境变量_09

5.4访问hadoop web

地址:http://namenode_host:9870

其中namenode_host是namenode运行所在机器的主机名或者ip

centos7搭建hadoop3.1.4环境_java_10

Hadoop Web UI页面-YARN集群

地址:http://resourcemanager_host:8088

其中resourcemanager_host是resourcemanager运行所在机器的主机名或者ip

centos7搭建hadoop3.1.4环境_配置文件_11