注意:
一,jdk使用版本号为1.8.x版本即可
二,hadoop使用版号为3.1.3版本
三,所有软件均解压在"/opt/"文件目录下
四,本次集群搭建需要四台虚拟机
1,基础准备工作
在jdk与hadoop安转部署前需要做好以下准备工作:
###创建好四台虚拟机###
主机名 | IP地址 | 关系对应 |
---|---|---|
hadoop01 | 192.168.137.131 | 主节点 |
hadoop02 | 192.168.137.132 | 从节点一 |
hadoop03 | 192.168.137.133 | 从节点二 |
hadoop04 | 192.168.137.134 | 从节点三 |
(需要修改主机名,IP地址,hosts文件)
1.1,修改主机名
主节点:
[root@hadoop01 ~]# hostnamectl set-hostname hadoop01
从节点一:
[root@hadoop02 ~]# hostnamectl set-hostname hadoop02
从节点二:
[root@hadoop03 ~]# hostnamectl set-hostname hadoop03
从节点三:
[root@hadoop04 ~]# hostnamectl set-hostname hadoop04
1.2,修改IP地址
命令:vim /etc/systemctl/network-scripts/ifcfg-ens33
#将第四行内容第四行内容修改为以下内容(每个节点均要修改)
#修改前
BOOTPROTO="dchp"
#修改后
BOOTPROTO="static"
#在文件最后添加
IPADDR=192.168.137.131
NETMASK=255.255.255.0
GATEWAY=192.168.137.2
DNS1=192.168.137.2
1.2.1,网络重启
注意:修改IP地址后需重启网络
命令:systemctl restart network
1.3,修改"/etc/hosts"文件
[root@hadoop01 ~]# vim /etc/hosts
#添加
192.168.137.101 hadoop01
192.168.137.102 hadoop02
192.168.137.103 hadoop03
192.168.137.104 hadoop04
1.4,防火墙配置与软件安装配置
1.4.1,永久关闭防火墙
[root@hadoop01 ~ ]# systemctl stop firewalld //暂时性关闭防火墙
[root@hadoop01 ~ ]# systemctl disable firewalld //永久性关闭防火墙
systemctl status firewalld -----查看防火墙状态命令
1.4.2,程序访问权限文件配置
[root@hadoop01 ~ ]# vim /etc/sysconfig
#修改前
SELINUX=enforcing
||
\ /
#修改后
SELINUX=disable
1.5,克隆虚拟机
###在克隆主节点虚拟机时需要先把虚拟机关闭在方可克隆###
步骤:
右键关闭的主节点
管理->克隆
注意:需要克隆完整虚拟机,切记不要误选链接克隆虚拟机
注意:需要克隆三台虚拟机,克隆后的三台虚拟机节点需要再次修改IP地址,主机名并重启网络
2,免密登录
#需要在四个节点同时进行
2.1,创建公钥文件
命令:ssh-keygen -t rsa //需要在四台节点都要执行
注意:输入后一直回车知道出现以下类似图案才可接着输入一下命令
+---[RSA 2048]----+
| o o |
| = + + |
| . + o o |
| . . o |
| . . S o o |
| + .o . + |
|o =+ +..= o o |
|ooo=O+o..* o . |
|+.+BX+ ...+.E |
+----[SHA256]-----+
2.2,节点连接
命令:
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03
ssh-copy-id hadoop04
//这四条命令需要在四台节点都要执行一遍
2.3,测验免密登录
命令:
ssh hadoop01 //在每一个节点执行
#退出登录
命令:exit
3,JDK安装部署
###以下步骤所用jdk版本号为1.8.0_162版本
#为了更加方便快速便捷完成jdk安装部署可先在主节点完成配置,再将文件拷贝至其他节点
3.1,上传压缩包并解压
可直接将压缩包直接拉入xshell或虚拟机
[root@hadoop01 ~]# tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt
#将jdk压缩包解压到"/opt/"文件目录下
3.2,修改文件名
[root@hadoop01 opt]# mv jdk1.8.0_162 jdk
3.3,JDK环境变量配置
[root@hadoop01 opt]# vim /etc/profile
#在文件结尾添加
export JAVA_HOME=/opt/jdk
export PATH=$PATH:$JAVA_HOME/bin
#执行文件
[root@hadoop01 ~]# . /etc/profile
3.4,JDK安转部署验证
[root@hadoop01 ~]# java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
3.5,其他节点JDK文件及环境变量文件拷贝
#jdk文件
[root@hadoop01 ~]# scp -r /opt/jdk root@hadoop01:/opt/
[root@hadoop01 ~]# scp -r /opt/jdk root@hadoop02:/opt/
[root@hadoop01 ~]# scp -r /opt/jdk root@hadoop03:/opt/
[root@hadoop01 ~]# scp -r /opt/jdk root@hadoop04:/opt/
#环境变量文件
[root@hadoop01 ~]# scp -r /etc/profile hadoop01:/etc/profile
[root@hadoop01 ~]# scp -r /etc/profile hadoop02:/etc/profile
[root@hadoop01 ~]# scp -r /etc/profile hadoop03:/etc/profile
[root@hadoop01 ~]# scp -r /etc/profile hadoop04:/etc/profile
注意:在传输完后记得执行文件并查看版本java信息
3.6,JDK安装配置可能出现问题一
#查询结果的java版本信息可能与我们所安转部署的java版本不同
*********************解决方法如下*************************
3.6.1,删除系统自带java版本
[root@hadoop01 ~]# rm -rf /usr/bin/java
3.6.2,java版本替换
[root@hadoop ~]# ln -s /opt/jdk/bin/java /usr/bin/java
4,Hadoop安装部署
###以下步骤所用hadoop版本号为3.1.3版本
#为了更加方便快速便捷完成hadoop安装部署可先在主节点完成配置,再将文件拷贝至其他节点
4.1,上传压缩包并解压
[root@hadoop01 ~ ]# tar -zxvf hadoop-3.1.3.tar.gz -C /opt/
4.2,hadoop文件重命名
[root@hadoop01 opt ]# mv hadoop-3.1.3 hadoop
4.3,环境变量文件配置
[root@hadoop01 ~ ]# vim /etc/profile
#添加
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
#执行文件
[root@hadoop01 ~ ]# . /etc/profile
#完成以上操作后即可查询版本号
[root@hadoop01 ~]# hadoop version
Hadoop 3.1.3
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r ba631c436b806728f8ec2f54ab1e289526c90579
Compiled by ztang on 2019-09-12T02:47Z
Compiled with protoc 2.5.0
From source with checksum ec785077c385118ac91aadde5ec9799
This command was run using /opt/hadoop/share/hadoop/common/hadoop-common-3.1.3.jar
4.4,文件配置
[root@hadoop01 ~ ]# cd /opt/hadoop/etc/hadoop
4.4.1,配置hadoop-env.sh文件
[root@hadoop01 hadoop ]# vim hadoop-env.sh
# The java implementation to use. By default, this environment
# variable is REQUIRED on ALL platforms except OS X!
# export JAVA_HOME=
#在以上代码下一行添加
export JAVA_HOME=/opt/jdk
4.4.2,配置mapred-env.sh文件
[root@hadoop01 hadoop ]# vim mapred-env.sh
# Specify the JVM options to be used when starting the HistoryServer.
# These options will be appended to the options specified as HADOOP_OPTS
# and therefore may override any similar flags set in HADOOP_OPTS
#export MAPRED_HISTORYSERVER_OPTS=
#在以上代码下一行添加
export JAVA_HOME=/opt/jdk
4.4.3,配置yarn-env.sh文件
[root@hadoop01 hadoop ]# vim yarn-env.sh
###
# Node Manager specific parameters
###
#在以上代码的上一行加入以下内容
export JAVA_HOME=/opt/jdk
4.4.4,配置core-site.xml文件
4.4.4.1,在/opt/hadoop文件目录下创建tmp新文件夹用来保存临时文件
[root@hadoop01 hadoop ]# mkdir tmp
[root@hadoop01 hadoop ]# cd /opt/hadoop/etc/hadoop
#开始配置文件
[root@hadoop01 hadoop ]# vim core-site.xml
#进入文件后先删除原始文件最后两行蓝色字体代码
#添加
<configuration>
<property>
<!-- 配置hdfs地址 -->
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<!-- 保存临时文件目录,需先在/opt/hadoop下创建tmp目录 -->
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
<!--Hive安转配置-->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
4.4.5.配置hdfs-site.xml文件
[root@hadoop01 hadoop ]# vim hdfs-site.xml
#进入文件后先删除原始文件最后两行内容
#添加
<configuration>
<property>
<!-- 主节点地址 -->
<name>dfs.namenode.http-address</name>
<value>hadoop01:50070</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop/dfs/data</value>
</property>
<property>
<!-- 备份份数 -->
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<!-- 第二节点地址 -->
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop02:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
<description>配置为false后,可以允许不要检查权限就生成dfs上的文件,需防止误删操作</description>
</property>
</configuration>
4.4.6,配置mapred-site.xml文件
[root@hadoop01 hadoop ]# vim mapred-site.xml
#进入文件后先删除原始文件最后两行内容
#添加
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
</configuration>
4.4.7,配置yarn-site.xml文件
[root@hadoop01 hadoop ]# vim yarn-site.xml
#进入文件后先删除原始文件最后一行内容
#添加
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop01:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop01:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop01:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop01:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop01:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<!-- NodeManager中的配置,这里配置过小可能导致nodemanager启动不起来
大小应该大于 spark中 executor-memory + driver的内存 -->
<value>6144</value>
</property>
<property>
<!-- RsourceManager中配置
大小应该大于 spark中 executor-memory + driver的内存 -->
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>61440</value>
</property>
<property>
<!-- 使用核数 -->
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>2</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>忽略虚拟内存的检查,如果你是安装在虚拟机上,这个配置很有用,配上去之后后续操作不易出问题。</description>
</property>
<property>
<!-- 调度策略,设置为公平调度器 -->
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
</configuration>
4.4.8,配置workers文件
[root@hadoop01 hadoop ]# vim workers
#添加
hadoop02
hadoop03
hadoop04
4.4.9,修改/opt/hadoop/sbin目录下的集群启动与关闭文件
[root@hadoop01 hadoop ]# cd /opt/hadoop/sbin
4.4.9.1,配置start-dfs.sh与stop-dfs.sh文件
[root@hadoop01 sbin ]# vim start-dfs.sh
[root@hadoop01 sbin ]# vim stop-dfs.sh
#修改上面两个文件在文件头部添加如下配置:
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
4.4.9.1,配置start-yarn.sh与stop-yarn.sh文件
[root@hadoop01 sbin ]# vim start-yarn.sh
[root@hadoop01 sbin ]# vim stop-yarn.sh
#修改上面两个文件在文件头部添加如下配置:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
5,文件拷贝并执行
###hadoop文件需每个节点都存在
5.1,hadoop文件拷贝
5.1.1,环境变量文件拷贝
[root@hadoop01 ~ ]# scp -r /etc/profile hadoop02:/etc/profile
[root@hadoop01 ~ ]# scp -r /etc/profile hadoop03:/etc/profile
[root@hadoop01 ~ ]# scp -r /etc/profile hadoop04:/etc/profile
###执行文件###
[root@hadoop02 ~ ]# . /etc/profile
[root@hadoop03 ~ ]# . /etc/profile
[root@hadoop04 ~ ]# . /etc/profile
5.1.2,hadoop文件拷贝
[root@hadoop01 ~ ]# scp -r /opt/hadoop root@hadoop02:/opt/
[root@hadoop01 ~ ]# scp -r /opt/hadoop root@hadoop03:/opt/
[root@hadoop01 ~ ]# scp -r /opt/hadoop root@hadoop04:/opt/
6,集群启动
#需要在/opt/hadoop文件目录下执行
6.1,集群格式化
[root@hadoop01 hadoop-3.1.3]# bin/hdfs namenode -format
6.2,启动集群
[root@hadoop01 hadoop-3.1.3]# sbin/start-dfs.sh
[root@hadoop01 hadoop-3.1.3]# sbin/start-yarn.sh
7.集群检验
7.1,进程检验
####hadoop01####
[root@hadoop01 ~]# jps
5895 Jps
5624 ResourceManager
5356 NameNode
####hadoop02####
[root@hadoop02 ~]# jps
5152 SecondaryNameNode
5085 DataNode
5245 NodeManager
5357 Jps
####hadooop03####
[root@hadoop03 ~]# jps
5080 DataNode
5178 NodeManager
5278 Jps
####hadooop04####
[root@hadoop04 opt]# jps
5090 NodeManager
5190 Jps
4991 DataNode
7.2,网页版测试
在默认浏览器打开网址:https://主机名:50070