1、下载Hadoop安装包

首先在Apache Hadoop官网下载对应的Hadoop安装包,我们这里以Hadoop-3.3.0为例;

下载地址:https://archive.apache.org/dist/hadoop/common/

hadoop伪分布安装 hadoop伪分布式安装步骤_hadoop

 

找到hadoop-3.3.0.tar.gz下载下来即可;

2、配置基础环境

在正式安装Hadoop之前,我们还需要配置一些基础环境:

  • (1)设置静态ip
  • (2)设置hostname(主机名)
  • (3)设置IP和主机名的映射
  • (4)关闭firewalld(防火墙)
  • (5)配置ssh免密登录
  • (6)安装JDK

(1)设置静态IP

设置静态IP

vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改如下内容:

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"   # 改为静态IP地址形式
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="833abe02-fc56-4985-b92f-993b0506be6f"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.93.128  # 配置IP地址
GATEWAY=192.168.93.2   # 配置网关
DNS1=192.168.93.2  # 配置DNS

设置完后查看IP地址等是否设置成功

ip addr

具体结果如下:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:51:5b:67 brd ff:ff:ff:ff:ff:ff
    inet 192.168.93.128/24 brd 192.168.93.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::ad27:fa3c:ce0b:7733/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::6513:e94c:4f43:25e5/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

(2)设置主机名(hostname)

设置临时主机名和永久主机名

设置临时主机名

hostname BigData01

设置永久主机名

vi /etc/hostname

在vi模式的文件中添加如下内容:

BigData01

(3)配置IP和主机名的映射关系

vi /etc/hosts

在vi模式的文件中添加如下内容:

192.168.93.128 BigData01

(4)关闭防火墙

临时关闭防火墙

systemctl stop firewalld

永久关闭防火墙

systemctl disable firewalld

(5)ssh免密登录

ssh BigData01

第一次执行上述命令时需要输入密码

我们可以通过如下步骤配置ssh免登录

比如我们要配置BigData01机器免密码登录BigData01(即自己登录自己),因为我们这里配置的是伪分布式集群,只有一个节点,所以只需要配置自己登录自己的ssh免密登录即可;

先生成秘钥

ssh-keygen -t rsa

注意:(1)执行这个命令之后,需要连续按4次回车键回到Linux命令行,然后这个命令执行才结束,在按回车的时候无需输入任何内容。

执行之后会在~/.ssh目录下生产对应的公钥和私钥文件

ll ~/.ssh/

执行上述命令可以看到如下文件:

-rw-------. 1 root root 1675 Dec 16 20:33 id_rsa
-rw-r--r--. 1 root root  409 Dec 16 20:33 id_rsa.pub
-rw-r--r--. 1 root root 1836 Dec 18 22:05 known_hosts

然后,我们把公钥文件拷贝到免登录的机器上

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

我们这里是免密码登录自己,所以是拷贝到自己机器上

 

(6)安装JDK

先创建一个文件夹,专门用来存放软件安装包和安装软件

mkdir -p /data/software

把linux版本的JDK安装包上传到/data/software目录下(可以使用FTP工具),上传完之后,结果大致如下所示

cd /data/software
ll

可以看到如下所示的一些信息:

-rw-r--r--.  1 root root 194042837 Dec 16 20:52 jdk-8u202-linux-x64.tar.gz

解压JDK安装包

tar -zxvf jdk-8u202-linux-x64.tar.gz

重命名解压得到的文件夹名称

mv jdk-8u202 jdk1.8

配置环境变量JAVA_HOME

vi /etc/profile

在文件最后加上

export JAVA_HOME=/data/software/jdk1.8
export PATH=.:$JAVA_HOME/bin:$PATH

使修改的配置文件立即生效

source /etc/profile

 

3、安装Hadoop环境

上传和解压Hadoop安装包

首先将Hadoop安装包上传到Linux的/data/software目录下,上传之后如下所示:

cd /data/software
ll

可以看到如下文件:

-rw-r--r--.  1 root root 500749234 Dec 16 20:57 hadoop-3.3.0.tar.gz

解压Hadoop安装包到当前目录(即/data/software)

tar -zxvf hadoop-3.3.0.tar.gz

解压之后可使用 ll 命令查看具体包含的文件和文件目录:

total 88
drwxr-xr-x. 2 1001 1001   203 Jul  7 03:50 bin
drwxr-xr-x. 3 1001 1001    20 Jul  7 02:47 etc
drwxr-xr-x. 2 1001 1001   106 Jul  7 03:50 include
drwxr-xr-x. 3 1001 1001    20 Jul  7 03:50 lib
drwxr-xr-x. 4 1001 1001  4096 Jul  7 03:51 libexec
-rw-rw-r--. 1 1001 1001 22976 Jul  5 01:29 LICENSE-binary
drwxr-xr-x. 2 1001 1001  4096 Jul  7 03:50 licenses-binary
-rw-rw-r--. 1 1001 1001 15697 Mar 25  2020 LICENSE.txt
-rw-rw-r--. 1 1001 1001 27570 Mar 25  2020 NOTICE-binary
-rw-rw-r--. 1 1001 1001  1541 Mar 25  2020 NOTICE.txt
-rw-rw-r--. 1 1001 1001   175 Mar 25  2020 README.txt
drwxr-xr-x. 3 1001 1001  4096 Dec 19 21:46 sbin
drwxr-xr-x. 4 1001 1001    31 Jul  7 04:27 share

简单介绍一下几个文件目录的作用:

  • bin:主要包含一些hdfs、yarn等脚本,主要用于操作hadoop集群中的hdfs和yarn组件的;
  • sbin:主要包含一些以start或者stop为前缀的脚本,这些主要用于启动或者停止集群中的组件;
  • etc/hadoop:主要是hadoop的一些配置文件;

为了方便使用bin和sbin目录下的一些脚本,我们可以配置一下环境变量;

vi /etc/profile

主要修改如下:

export JAVA_HOME=/data/software/jdk1.8
export HADOOP_HOME=/data/software/hadoop-3.3.0
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH

修改Hadoop相关配置文件

进入配置文件所在目录(当前所在目录为/data/software):

cd hadoop-3.3.0/etc/hadoop/
ll

主要有如下文件或者文件目录:

total 176
-rw-r--r--. 1 1001 1001  9213 Jul  7 03:33 capacity-scheduler.xml
-rw-r--r--. 1 1001 1001  1335 Jul  7 03:34 configuration.xsl
-rw-r--r--. 1 1001 1001  2567 Jul  7 03:33 container-executor.cfg
-rw-r--r--. 1 1001 1001   956 Dec 16 21:15 core-site.xml
-rw-r--r--. 1 1001 1001  3999 Jul  7 02:46 hadoop-env.cmd
-rw-r--r--. 1 1001 1001 17027 Dec 16 21:09 hadoop-env.sh
-rw-r--r--. 1 1001 1001  3321 Jul  7 02:46 hadoop-metrics2.properties
-rw-r--r--. 1 1001 1001 11765 Jul  7 02:46 hadoop-policy.xml
-rw-r--r--. 1 1001 1001  3414 Jul  7 02:46 hadoop-user-functions.sh.example
-rw-r--r--. 1 1001 1001   683 Jul  7 02:56 hdfs-rbf-site.xml
-rw-r--r--. 1 1001 1001   958 Dec 19 21:12 hdfs-site.xml
-rw-r--r--. 1 1001 1001  1484 Jul  7 02:55 httpfs-env.sh
-rw-r--r--. 1 1001 1001  1657 Jul  7 02:55 httpfs-log4j.properties
-rw-r--r--. 1 1001 1001   620 Jul  7 02:55 httpfs-site.xml
-rw-r--r--. 1 1001 1001  3518 Jul  7 02:47 kms-acls.xml
-rw-r--r--. 1 1001 1001  1351 Jul  7 02:47 kms-env.sh
-rw-r--r--. 1 1001 1001  1860 Jul  7 02:47 kms-log4j.properties
-rw-r--r--. 1 1001 1001   682 Jul  7 02:47 kms-site.xml
-rw-r--r--. 1 1001 1001 14032 Jul  7 02:46 log4j.properties
-rw-r--r--. 1 1001 1001   951 Jul  7 03:34 mapred-env.cmd
-rw-r--r--. 1 1001 1001  1764 Jul  7 03:34 mapred-env.sh
-rw-r--r--. 1 1001 1001  4113 Jul  7 03:34 mapred-queues.xml.template
-rw-r--r--. 1 1001 1001   844 Dec 19 21:14 mapred-site.xml
drwxr-xr-x. 2 1001 1001    24 Jul  7 02:46 shellprofile.d
-rw-r--r--. 1 1001 1001  2316 Jul  7 02:46 ssl-client.xml.example
-rw-r--r--. 1 1001 1001  2697 Jul  7 02:46 ssl-server.xml.example
-rw-r--r--. 1 1001 1001  2681 Jul  7 02:51 user_ec_policies.xml.template
-rw-r--r--. 1 1001 1001    42 Dec 19 21:30 workers
-rw-r--r--. 1 1001 1001  2250 Jul  7 03:33 yarn-env.cmd
-rw-r--r--. 1 1001 1001  6329 Jul  7 03:33 yarn-env.sh
-rw-r--r--. 1 1001 1001  2591 Jul  7 03:33 yarnservice-log4j.properties
-rw-r--r--. 1 1001 1001  1105 Dec 19 21:25 yarn-site.xml

hadoop-env.sh

首先修改hadoop-env.sh文件,在文件末尾添加一些环境变量:

vi hadoop-env.sh

具体添加的环境变量如下:

export JAVA_HOME=/data/software/jdk1.8
export HADOOP_LOG_DIR=/data/hadoop_repo/logs/hadoop

core-site.xml

修改core-site.xml文件,注意在fs.defaultFS属性中的主机名需要与主节点保持一致

vi core-site.xml

修改内容如下:

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

hdfs-site.xml

修改hdfs-site.xml文件,把hdfs文件副本的数量设置为1,因为伪分布式集群中只有一个节点;

vi hdfs-site.xml

修改内容如下:

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
</configuration>

mapred-site.xml

修改mapred-site.xml,设置mapreduce使用的资源调度框架

vi mapred-site.xml

修改内容如下:

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

yarn-site.xml

修改yarn-site.xml文件,设置yarn上支持运行的服务和环境变量白名单。

vi 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>
</configuration>

注意:分布式集群在这个配置文件中还需要设置resourcemanager的hostname,否则nodemanager找不到resourcemanager节点。

workers

修改works文件,增加所有从节点的主机名

vi workers

增加如下内容:

BigData01

格式化HDFS

因为Hadoop中的HDFS是一个分布式的文件系统,文件系统在使用前是需要先格式化的,类似我们购买了一个新的磁盘,在安装系统之前需要先格式化使用;

cd /data/software/hadoop-3.3.0
bin/hdfs namenode -format

如看到类似下面这行日志,则表示namenode格式化成功;

INFO common.Storage: Storage directory /data/hadoop_repo/dfs/name has been successfully formatted.

 

修改启动和停止脚本

修改start-dfs.sh脚本文件

cd /data/software/hadoop-3.3.0/sbin/
vi start-dfs.sh

在文件前面增加如下内容:

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

修改stop-dfs.sh文件

vi stop-dfs.sh

在文件前面增加同start-dfs.sh同样的文件内容:

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

修改yarn启动和停止脚本

修改start-yarn.sh 和 stop-yarn.sh这两个脚本文件,在这两个文件前面分别增加如下内容:

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

启动集群

启动集群,在BigData01节点上执行如下命令

cd /data/software/hadoop-3.3.0
sbin/start-all.sh

验证集群

分别在3台机器上执行jps命令,进程信息如下所示:

BigData01:

jps

执行结果如下:

2438 SecondaryNameNode
2279 DataNode
3144 Jps
2154 NameNode
2666 ResourceManager
2794 NodeManager

这时候,我们可以通过webui界面验证集群服务是否正常

hadoop伪分布安装 hadoop伪分布式安装步骤_hadoop_02

 

hadoop伪分布安装 hadoop伪分布式安装步骤_hadoop伪分布安装_03

注意:

先要启动yarn,类似于上面的启动命令,如

sbin/start-yarn.sh

停止集群

在BigData01节点上执行停止命令

sbin/stop-all.sh

yarn的停止命令也类似于上述命令,这里不再赘述;

到这里,Hadoop伪分布式集群就已经安装成功了!