1、下载Hadoop安装包
首先在Apache Hadoop官网下载对应的Hadoop安装包,我们这里以Hadoop-3.3.0为例;
下载地址:https://archive.apache.org/dist/hadoop/common/
找到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界面验证集群服务是否正常
- HDFS webui界面:http://192.168.93.128:9870
- YARN webui界面:http://192.168.93.128:8088
注意:
先要启动yarn,类似于上面的启动命令,如
sbin/start-yarn.sh
停止集群
在BigData01节点上执行停止命令
sbin/stop-all.sh
yarn的停止命令也类似于上述命令,这里不再赘述;
到这里,Hadoop伪分布式集群就已经安装成功了!