Hadoop 3.x是基于JDK1.8开发的,较其他两个版本而言,在功能和优化方面发生了很大的变化,其中包括HDFS 可擦除编码、多Namenode支持、MR Native Task优化等,所以在学习Hadoop的教程以及多次尝试后,总结了快速搭建Hadoop3.x的完全分布式集群的过程,特此写了这篇博客和大家一起分享,不足之处,请大家多多指教!
文章目录
- 一、环境依赖
- 1.VmWare虚拟机
- 2.hadoop安装包
- 3.jdk安装包
- 二、环境准备
- 1.VmWare创建Linux虚拟机
- 2.修改静态IP地址
- 3.下载搭建中所需要的工具
- 4.克隆虚拟机
- 修改虚拟机的主机名和IP地址
- 三、配置免密登录
- 四、集群搭建步骤
- 安装jdk和hadoop
- 进入hadoop配置文件
- 配置从机node3和node4
- 启动集群
一、环境依赖 1.VmWare虚拟机 2.hadoop安装包
本次实验使用的是hadoop版本是hadoop-3.3.0.tar.gz
下载地址:https://hadoop.apache.org/release/3.3.0.html
hadoop3只支持java8以上版本,本次实验使用的jdk版本是 jdk-8u271-linux-x64.tar.gz
下载地址:https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html
二、环境准备 1.VmWare创建Linux虚拟机
VmWare安装Linux
测试是否连接网络
ping www.caidu.com
如果ping不通,修改以下文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改内容
ONBOOT=yes
继续修改网络配置文件,设置静态IP
BOOTPROTO=static IPADDR=192.168.19.135 NETMASK=255.255.255.0 GATEWAY=192.168.19.2 DNS1=192.168.19.2
配置项内容应保证和你的虚拟机的网络是同一个局域网,查看方式
打开VMware→编辑→虚拟机网络编辑器
点击VMnet8的NAT模式–>点击NAT设置,查看网关地址
修改完成后重新启动网络即可
systemctl restart network3.下载搭建中所需要的工具
下载vim或nano工具
yum -install vim -y
yum -install nano -y
下载远程同步工具rsync(rsync 是一个常用的 Linux 应用程序,用于文件同步,实现增量覆盖。rsync 的最大特点是会检查发送方和接收方已有的文件,仅传输有变动的部分,默认规则是文件大小或修改时间有变动)
yum install rsync -y4.克隆虚拟机
克隆两台hadoop02虚拟机,并分别命名为Hadoop03和Hadoop04(虚拟机名称可以是其他的,配置集群时真正起作用的是主机名),克隆具体步骤如下图:
分别设置三台虚拟机的主机名: hadoop02为node2,hadoop03为node3, hadoop04为node4(为什么我的虚拟机名称和主机名名称都是从2开始,因为我的hadoop01用来搭建了伪分布集群)
[root@localhost ~]# hostnamectl set-hostname node1
同样的方法修改hadoop03的主机名为node3
hadoop04的主机名为node4
分别设置三台虚拟机的IP地址(请根据你的实际情况修改)
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
node2 ip设置为 192.168.19.135
node3 ip设置为 192.168.19.136
node4 ip设置为 192.168.19.137
重启网络
[root@localhost ~]# systemctl restart network
修改ip与主机名的映射
[root@localhost ~]# nano /etc/hosts
添加如下内容
192.168.19.135 node2 192.168.19.136 node3 192.168.19.137 node4
node3和node4同样的步骤
[root@localhost ~]# reboot
重启虚拟机
先关闭所有节点防火墙
查看当前节点的防火墙状态
[root@node2 ~]# systemctl status firewalld
若防火墙处于active状态,则关闭该节点的防火墙
[root@node2 ~]# systemctl stop firewalld
同样的方法再次在node3和node4上面操作
配置三台虚拟机之间免密登录
在node2使用如下命令生成私钥文件
[root@node2 ~]# ssh-keygen -t rsa
执行命令后后,连续敲三次回车键
拷贝公钥
[root@node2 ~]# ssh-copy-id node2
执行ssh-copy-id命令后,根据提示输入yes,再输入主机登录密码
继续执行
[root@node2 ~]# ssh-copy-id node3 [root@node2 ~]# ssh-copy-id node4
验证是否配对成功
[root@node2 ~]# ssh node3 Last login: Sun May 1 21:49:15 2022 from node2 [root@node3 ~]# exit logout Connection to node3 closed. [root@node2 ~]# ssh node4 Last login: Sun May 1 21:50:21 2022 [root@node4 ~]# exit logout Connection to node4 closed.
相同的步骤在node3、node4主机上操作
四、集群搭建步骤 安装jdk和hadoop在root用户下的当前目录下创建soft文件夹和installfile文件夹
[root@node2 ~]# mkdir soft [root@node2 ~]# mkdir installfile
将安装所需要的tar包导入到installfile文件夹中
可以使用sftp文件传输工具将下载好的文件传输到installfile文件夹中
分别解压hadoop-3.3.0.tar.gz和jdk-8u271-linux-x64.tar.gz到soft文件夹中
[root@localhost ~]# tar -zxvf installfile/hadoop-3.3.0.tar.gz -C soft
[root@localhost ~]# tar -zxvf installfile/jdk-8u271-linux-x64.tar.gz -C soft
创建软连接,方便后面设置环境变量和配置文件
[root@node2 soft]# ln -s hadoop-3.3.0 hadoop [root@node2 soft]# ln -s jdk1.8.0_271 jdk
配置环境变量
[root@node2 ~]# nano /etc/profile.d/my_env.sh
这里的my_env.sh是新建的脚本文件
添加如下内容
#JAVA_HOME export JAVA_HOME=/root/soft/jdk export PATH=$PATH:$JAVA_HOME/bin #HADOOP_HOME export HADOOP_HOME=/root/soft/hadoop export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
使用source命令刷新全局变量,让新增的shell脚本生效
[root@node2 ~]# source /etc/profile
查看jdk和hadoop是否安装成功
[root@node2 ~]# java -version java version "1.8.0_271" Java(TM) SE Runtime Environment (build 1.8.0_271-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode) [root@node2 ~]# hadoop version Hadoop 3.3.0 Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r aa96f1871bfd858f9bac59cf2a81ec470da649af Compiled by brahma on 2020-07-06T18:44Z Compiled with protoc 3.7.1 From source with checksum 5dc29b802d6ccd77b262ef9d04d19c4 This command was run using /root/soft/hadoop-3.3.0/share/hadoop/common/hadoop-common-3.3.0.jar进入hadoop配置文件
进入hadoop配置目录
[root@node2 ~]# cd $HADOOP_HOME/etc/hadoop
配置core-site.xml文件
[root@node2 hadoop]# nano mapred-site.xml
在
mapreduce.framework.name yarn mapreduce.jobhistory.address node2:10020 mapreduce.jobhistory.webapp.address node2:19888
配置日志采集,修改yarn-site.xml
[root@node2 hadoop]# nano yarn-site.xml
在
yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.hostname node3 yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME yarn.scheduler.minimum-allocation-mb 512 yarn.scheduler.maximum-allocation-mb 2048 yarn.nodemanager.pmem-check-enabled false yarn.nodemanager.vmem-check-enabled false
配置mapred-site.xml
[root@node2 hadoop]# nano mapred-site.xml
在
mapreduce.framework.name yarn mapreduce.jobhistory.address node2:10020 mapreduce.jobhistory.webapp.address node2:19888
配置mapred-site.xml
[root@node2 hadoop]# nano mapred-site.xml
在
mapreduce.framework.name yarn mapreduce.jobhistory.address node2:10020 mapreduce.jobhistory.webapp.address node2:19888
修改workers,将原有内容替换为如下内容
[root@node2 hadoop]# nano workers
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行
node2 node3 node4配置从机node3和node4
将node2的soft的jdk和hadoop安装文件分发到node3和node4上
[root@node2 ~]# rsync ~/soft
查看node3和node4是否存在文件
[root@node3 ~]# ls soft/ hadoop hadoop-3.3.0 jdk jdk1.8.0_271
[root@node4 ~]# ls soft/ hadoop hadoop-3.3.0 jdk jdk1.8.0_271
在node3上添加java和hadoop的环境变量
[root@node3 ~]# nano /etc/profile.d/my_env.sh
添加如下内容
#JAVA_HOME export JAVA_HOME=/root/soft/jdk export PATH=$PATH:$JAVA_HOME/bin #HADOOP_HOME export HADOOP_HOME=/root/soft/hadoop export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
使用source命令刷新全局变量,让新增的shell脚本生效
[root@node3 ~]# source /etc/profile
查看jdk和hadoop是否安装成功
[root@node3 ~]# java -version
[root@node3 ~]# hadoop version
输出版本号即配置成功
同样的方法配置node4 启动集群格式化文件系统
在node2机器执行格式化hdfs
[root@node2 ~]# hdfs namenode -format
看到successfully formatted为格式化成功
注意:格式化成功后,以后就不能再次格式化了
启动dfs,在node2机器上执行启动hdfs命令
[root@node2 ~]# start-dfs.sh
[root@node2 ~]# start-dfs.sh WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER. Starting namenodes on [node2] Last login: Sun May 1 20:19:21 CST 2022 from 192.168.19.1 on pts/0 Starting datanodes Last login: Mon May 2 09:45:44 CST 2022 on pts/0 Starting secondary namenodes [node4] Last login: Mon May 2 09:45:47 CST 2022 on pts/0
启动yarn,在node3机器上执行启动yarn命令
[root@node3 ~]# start-yarn.sh
[root@node3 ~]# start-yarn.sh Starting resourcemanager Last login: Mon May 2 10:33:20 CST 2022 from 192.168.19.1 on pts/0 Starting nodemanagers Last login: Mon May 2 10:33:29 CST 2022 on pts/0
使用jps查看各节点的进程,验证是否搭建成功
[root@node2 ~]# jps 2759 DataNode 2617 NameNode 3098 NodeManager 3213 Jps
[root@node3 ~]# jps 2256 Jps 1909 NodeManager 1560 DataNode 1771 ResourceManager
[root@node4 ~]# jps 1809 Jps 1557 SecondaryNameNode 1483 DataNode 1693 NodeManager
浏览器验证,使用IP地址和端口号进行访问
浏览器访问node2:输入192.168.19.135:9870或http://192.168.19.135:9870
浏览器访问node3:输入192.168.19.136:8088或http://192.168.19.136:8088
参考:尚硅谷hadoop教程资料,csdn博主:Hadoop_Liang
completed! 不足之处 请多指教


