Hadoop集群搭建详细步骤

温馨提示:点击页面下方以展开或折叠目录

摘要:史上最详细的Hadoop-Spark集群搭建采坑过程,包括VMwareLinux-CentOS-7Java/JDKHadoopScala以及Spark的安装配置,图文并茂,每一个坑都填满。

文章说明
文章来源:本文由Word文件转换而来,因此保留了原始样式,字体为宋体Times New RomanConsolas
文章说明:史上最详细的Hadoop集群搭建过程,包括VMwareLinux-CentOS-7Java/JDKHadoopScala,以及Spark。原文共87页,字数共12497,合计29460字符,13章,段落数865,行数1335行,图片共113张。本文源码MarkDown文件字数共计47w+字符,行数2235行。
更新说明:(1)原文创建于2019-12-24,更新于2020-05-22,由于时间较久,其中CentOS-7已无1908版;(2)物理机安装环境为Windows 10 1503版,升级为Windows 10 1909版后无法使用VMware Workstation 15 Pro,应升级至15.5+,安装包和注册机网盘链接为【天翼云盘,点我下载】;(3)图片足有113张,加载速度较慢,请耐心等待~~
文章作者:鴻塵

1.概述

1.1.软件环境

1. 软件环境:VMware Workstation 15 Pro

2. 虚拟机操作系统(清华大学开源软件镜像站-CentOS7下载),下载链接地址:https://mirrors.tuna.tsinghua.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso

1.1 虚拟机主机名及使用的镜像文件
名称 系统及文件名
master CentOS-7-x86_64-Minimal-1908.iso
slave1 CentOS-7-x86_64-Minimal-1908.iso
slave2 CentOS-7-x86_64-Minimal-1908.iso

3. 网络:我们实验室使用校园网有以下两种方法:

1.连接xxxx_WIRELESS,然后在弹出的网页中登陆;

2.插入网线,然后在弹出的网页中登陆。在这种情况下,如果安装的虚拟机需要联网,必须装桌面版,然后在自带的FireFox中登陆。

图片

1.1 登陆网络的两种方式

4. 虚拟网络采用NAT模式,详见后文。踩过的坑有很多,试过桥接模式,在Windows物理主机、MasterSlave1Slave2台机器之间互ping,不能保证相互ping通。

2.安装VMware Workstation

安装最新版的VMware Workstation 15 Pro,注意不能直接双击安装包,而要右键“以管理员方式运行”(因为安装过程中需要创建相关VMware服务,可能会有权限的问题)。

基本是傻瓜式安装,一路下一步即可。

文件名VMware Workstation 15 Pro

网盘链接https://pan.baidu.com/s/1G-Z4r2sLisuYwJbuHsmPPA提取码:gf7q

许可证密钥:YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8


文件名
VMware-workstation-full-15.5.0-14665864

网盘链接https://pan.baidu.com/s/1ObkjLqzlY5KbAUYMErQN4g提取码:1314

许可证密钥:GF7TA-2VGD3-08EZZ-15XGG-X7KF2(若错误则需使用注册机KeyGen.exe激活,下载地址见顶部《文章说明》)

建议:1. 尽量不要安装在C盘,更改到其他盘符;2. 取消勾选“启动时检查产品更新”和“加入客户体验提升计划”;3. 显示“VMware Workstation Pro安装向导已完成”时不要点击“完成”,应该点击“许可证”,输入上面许可证密钥后再点击“输入”。

3.网络配置准备工作

3.1.VMware设置

VMware中点击“编辑” “虚拟网络编辑器”,点击“更改设置”,如下图。

图片

3.1 编辑虚拟网络

选择VMnet8(即NAT模式),如下图,点击“NAT设置”出现右图。其中,子网IP和子网掩码默认即可,网关IP将最后一位随意修改一下(与IP不同)。记住下图中的三个值:

图片

3.2 设置NAT模式
3.1 虚拟机中主机名及使用的镜像文件
名称 IP地址 备注
子网IP 192.168.176.0 默认值
子网掩码 255.255.255.0 默认值
网关IP 192.168.176.x 修改x,此处的值为x=2

3.2.控制面板网络设置

3.2.1.查看网卡

打开控制面板 网络和共享中心 更改适配器设置,如下图。

图片

3.3 控制面板网络连接情况

1之前安装的VMware版本为VM10,出现的不是“已启用”而是“未识别的网络”,通过安装最新版本VM15解决;

2可以发现,上图中没有VMnet0(桥接模式),这个问题应该是打开VMware时没有选择以管理员方式运行。

3.2.2.配置虚拟网卡VMnet8

双击VMnet8NAT模式),点击“属性”,先选中“Internet协议版本4(TCP/IPv4”然后点击“属性”,选择“使用下面的IP地址”和“使用下面的DNS服务器地址”,如图所示。

图片

3.4 设置虚拟网卡IP

 

其中子网掩码和默认网关的地址和2.1VMware设置中一致,IP地址不和子网IP相同,比如我在这里设置为20

3.3.查看物理主机信息

按“Windows键+R”输入“cmd”打开命令行,输入ipconfig /all查看物理主机的Windows IP设置,如图所示。

图片

3.5 查看Windows物理主机IP信息

 

可以看到,物理主机信息和VMware默认的值很不一样。这是因为Windows物理机本身是处于校园网中,获得的IP地址也是自动分配的,如果使用WiFi连接登陆则IP又不一样。此处的IP是插入网线获得的,保证IP不变。

3.2 Windows物理主机IP信息
Windows物理主机 IP地址 备注
IPv4地址 222.20.82.252 不同于VMwareVMnet
子网掩码 255.255.252.0 不同于VMwareVMnet
默认网关 222.20.83.254 不同于VMwareVMnet
DNS服务器1 202.114.0.131 默认值
DNS服务器2 202.114.0.242 默认值

 

4.安装虚拟机

4.1.安装Master

4.1.1.说明

1. 必须在网络配置完成后才可进行接下来的步骤。

2. 为保证以下顺利进行,需要保证VMware服务已全部开启(VM15应该无需考虑),查看是否启动步骤:此电脑右键 管理 双击服务和应用程序 双击服务,确保VMware相关服务的状态为“正在运行”(至少保证①Authorization Service、②NAT Service、③Workstation Server三者正在运行),如下图。

图片

4.1 启动VMware相关的服务

4.1.2.新建虚拟机

打开“新建虚拟机向导” 选择自定义,下一步 硬件兼容性默认,下一步 选择“稍后安装操作系统”,下一步 操作系统选择Linux,版本选择CentOS 7 64位,下一步 修改虚拟机名称【默认位置可在“编辑” “首选项”修改,默认C盘,也可手动指定,但必须先修改位置然后命名虚拟机名称】,如下图

图片

4.2 新建虚拟机向导

 

处理器配置默认即可 虚拟机内存选择2048MB(如果自己电脑内存小于8G,建议默认1024MB 网络类型选择“网络地址转换NAT”,下一步 I/O控制器类型和磁盘类型默认 选择“创建新虚拟磁盘” 磁盘大小默认20.0GB,选择“拆分成多个文件”由于拆分成多个文件,因此实际不会使用20.0GB 指定磁盘文件默认 点击“自定义硬件”弹出硬件窗口,在“硬件”窗口中点击“新CD/DVDIDE)”选中使用ISO映像文件并选择下载好的CentOS-7-x86_64-Minimal-1908.iso文件(如图4.3所示然后点击关闭,最后点击完成。

图片

4.3 选择ISO映像文件

 

4.1.3.安装虚拟机

说明:因为我的集群已经搭建完成,下文以Tester为例。

图片

4.4 虚拟机新建完成

选中新建的虚拟机Tester,点击“开启此虚拟机”,如上图。进入安装界面,输入“chi”以筛选,然后选择中文,如下图。

图片

4.5 虚拟机安装界面选择语言

点击“安装位置”,无需更改,直接点击“完成”,然后点击“网络和主机名”,如下图。

图片

4.6 安装信息摘要

在弹出的“网络和主机名”中将主机名改为“master(此处以tester为例)”后点击“应用”,右边“当前主机名”会变为master(此处以tester为例),如图。

图片

4.7 修改主机名(tester为例

4.1.4.配置Master网络

1修改主机名后,点击“配置”。在“以太网”选项卡中,将“设备”改为带有MAC地址的ens3300:0C:29:03:C5:51),如图所示。

图片

4.8 配置之“以太网”选项卡(tester为例

2在“IPv4设置”选项卡中,首先将方法修改为“手动”,然后点击“Add”添加地址和DNS服务器。其中,masterIP地址设置为192.168.172.200tester为例,此处设置的是192.168.176.203);子网掩码各节点相同(与VMware虚拟网络中的子网掩码一致),都是255.255.255.0,也可写为24,两种写法是等价的;DNS服务器地址有两个202.114.0.131202.114.0.242,以英文逗号分隔,且无多余空格

配置如下图所示。

图片

4.9 配置之IPv4设置”选项卡(tester为例

 

3在“IPv6设置”选项卡中,将方法改为“忽略”以禁用,配置完成点击“保存”。然后打开网络连接,可以看到配置生效,如图所示。

图片

4.10 打开以太网连接配置生效(tester为例

4最后在“网络和主机名”页面点击完成,可以看到所有安装信息均已完成,如图所示,最后点击“开始安装”。

图片

4.11 安装信息摘要全部完成配置

4.1.5.设置root密码

1由上开始安装后,界面如下图所示,此时必须设置root密码以完成带有警告图标的内容(只需要设置root密码,两处的标记即可正常)。

图片

4.12 CentOS7正在安装但尚未设置root密码

2点击设置root密码,如果密码强度太弱,则需要点击两次“完成”,如图所示。

图片

4.13 设置root密码

3完成root密码的设置,即使没有参加用户也不会有标记,点击“完成配置”,如图所示。

说明:在大数据集群搭建过程中,我们需要两个用户roothadoop,目前只需要root管理员即可。

图片

4.14 设置root密码

 

4点击“完成配置”后继续等待其他必要配置完成,最后点击重启,从而启动虚拟机master(此处为tester),如图所示。

图片

4.15 启动CentOS虚拟机Master(此处为Tester

4.2.安装Slave1

4.1,将虚拟机名称设置为“Slave1”,同时将主机名修改为“slave1且网络配置中slave1IP地址设置为192.168.172.201

4.3.安装Slave2

4.1,将虚拟机名称设置为“Slave2”,同时将主机名修改为“slave2且网络配置中slave2IP地址设置为192.168.172.202

至此,一主二次的虚拟机安装完成,如图所示(未删除测试机Tester)。

图片

4.16 一主二次集群MasterSlave1Slave2

 

5.虚拟机配置

5.1.设置各节点名称

Tester为例,输入并回车,按“I”键进入编辑模式。

输: [root@ tester ~] # vi /etc/sysconfig/network
 
# Created by anaconda

 

# Created by anaconda
    NETWORKING=yes
    HOSTNAME=master
    GATEWAY=192.168.176.2

编辑完成后,按“Esc”键退出编辑模式,然后按“Shift+:”,最后输入“wq”(必须小写)并回车保存退出。

内容编辑过,需要保存并退出,则输入“wq”;
内容编辑过,不保存强制退出,则输入“q!”;
③内容未编辑过,直接退出,则输入“q”。

设置完成后各节点名称图所示。

图片

5.1 设置Master节点名称

 

图片

5.2 设置Slave1节点名称

 

图片

5.3 设置Slave2节点名称

 

5.2.配置hosts

Tester为例,配置hosts

[root@tester ~]#vi /etc/hosts  

修改前原hosts文件内容为

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1      localhost localhost.localdomain localhost4 localhost4.localdomain4

修改hosts文件内容为

127.0.0.1localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1   localhostlocalhost.localdomainlocalhost4localhost4.localdomain4 192.168.176.203tester 192.168.176.201slave1 192.168.176.202slave2

 

保存之后,在Master将该文件分别拷贝至另外两个子节点,如图5.4所示

[root@master ~]#scp /etc/hosts root@192.168.176.201:/etc/
[root@master ~]#scp /etc/hosts root@192.168.176.202:/etc/

图片

5.4 远程拷贝hosts配置文件

 

设置完成后各节点hosts文件都是一样的,如下图所示。

图片

5.5 各主机的hosts配置(MasterSlave1Slave2相同

 

5.3.配置各节点网卡

Tester为例,配置网卡ens33。由于在安装虚拟机的过程中已经基本配置好网络,因此只需要修改为静态IP即可(理论上,这一步也不需要,默认值是BOOTPROTO=none

查看原始网卡信息如图所示

[root@tester ~]#cat /etc/sysconfig/network-scripts/ifcfg-ens33

图片

5.6 Tester网卡ens33信息

vi编辑此文件,将BOOTPROTO=none修改为BOOTPROTO=static,保存后重启网络:

[root@tester ~]#systemctl restart network

 

5.4.关闭防火墙

5.4.1.以Tester为例

Tester为例,首先查看防火墙状态status,如图所示(默认状态为开启):

[root@tester ~]#systemctl status firewalld

图片

5.7 查看防火墙状态

说明:我们需要禁用(永久关闭)防火墙,操作operation为“disable”;如果是临时关闭,则操作operation为“stop”;开启防火墙的操作operation为“start

禁用后需要重启网络并重启虚拟机(或者关闭<stop>防火墙即可,而不需要重启虚拟机)使之生效,再次查看状态,可以发现已经禁用,如图所示。

[root@tester ~]#systemctl disable firewalld  
[root@tester ~]#systemctl restart network  
[root@tester ~]#reboot(或者)systemctl stop firewalld  
[root@tester ~]#systemctl status firewalld  

图片

5.8 reboot重启后再次查看防火墙状态

 

说明该步骤分别在MasterSlave1Slave2上进行,禁用所有节点的防火墙。

 

5.4.2.Master关闭防火墙截图

Tester为例,首先查看防火墙状态(statusactiverunning(因为防火墙默认是开启的),然后禁用防火墙服务,此时防火墙依然是运行状态(因为在防火墙已经是开启的状态下禁用服务,只能影响下一次,所以需要重启生效或者手动关闭防火墙)。关闭(stop)防火墙后再次查看防火墙状态,可以看到其状态为inactivedead如图所示:

图片

5.9 Master关闭防火墙

5.5.互ping测试

5.5.1.Windows物理主机

打开cmd窗口,分别ping四台虚拟机(包括Tester),如图所示:

物理主机ping主节点Master

C:\Users\鴻塵>ping 192.168.176.200  

物理主机ping从节点Slave1

C:\Users\鴻塵>ping 192.168.176.201  

物理主机ping从节点Slave2

C:\Users\鴻塵>ping 192.168.176.202  

物理主机ping测试机Tester

C:\Users\鴻塵>ping 192.168.176.203

图片

5.10 Windows物理主机

5.5.2.Mater虚拟机

虚拟机Mater分别ping物理主机、虚拟机Slave1虚拟机Slave2和测试机Tester(此处未截图,实际能ping通),以及外网(百度),如图所示:

图片

5.11 Mater虚拟机

 

5.5.3.Slave1虚拟机

虚拟机Slave1分别ping物理主机、虚拟机Mater虚拟机Slave2和测试机Tester(此处未截图,实际能ping通),以及外网(百度),如图所示:

图片

5.12 Slave1虚拟机

 

5.5.4.Slave2虚拟机

虚拟机Slave2分别ping物理主机、虚拟机Mater虚拟机Slave1和测试机Tester(此处未截图,实际能ping通),以及外网(百度),如图所示:

图片

5.13 Slave2虚拟机

 

由上,集群内三台虚拟机可以相互通信,也可以和Windows物理主机相互通信,并且可访问外网。

 

6.JDK的安装与配置

由于Hadoop的编译及MapReduce的运行都需要使用JDK,所以需要在集群中的每一台机器上提前安装好能够满足Hadoop最低版本要求的JDK

参考文章:https://blog.csdn.net/github_38336924/article/details/82221258

6.1.检查是否已安装JDK及卸载

测试机Tester未安装过JavaTester为例

检查是否已安装JDK(中括号选其一),如下图(图中没有输出信息即代表没有相关的安装文件)

[root@tester ~]#yum list installed | grep [java][jdk]  

查询已安装的包文件(中括号选其一),如下图(图中没有输出信息即代表没有相关的安装文件)

[root@tester ~]#rpm -qa | grep [java][jdk][gcj]  

图片

6.1 检查是否已安装JDK

 

没有Java相关的文件,因此不需要卸载。安装过程省略。

 

6.2.Master安装JDK

6.2.1.查看JDK软件包列表

查看JDK软件包列表,如图所示:

[root@master ~]#yum search java-1.8.0 | grep –i --color jdk

图片

6.2 查看JDK软件包列表

 

6.2.2安装openjdk

在上图JDK软件包列表中,不需要安装所有包,只需要安装其中java-1.8.0-openjdkjava-1.8.0-openjdk-devel即可,如图所示

[root@master ~]#yum install y java-1.8.0-openjdk java-1.8.0-openjdk devel  

说明:yum选项加入“-y”是对所有的提问都回答“yes”,可以避免在安装过程中出现的反复确认,从而加快安装速度。java-1.8.0-openjdkjava-1.8.0-openjdk-devel两个包将被一起安装,同时所需的依赖也会被安装,如下图所示。

 

图片

6.3 安装JDK

等待安装完成,可以看到java-1.8.0-openjdkjava-1.8.0-openjdk-devel已经安装,并且5个依赖包也一并被安装。

6.2.3.查看是否安装成功

[root@master ~]#java -version  
[root@master ~]#javac -version

图片

6.4 成功安装JDK

说明:yum方式安装JDK,其默认路径是/usr/lib/jvm,如图所示。

图片

6.5 JDK安装路径

 

6.2.4.配置环境变量

编辑/etc/profile文件

[root@master ~]#vi /etc/profile  

末尾处添加如下内容(文件中 # 代表注释):

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64 PATH=\$PATH:\$JAVA_HOME/bin CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar export JAVA_HOME CLASSPATH PATH

 

使配置生效(也可重启虚拟机):

[root@master ~]#source /etc/profile  

使用echo命令查看JDK变量:

[root@master ~]#echo $JAVA_HOME  
[root@master ~]#echo $PATH  
[root@master ~]#echo $CLASSPATH  

设置完成如图所示:

图片

6.6 配置JDK环境变量

6.3.Slave1Slave2安装JDK

安装步骤和Master相同,也可将Master安装文件夹远程拷贝至Slave1Slave2节点(不推荐,因为采用yum安装不仅仅在/usr/lib/jvm文件夹下,如图),按6.2节步骤即可

图片

6.7 JDK安装文件位置

7.配置SSH免密码登录

Hadoop 集群中的各个节点之间需要使用 SSH 频繁地进行通信,为了避免每次的通信都要求输入密码,需要对各个节点进行 SSH 免密码登录配置。

7.1.开启sshd密钥认证

在进行SSH免密码登录配置之前,需要先开启 sshd密钥认证编辑每一台机器(以Tester为例) /etc/ssh/sshd_config 文件,去掉原文件下面这3行前的“#”注释。

# RSAAuthentication     yes
  ②# PubkeyAuthentication  yes
  ③# AuthorizedKeysFile.ssh/authorized_keys

注意:/etc/ssh/sshd_config文件内容如图所示,可以看到只有上述三行中的②③行,并没有①# RSAAuthentication yes。这是因为1ssh通讯协议使用的配置项RSA认证(RSAAuthentication)已废除,2ssh通讯协议的密钥验证是PubkeyAuthentication。而且第③行默认是开启的(如图第47行),故只需去掉上述第②行的注释(对应文件第43行,如图所示)。参考文章:https://www.cnblogs.com/Leroscox/p/9627809.html

图片

7.1 sshd配置文件

 

综上所述,编辑 /etc/ssh/sshd_config 文件,去掉第43行注释即可,如上图①处。另外,按上述文章,还应允许root认证登陆PermitRootLogin,去掉第38行注释即可,如上图③处。

[root@tester ~]#vi /etc/ssh/sshd_config  

设置完成保存后,重启sshd服务:

[root@tester ~]#systemctl restart sshd

注:每个节点都需要配置。

 

7.2.创建免密码登录账户

由于Hadoop 集群中的各节点默认会使用当前的账号SSH免密码登录其它节点,所以需要在每个节点中创建一个相同的供 Hadoop 集群专用的账户,我们使用的账户为 hadoop

注:每个节点都需要创建hadoop用户,至此每个节点拥有roothadoop两个用户

创建用户:

[root@tester ~]#useradd hadoop  

设置密码:

[root@tester ~]#passwd hadoop  

如图所示:

图片

7.2 创建hadoop用户并设置密码

 

7.3.生成公密钥对

每个节点上分别执行(以Tester为例)

首先切换到hadoop用户(注意提示符,# 表示root用户,$ 表示一般用户)

[root@tester ~]#su hadoop  

然后输入以下命令,根据提示按三次回车键直到生成结束,如图所示。

[hadoop@tester root]$ ssh-keygen -t rsa  

图片

7.3 Tester节点上生成公密钥对

 

MasterSlave1Slave2三个节点分别执行上述步骤hadoop用户身份每个节点的/home/hadoop/.ssh目录自动生成两个文件id_rsaid_rsa.pub其中前者为私,后者为公,如上图所示。

Slave1节点上生成公密钥对图所示。

图片

7.4 Slave1节点上创建hadoop用户并生成公密钥对

 

Slave2节点上生成公密钥对图所示。

图片

7.5 Slave2节点上创建hadoop用户并生成公密钥对

7.4.将公导入认证文件

密钥生成之后,需要每台机器的公都拷贝到主节点认证文件 authorized_keys ,以下操作都在主节点Master上由hadoop用户完成(如图7-6所示)

①将Master的公导入主节点认证文件中

[hadoop@master ~]$ cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys

②将Slave1的公导入主节点认证文件中(根据提示输入“yes”及密码):

[hadoop@master ~]$ ssh hadoop@slave1 cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys

③将Slave2的公导入主节点认证文件中(根据提示输入“yes”及密码):

[hadoop@master ~]$ ssh hadoop@slave2 cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys

④各节点的公导入完成后,查看认证文件内容,可以看到各个节点的hadoop用户的公信息,如图7-6所示。

[hadoop@master ~]$ cat /home/hadoop/.ssh/authorized_keys

图片

7.6 将每台机器的公都拷贝到主节点的认证文件

7.5.设置权限并补全Master信息

Master 主机上执行如下命令,对认证文件的操作权限进行设置,如图7.7所示

[hadoop@master ~]$ chmod 700 /home/hadoop/.ssh
[hadoop@master ~]$ chmod 600 /home/hadoop/.ssh/authorized_keys

查看known_hosts文件中主机列表,发现只有Slave1Slave2而没有Master自身(如图7.7所示箭头处),所以需要Master主机上ssh免密登录自己,将自身的主机信息添加到known_hosts列表中。

[hadoop@master ~]$ ssh master

注意:登陆成功后的状态是以hadoop@master的身份ssh登陆hadoop@master,所以提示符都是[hadoop@master ~]$。登陆成功后即将其信息写入到known_hosts文件(注意ssh登陆时的警告),所以还要输入exit退出远程登陆回到当前的hadoop@master身份

退出后,再次查看known_hosts文件可以看到已成功将Master节点信息写入其主机列表中,如图所示

图片

7.7 设置认证文件权限并known_hosts补全Master信息

 

7.6.将认证文件复制到slave节点

Master 主机上执行以下命令将生成的 authorized_keys 文件从 Master 主机复制到 Slave1 Slave2 节点,如图7.8所示

[hadoop@master ~]$ scp /home/hadoop/.ssh/authorized_keys hadoop@slave1:/home/hadoop/.ssh/authorized_keys
[hadoop@master ~]$ scp /home/hadoop/.ssh/authorized_keys hadoop@slave2:/home/hadoop/.ssh/authorized_keys

Master 主机上测试ssh远程登陆Slave1 Slave2 节点,如图7.8所示,可以发现不需要登陆密码了。

[hadoop@master ~]$ ssh slave1
[hadoop@master ~]$ ssh slave2

图片

7.8 将认证文件复制到其他节点并远程登陆测试

 

Master 主机上执行以下命令将生成的 known_hosts 文件从 Master 主机复制到 Slave1 Slave2 节点

[hadoop@master ~]$ scp /home/hadoop/.ssh/known_hosts hadoop@slave1:/home/hadoop/.ssh/known_hosts
[hadoop@master ~]$ scp /home/hadoop/.ssh/ known_hosts hadoop@slave2:/home/hadoop/.ssh/known_hosts  

7.7.设置从节点认证文件权限

设置从节点Slave1认证文件权限:

[hadoop@slave1 ~]$ chmod 700 /home/hadoop/.ssh
[hadoop@slave1 ~]$ chmod 600 /home/hadoop/.ssh/authorized_keys

 

设置从节点Slave2认证文件权限:

[hadoop@slave2 ~]$ chmod 700 /home/hadoop/.ssh
[hadoop@slave2 ~]$ chmod 600 /home/hadoop/.ssh/authorized_keys

7.8.三节点互相ssh登陆测试

Master登陆Slave1Slave2,如下图所示

图片

7.9 Master登陆Slave1Slave2

Slave1登陆MasterSlave2,如下图所示

图片

7.10 Slave1登陆MasterSlave2

Slave2登陆MasterSlave1,如下图所示

图片

7.11 Slave2登陆MasterSlave1

 

8.安装Hadoop

Hadoop安装其实就是一个将下载好的Hadoop压缩包解压到所有服务器上并进行配置的过程,推荐将Hadoop安装在各个节点服务器的相同目录下方便配置

我们使用的Hadoop版本是hadoop-2.7.7,指定的Hadoop的安装目录(以root身份安装)/usr/local/hadoop-2.7.7

8.1.下载压缩包

从官网下载压缩包,下载地址

https://www-us.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

推荐从本地镜像站点下载,不仅稳定而且下载速度比较快可从清华大学镜像站下载压缩包(耗时38s下载地址

https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

 

利用wget下载必须首先安装wget(以测试机Tester为例):

[root@tester ~]# yum y install wget  

注意利用wget下载是将文件下载到当前目录,因此要先进入 /usr/local 目录,然后执行下载命令,如图所示。

[root@tester ~]# cd /usr/local  
[root@tester local]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/ hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz  

下载完成后,在/usr/local路径下就有了该压缩包,如下图所示。

图片

8.1 Tester下载Hadoop压缩包

 

8.2.解压Hadoop压缩包

执行以下命令解压Hadoop压缩包

[root@tester local]# tar zxvf hadoop-2.7.7.tar.gz  

等待解压完成,会在当前目录/usr/local一个hadoop-2.7.7文件夹,里面即为解压的内容,如图所示。

图片

8.2 解压Hadoop压缩包

 

8.3.更改用户组

由于解压时使用的是 root 账户,所以还需要执行以下命令将Hadoop的安装目录的所有者和所属组改为 hadoop,如图所示

[root@tester local]# chown -R hadoop:hadoop /usr/local/hadoop-2.7.7  

注①在图8.3中,查看文件详细信息的所有者和所属组,第一个root为所属用户(User),第二个root为所属组(Group)。

注②安装HadoopScalaSpark时,都是以root用户的身份安装,但在实际中操作Hadoop是以hadoop用户的身份运行的,因此在HadoopScalaSpark安装完成后都需要更改用户组(后文也有说明)。

图片

8.3 更改用户组

8.4.配置环境变量

编辑配置文件 /etc/profile 配置环境变量:

[root@tester local]# vi /etc/profile

在末尾处加入以下内容

export HADOOP_HOME=/usr/local/hadoop-2.7.7 PATH=\$PATH:\$HOME/.local/bin:\$HOME/bin:\$HADOOP_HOME/bin:$HADOOP_HOME/sbin export PATH

保存退出后使之生效

[root@tester local]# source /etc/profile

由此完成安装查看Hadoop版本信息:

[root@tester local]# hadoop version

说明由于Tester未安装java环境(见6.1),因此看不到Hadoop版本信息,输出错误信息:Error: JAVA_HOME is not set and could not be found,如图所示。

图片

8.4 配置hadoop环境变量

 

8.5.实际安装Hadoop说明

8.5.1.安装位置的问题

Master安装Hadoop时,在 /usr/local 目录下新建了一个文件夹 hadoop-2.7.7,使得将压缩包放到了/usr/local/hadoop-2.7.7下而不是 /usr/local,导致解压后变成了/usr/local/hadoop-2.7.7/hadoop-2.7.7而不是/usr/local/hadoop-2.7.7,如图所示(图中应该是创建/usr/local文件夹)。

图片

8.5 Master下载Hadoop压缩包(标注有误)

利用scp远程拷贝文件时也犯了同样的错误,都是拷贝到了/usr/local/hadoop-2.7.7下,如图所示:

图片

8.6 Master远程上Hadoop压缩包至Slave1Slave2(位置错误)

 

图片

8.7 Slave1节点传输前后(位置错误)

 

图片

8.8 Slave2节点传输前后(位置错误)

 

8.5.2解决安装位置的问题

对于每个节点首先将位于/usr/local/hadoop-2.7.7下的压缩包移动到/usr/local,然后删除hadoop-2.7.7文件夹图所示(截图为Slave2):

图片

8.9 解决安装位置的问题

解压完成后删除压缩包,如图所示(截图为Slave2):

图片

8.10 解压完成后删除压缩包

 

8.5.3.各个节点

①更改位置,如上8.5.2

解压hadoop-2.7.7.tar.gz文件,完成后删除压缩包;

③更改用户组为hadoop

④配置环境变量并使之生效;

⑤查看Hadoop版本。

设置完成后如图8.11~8.13所示

图片

8.11 Master节点

图片

8.12 Slave1节点

图片

8.13 Slave2节点

 

8.5.4.从节点Hadoop的安装

当主节点Master安装完成后,可以直接利用scp将整个/usr/local/hadoop-2.7.7文件夹传到从节点Slave1Slave2,而不需要再次安装。

 

9.配置Hadoop集群

Hadoop集群的配置文件位于/usr/local/hadoop-2.7.7/etc/hadoop文件夹下默认配置不需要修改,主要配置节点的个性配置,即core-site.xmlhdfs-site.xmlmapred-site.xml.templateyarn-site.xml四个文件,以及slaveshadoop-env.sh两个文件,如图所示。

图片

9.1 需要配置的6个文件

9.1.配置core-site.xml

编辑Hadoop配置文件/usr/local/hadoop-2.7.7/etc/hadoop/core-site.xml<configuration></configuration>之间加入以下配置内容,如图所示(其中,按“Tab”键缩进,<!— xxx —>的内容为注释)

<configuration>
    <!-- The name of the default file system -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <!-- The size of buffer for use in sequence files -->
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
    <!-- A base for other temporary directories -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop-2.7.7/tmp</value>
    </property>
</configuration>

图片

9.2 配置core-site.xml文件

 

9.2.配置hdfs-site.xml

编辑/usr/local/hadoop-2.7.7/etc/hadoop/hdfs-site.xml文件加入以下配置内容,如图9.3所示:

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop-2.7.7/data/namespace</value>
        <final>true</final>
        <description>Path on the local filesystem where the NameNode stores</description>
    </property>
 
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop-2.7.7/data/dataspace</value>
        <final>true</final>
        <description>Path on the local filesystem where the DataNode stores Data</description>
/span>     </property>
 
    <property>
        <name>dfs.namenode.secondary.http-address</name>
/span>         <value>slave1:50090</value>
        <final>true</final>
        <description>The secondary namenode http server address and port</description>
    </property>
 
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
        <final>true</final>
        <description>Enable WebHDFS (REST API) in Namenodes and Datanodes</description>
    </property>
 
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
        <final>true</final>
        <description>Disable permission checking in HDFS</description>
    </property>
 
    <property>
        <name>dfs.replication</name>
        <value>2</value>
        <final>true</final>
        <description>Default block replication</description>
    </property>
</configuration>

图片

9.3 配置hdfs-site.xml文件

 

9.3.配置mapred-site.xml

编辑/usr/local/hadoop-2.7.7/etc/hadoop/mapred-site.xml.template文件加入以下配置内容,如图9.4所示:

说明:此模板文件mapred-site.xml.template应将其重命名为mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        <final>true</final>
        <description>The runtime framework for executing MapReduce jobs</description>
    </property>
</configuration>

图片

9.4 配置mapred-site.xml.template文件

 

9.4.配置yarn-site.xml

编辑/usr/local/hadoop-2.7.7/etc/hadoop/yarn-site.xml文件加入以下配置内容,如图9.5所示:

<configuration>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>slave2:8030</value>
        <final>true</final>
        <description>The address of the scheduler interface</description>
    </property>
 
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>slave2:8031</value>
        <final>true</final>
        <description>The address and port of Resource Manager of YARN at Slave2</description>
    </property>
 
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>slave2:8032</value>
        <final>true</final>
        <description>The address of the applications manager interface in the RM</description>
    </property>
 
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>slave2:8033</value>
        <final>true</final>
        <description>The address of the RM admin interface</description>
    </property>
 
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>slave2:8088</value>
        <final>true</final>
        <description>The http address of the RM web application</description>
    </property>
 
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        <final>true</final>
        <description>Node Manager of YARN</description>
    </property>
</configuration>

图片

9.5 配置yarn-site.xml文件

 

9.5.配置slaves

编辑/usr/local/hadoop-2.7.7/etc/hadoop/slaves文件,删除原有的localhost(也可以直接注释掉)加入以下内容,如图所示:

输:[root@master ~]#vi /usr/local/hadoop-2.7.7/etc/hadoop/slaves  
localhost  
master
    slave1
    slave2

图片

9.6 配置slaves文件

 

9.6.配置hadoop-env.sh

编辑/usr/local/hadoop-2.7.7/etc/hadoop/hadoop-env.sh文件# The java implementation to use.”下export JAVA_HOME=${JAVA_HOME}”修改为:export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64

其中,路径/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64为安装Java时设置的环境变量(见6.2.4节),如图所示。

图片

9.7 配置hadoop-env.sh文件

 

9.7.将配置分发到其他节点

上述9.1~9.6都是在主节点Master上配置,因此需要将其分发到Slave1Slave2两个从节点,如图所示。

输:[root@master ~]#scp -r /usr/local/hadoop-2.7.7/etc/hadoop/* slave1:/usr/local/hadoop-2.7.7/etc/hadoop/  
输:[root@master ~]#scp -r /usr/local/hadoop-2.7.7/etc/hadoop/* slave2:/usr/local/hadoop-2.7.7/etc/hadoop/

图片

9.8 Master配置分发到Slave1Slave2节点

 

说明:上图中,尚未配置/usr/local/hadoop-2.7.7/etc/hadoop/hadoop-env.sh文件因此scp后需要对每个节点的hadoop-env.sh文件进行配置。若先将Master文件配置好然后scp到从节点则不需在从节点上配置该文件

 

10.操作Hadoop集群

说明:以下操作Hadoop集群都是使用hadoop用户,提示符为[hadoop@master ~]$

10.1.格式化NameNode

第一次启动HDFS需要先进行格式化,使用格式为“$HADOOP_PREFIX/bin/hdfs namenode -format <cluster_name>”的如下命令:

输:[hadoop@master ~]$ hdfs namenode -format master  

等待Master格式化完成,出现Exiting with status 0的信息即为格式化成功,如图10.1所示

图片

10.1 格式化NameNode

10.2.启动HDFS集群

HDFS格式化完成后,使用格式为“$HADOOP_PREFIX/sbin/start-dfs.sh”的如下命令来启动HDFS集群,如图所示

输:[hadoop@master ~]$ start-dfs.sh

说明:使用该命令启动HDFS集群时,在集群的任意节点上执行都能够启动集群。

图片

10.2 Master上启动HDFS集群

此时各节点jps进程如表10.1所示,如图10.210.3、图10.4所示。

图片

10.3 Slave1jps进程

 

图片

10.4 Slave2jps进程

 

10.1 Master启动HDFS集群后各节点上jps进程
名称 jps进程
master JpsNameNodeDataNode
slave1 JpsSecondaryNameNodeDataNode
slave2 JpsDataNode

此时可在浏览器中打开http://192.168.176.200:50070查看HDFS的管理界面,如图所示

图片

10.5 浏览器查看HDFS的管理界面

10.3.启动YARN

启动HDFS后,使用格式为“$HADOOP_PREFIX/sbin/start-yarn.sh”的如下命令来启动YARN,如图所示

输:[hadoop@slave2 ~]$ start-yarn.sh

说明:在使用 start-yarn.sh 命令启动YARN集群时,必须在ResourceManager所在节点Slave2上执行该命令才能够启动 ResourceManager;当 NamenodeResourceManger不在同一台主机时,就不能在NameNode上启动 YARN了,应该在ResouceManager所在的机器Slave2上启动YARN

图片

10.6 Slave2上启动YARN集群

 

此时各节点jps进程如表10.2所示,如图10.610.7、图10.8所示。

10.2 Master启动HDFS集群后各节点上jps进程(红色表示新增)
名称 jps进程
master JpsNameNodeDataNodeNodeManager
slave1 JpsSecondaryNameNodeDataNodeNodeManager
slave2 JpsDataNodeResourceManagerNodeManager

 

图片

10.7 Masterjps进程

 

图片

10.8 Slave1jps进程

 

此时可在浏览器中打开http://192.168.176.202:8088查看YARN的管理界面,如图所示

图片

10.9 浏览器查看YARN的管理界面

11.各节点scala安装

11.1.主节点Master安装scala

11.1.1下载scala

打开scala官网:http://www.scala-lang.org/download/2.12.10.html,找到对应版本,如图所示,对应的下载链接为:https://downloads.lightbend.com/scala/2.12.10/scala-2.12.10.tgz

图片

11.1 scala官网

scala安装路径是/usr/local/scala-2.12.10。首先进入安装目录/usr/local,使用wget下载,如图所示:

输:[root@master ~]# cd /usr/local  
输:[root@master local]# wget https://downloads.lightbend.com/scala/2.12.10/scala-2.12.10.tgz  

图片

11.2 下载scala

 

由于没有采用镜像站点资源下载,因此下载速度较慢,耐心等待下载完成。下载完成后会在当前目录生成scala文件:/usr/local/scala-2.12.10.tgz

 

11.1.2解压scala压缩包

解压scala到当前文件夹,如11.3所示:

输:[root@master local]# tar zvxf scala-2.12.10.tgz  

解压完成后,会在当前目录创建文件夹/usr/local/scala-2.12.10scala压缩包内的所有文件都被解压到该目录。

解压完成后,删除原压缩包,执行如下命令:

输:[root@master local]# rm f scala-2.12.10.tgz

说明:删除命令选项“f”表示强制删除,删除过程中没有“是否确认删除”的提示。慎用此选项,尽量只在删除有很多子文件夹时配合“r”(递归处理)使用。

图片

11.3 解压scala

 

11.1.3配置scala环境变量

配置scala环境变量,加入export PATH=$PATH:/usr/local/scala-2.12.10/bin,如图所示:

输:[root@master local]# vi /etc/profile  

scala环境变量配置完成后,使之生效,如图所示

输:[root@master local]# source /etc/profile  

至此,Masterscala安装完成,查看scala版本,如图所示:

输:[root@master local]# scala -version

图片

11.4 配置scala环境变量

 

11.2从节点上安装scala

11.2.1.scp传输scala安装文件

将主节点Master上安装好的scala文件夹利用scp传到从节点Slave1Slave2上,如11.5所示:

输:[root@master local]# scp r scala-2.12.10 slave1:/usr/local  
输:[root@master local]# scp r scala-2.12.10 slave2:/usr/local

注意:此处使用的是相对路径,因为当前目录为/usr/local,也可使用如下命令(绝对路径来传输,二者没有区别:

输:[root@master local]# scp r /usr/local/scala-2.12.10 slave1:/usr/local  
输:[root@master local]# scp r /usr/local/scala-2.12.10 slave2:/usr/local

图片

11.5 Masterscp传输scala到从节点Slave1Slave2

11.2.2配置环境变量

scp传输完成后,在Slave1配置scala环境变量,步骤同11.1.3节,如图所示:

图片

11.6 Slave1配置scala环境变量

scp传输完成后,在Slave2配置scala环境变量,步骤同11.1.3节,如图所示:

图片

11.7 Slave2配置scala环境变量

 

12.Spark安装及配置

12.1.主节点Master上安装spark

12.1.1下载spark压缩包

清华大学镜像站下载spark-2.4.4-bin-hadoop2.7.tgz文件,如图所示,其下载链接为:https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz

spark的安装路径是/usr/local/ spark-2.4.4-bin-hadoop2.7。首先进入安装目录/usr/local,使用wget下载,如图所示:

输:[root@master ~]# cd /usr/local  
输:[root@master local]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz

图片

12.1 下载spark

12.1.2.解压spark压缩包

解压spark到当前文件夹,如图所示:

输:[root@master local]# tar zvxf spark-2.4.4-bin-hadoop2.7.tgz

图片

12.2 解压spark

解压完成后,删除原压缩包。

 

12.1.3.修改spark配置文件

配置文件路径为/usr/local/spark-2.4.4-bin-hadoop2.7/conf,如图所示,并且将spark-env.sh.template重命名为spark-env.sh

图片

12.3 spark配置文件

 

然后修改配置文件spark-env.sh,如图12.4所示。

输:[root@master ~]# vi /usr/local/spark-2.4.4-bin-hadoop2.7/conf/spark- env.sh

图片

12.4 修改spark配置文件spark-env.sh

 

在末尾加上如下红色字体内容(其中JAVA_HOME应与java安装时的配置保持一致,黑色字体为注释),如图12.4所示

# 配置JAVA_HOME,一来说,配置也可以,但是可能会出现问题,最好还是配上
# 配置JAVA_HOME应与java安装时的配置保持一致,见6.2.4
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64
 
# 一般来说,spark任务有很大可能性需要去HDFS上读取文件,所以配置上
# 如果说你的spark就读取本地文件,也不需要yarn管理,不用配
export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.7/etc/hadoop
 
# 设置Master的主机名
export SPARK_MASTER_HOST=master
 
# 提交Application的端口,默认就是这个,万一要改改这里
export SPARK_MASTER_PORT=7077
 
# 每一个Worker最多可以使用的cpu core的个数,我虚拟机就一个...
# 真实服务器如果有32个,你可以设置为32
export SPARK_WORKER_CORES=1
 
# 每一个Worker最多可以使用的内存,虚拟机设置的是2G
# 真实服务器如果有128G,你可以设置为100G
export SPARK_WORKER_MEMORY=1g

 

12.1.4.修改slaves文件

如图12.3首先slaves.template重命名为slaves,然后修改slaves文件,删除或注释掉“localhost”,加入三台节点的主机名,如图所示。

图片

12.5 修改slaves文件内容

12.1.5.配置spark环境变量

配置spark环境变量

输:[root@master ~]# vi /etc/profile 

加入如下内容:

export SPARK_HOME=/usr/local/spark-2.4.4-bin-hadoop2.7
export PATH=\$PATH:\$SPARK_HOME/bin:\$SPARK_HOME/sbin

 

spark环境变量配置完成后,使之生效,如图12.6所示:

输:[root@master ~]# source /etc/profile 

图片

12.6 配置spark环境变量并启动

 

输入以下命令启动Spark,如图12.6所示:

输:[root@master local]# spark-shell 

12.2.从节点上安装spark

12.2.1.scp传输spark安装文件

将主节点Master上安装好的spark利用scp传到从节点Slave1Slave2上,如图所示:

输:[root@master local]# scp r spark-2.4.4-bin-hadoop2.7 slave1:/usr/local 
输:[root@master local]# scp r spark-2.4.4-bin-hadoop2.7 slave2:/usr/local

注意:此处使用的是相对路径,因为当前目录为/usr/local,也可使用绝对路径。

 

图片

12.7 Masterscp传输spark到从节点Slave1Slave2

 

 

 

12.2.2.配置spark环境变量

1Slave1节点配置spark环境变量

scp传输完成后,在Slave1配置spark环境变量,步骤同12.1.5

Slave1节点上spark环境变量配置完成后,输入以下命令启动Spark,如图所示:

输:[root@slave1 local]# spark-shell 

图片

12.8 Slave1配置spark环境变量并启动

 

2Slave2节点配置spark环境变量

scp传输完成后,在Slave2配置spark环境变量,步骤同12.1.5

Slave2节点上spark环境变量配置完成后,输入以下命令启动Spark,如图12.9所示:

输:[root@slave2 local]# spark-shell 

图片

12.9 Slave2配置spark环境变量并启动

说明退出scala时需输入:quit”,上图是spark-shell下的命令行,界面与scala下的命令行不同,如图所示。

图片

12.10 scala下的命令行

 

12.3.修改spark-env.sh

在每个节点上改正spark-env.sh的错误(如图12.4),将最后一行“ecport”修改为export”。

配置文件路径为/usr/local/spark-2.4.4-bin-hadoop2.7/conf/spark-env.sh,如图所示。

图片

12.11 改正spark-env.sh配置文件

 

13.启动Spark集群

参考:https://www.cnblogs.com/ZJdiem/p/11664634.html

13.1.说明

HadoopScalaSpark都是安装在/usr/local文件夹下,如图13.1~13.3所示。

由于安装时是以root身份安装的,但操作Hadoop相关的东西时是以hadoop用户,因此会产生权限的问题,所以需要登陆root账号,更改用户组为hadoop用户,见8.3

从图中可以看到,Hadoop的所有者和用户组正常(因为安装Hadoop时已经修改过),而ScalaSpark的所有者和用户组则不对,后文修改。

图片

13.1 主节点MasterHadoopScalaSpark信息

图片

13.2 从节点Slave1HadoopScalaSpark信息

图片

13.3 从节点Slave2HadoopScalaSpark信息

 

13.2.更改ScalaSpark的用户组

13.2.1.主节点Master

Master执行以下命令将ScalaSpark的安装目录的所有者和所属组改为hadoop用户,如图13.4所示

[root@master local]# chown -R hadoop:hadoop /usr/local/scala-2.12.10 
[root@master local]# chown -R hadoop:hadoop /usr/local/spark-2.4.4-bin-hadoop2.7 

说明由于前面安装Spark时已经更改过,因此只需要更改Scala安装目录的所有者和所属组,如图13.4所示。由图可知,修改前,scala的用户组为2000spark的用户组为hadoop;修改后,scala的用户组为hadoopspark的用户组为hadoop

图片

13.4 MasterScalaSpark的用户组

 

13.2.2.从节点Slave1

Slave1执行以下命令将ScalaSpark的安装目录的所有者和所属组改为hadoop用户,如图13.5所示

[root@slave1 local]# chown -R hadoop:hadoop /usr/local/scala-2.12.10 
[root@slave1 local]# chown -R hadoop:hadoop /usr/local/spark-2.4.4-bin-hadoop2.7 

由图可知,修改前,scalaspark的用户组均为root;修改后,scalaspark的用户组为hadoop

图片

13.5 Slave1ScalaSpark的用户组

 

13.2.3.从节点Slave2

Slave2执行以下命令(此处使用的是相对路径)ScalaSpark的安装目录的所有者和所属组改为hadoop用户,如图13.6所示

[root@slave2 local]# chown -R hadoop:hadoop scala-2.12.10  
[root@slave2 local]# chown -R hadoop:hadoop spark-2.4.4-bin-hadoop2.7  

由图可知,修改前,scalaspark的用户组root;修改后,scalaspark的用户组为hadoop

图片

13.6 Slave2ScalaSpark的用户组

 

13.3.启动Hadoop集群

注意:启动Spark集群之前必须先启动Hadoop集群。

首先以hadoop用户身份登陆,然后在主节点Master运行start-dfs.sh启动HDFS集群(此时各节点jps进程如表13.1所示)最后在从节点Slave2运行start-yarn.sh启动YARN集群(此时各节点jps进程如表13.1所示)如图所示

图片

13.7 Master启动HDFS集群

图片

13.8 Slave2启动YARN集群

 

13.4.启动Spark集群

注意:启动Spark集群之前必须先启动Hadoop集群。

Hadoop集群启动后,首先Master节点进入spark目录,然后启动Spark集群,如图

输:[hadoop@master ~]$ cd /usr/local/spark-2.4.4-bin-hadoop2.7  
输:[hadoop@master spark-2.4.4-bin-hadoop2.7]$sbin/start-master.sh  
输:[hadoop@master spark-2.4.4-bin-hadoop2.7]$sbin/start-slaves.sh

图片

13.9 Master启动Spark集群

至此,Spark集群启动完成,此时主节点Masterjps进程如图13.9所示,从节点Slave1Slave2jps进程如图13.10所示,各节点集群启动前后jps进程如表13.1所示。

图片图片

13.10 从节点Slave1Slave2jps进程

 

13.1 启动集群后各节点上jps进程
节点名称 Master启动HDFS Slave2启动YARN Master启动Spark
master JpsNameNodeDataNode JpsNameNodeDataNode NodeManager JpsNameNodeDataNode NodeManager MasterWorker
slave1 JpsSecondaryNameNodeDataNode JpsSecondaryNameNodeDataNode NodeManager JpsSecondaryNameNodeDataNode NodeManager Worker
slave2 JpsDataNode JpsDataNode ResourceManagerNodeManager JpsDataNode ResourceManagerNodeManager Worker

注:表中不同颜色代表启动不同集群后增加的jps进程,其中绿色为Master启动HDFS集群后增加的进程,洋红为Slave2启动YARN集群后增加的进程,绿色为Master启动Spark集群后增加的进程;单元格内容为启动不同集群后各节点所有的jps进程。

 

此时可在浏览器中打开http://192.168.176.200:8080,查看Spark集群的管理界面,如13.11所示

同时,HDFS的管理界面http://192.168.176.200:5007010.2节图10.5YARN的管理界面http://192.168.176.202:808810.3节图10.9

图片

13.11 浏览器查看Spark的管理界面

 
 至此,集群搭建完毕。