HADOOP完全分布式搭建(饭制版)
1.虚拟机安装
安装系统
点击VMware Workstation左上角文件,新建虚拟机
选择自定义,点击下一步
点击下一步
选择稍后安装操作系统
(后续我们使用的操作系统为CentOS7),点击下一步
客户机系统选择Linux,版本选择CentOS 7 64位,点击下一步
自定义安装位置,点击下一步。
处理器配置2核2G
此虚拟机的内存大约分配4个G。
网络模式使用桥接模式(NAT),点击下一步。
默认LSI Logic(推荐),点击下一步
默认推荐SCSI
创建新虚拟磁盘,点击下一步
创建新虚拟磁盘,点击下一步
指定磁盘大小,点击下一步
指定磁盘文件,点击下一步
点击完成
点击编辑虚拟机配置
点击CD/DVD,使用ISO镜像文件,导入提前准备好的CentOS 7.9
点击确定。
点击网络配置,VMnet8,查看网关。
查看ip地址及默认网关等信息
注意:需要和虚拟机中设置的网络信息保持一致。
开机时,需要等待,一段时间后,系统自动进入安装界面。
操作系统语言我们选择English,点击Done
时区我们选择中国上海,点击Done
接着点击Begin Installation
我们点击ROOT PASSWORD
自己设置好账号和密码
等待系统安装完成,点击Reboot
进入到系统中,打开终端,设置为静态ip,添加ip地址,网关和域名
vi /etc/sysconfig/network-scripts/ifcfg-ens33
注意,一定要在网关下面分配,我分配的网址是192.168.66.102
重启网络服务
systemctl restart network
使用ip addr
命令检查是否成功
到此为止,我们的虚拟网络设置完成
2.环境以及免密配置
环境配置
1.修改主机名称为 “master” 与 hosts
文件,方便后续进行集群之间的映射。
hostnamectl set-hostname master
2.更新yum源,安装vim命令包
yum update
yum install -y vim
3.修改host
文件,提前添加映射,保存退出。(注意hosts文件的位置)
vim /etc/hosts
4.关闭防火墙
# 临时关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙
systemctl disable firewalld
5.安装相关软件
# 安装下载库
yum install -y epel-release
6.安装最小化安装工具
# net-tool:工具包集合,包含ifconfig等命令
yum install -y net-tools
7.卸载原生JDK,最小化安装的无需操作。
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
8.关机,克隆两台虚拟机,作为从机使用。
右击创建好的虚拟机,选择管理——克隆——点击下一页,完整克隆。
克隆完成后,启动两台克隆机器(注意不要同时启动,一台一台启动,不然会造成 IP 冲突,修改完 IP 后再启动其它机器)。打开终端,修改主机名称,设置为静态 ip ,添加 ip 地址、网关和域名,注意与主节点 master 中的 hosts 文件保持一致。设置完成后,重启网络,检查是否设置成功。
免密登录设置
此时,我们需要安装Xshell,Xftp
打开 Xshell 工具,点击左上角文件——新建,在弹出框中设置名称和 ip 地址,然后点击连接,随后输入 root
账号密码完成连接。
三台机子都连接成功之后,开始设置免密登录。我这里给出 master
主节点免密登录其它两台从机的示例,从机免密登录主机就自己再来一次吧。
# 生成公钥与私钥(三次回车)
ssh-keygen
# 向目标主机发送公钥(输入密码)
ssh-copy-id slave1
ssh-copy-id slave2
# 也需要对自己设置免密哦
ssh-copy-id master
# 免密登录,输入 exit 退出登录
ssh slave1
...
为其它两台从机设置好免密登录。
3.安装HADOOP和JDK1.8
HADOOP:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/
1.上传安装包和JDK1.8
我这里的 Hadoop 安装包是 hadoop-3.2.4 版本,根据自身需求来。在主节点 master 中的 /opt 目录下新建两个文件夹 module(存放数据) 和 sofeware (存放安装包)。使用 Xftp 工具将 Hadoop 安装包 和 JDK上传到 sofeware 文件夹下,便于后期管理。
xshell官网:https://www.xshell.com/zh/xshell
xftp官网:https://www.xshell.com/zh/xftp/
JDK1.8:https://repo.huaweicloud.com/java/jdk/8u191-b12/
注意,jdk下载后缀为tar.gz的文件。
2.解压文件
解压文件到 /opt/module
中。
tar -zxvf hadoop-3.2.4.tar.gz -C /opt/module/
tar -zxvf jdk-8u221-linux-x64.tar.gz -C /opt/module/
3.配置环境变量
vi /etc/profile
# 在文件末尾添加,将路径更改为你的安装路径
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_221
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.2.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存退出后执行命令 source /etc/profile
,使用配置的环境变量立即生效。
输入命令 java -version
验证 JDK 是否安装成功:
4.配置HADOOP-env.sh文件
该文件位于 $HADOOP_HOME/etc/hadoop
目录下,是一个配置 Hadoop 环境变量的文件,我们只需要在其中指定 Java 安装目录即可。
export JAVA_HOME=/opt/module/jdk1.8.0_221
5.配置 Hadoop 重要文件
在 Hadoop 中有四个重要的配置文件,位于 $HADOOP_HOME/etc/hadoop 目录下,分别是:
核心配置文件 —— core-site.xml
HDFS 配置文件 —— hdfs-site.xml
YARN 配置文件 —— yarn-site.xml
MapReduce 配置文件 —— mapred-site.xml
根据集群规划,配置文件:
core-site.xml
<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<!-- 指定 Hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 master -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>master</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<!-- nn(NameNode) web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>master:9870</value>
</property>
<!-- 2nn(SecondaryNameNode) web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:9868</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</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>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<!-- 历史服务器 web 端地址 -->ha
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
6.配置 workers/slaves 文件
在 Hadoop 的 2.x 版本中 workers 文件叫 slaves。
该文件位于 $HADOOP_HOME/etc/hadoop 目录下,用于指定集群运行的所有主机。
vi $HADOOP_HOME/etc/hadoop/workers
# 添加你的主机
master
slave1
slave2
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
7.文件分发
我们上面的操作都只是在主节点 master 中进行,现在我们需要把所有文件分发给从机 slave1 和 slave2。
# 分发环境变量
rsync -r /etc/profile slave1:/etc/profile
rsync -r /etc/profile slave2:/etc/profile
# 分发 JDK 和 Hadoop
scp -r /opt/module slave1:/opt
scp -r /opt/module slave2:/opt
分发完成后,进入两台从机,刷新分发的环境变量,立即生效。
source /etc/profile
8.启动集群
如果集群是第一次启动,则需要先格式化 NameNode 节点。
hdfs namenode -format
格式化完成后,启动集群:
# 在主节点中运行
start-dfs.sh
# 在 ResourceManager 节点中运行
start-yarn.sh
# 在主节点中启动历史服务器
mr-jobhistory-daemon.sh start historyserver
请在 /etc/profile
文件末尾添加如下参数
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
添加完成后分发到其它节点,并使其立即生效。
启动完成后,输入 jps
命令检查各节点是否正常:
其他的虚拟机也是一样的命令
在本地浏览器中查看 Hadoop web 界面:192.168.66.102:9870
(这里请修改为你的主机IP)
到此为止,我们的HADOOP就搭建完成了。