文章目录
Hadoop系列文章
Hadoop系列 (一):在CentOS中搭建hadoop环境(伪分布式)
Hadoop系列 (二):完全分布式搭建(腾讯云服务器+阿里云服务器)
Hive系列文章
Hive系列 (八):Hive中的explode 与 lateral view
一. 集群简介
- HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起。
- HDFS集群负责海量数据的存储,集群中的角色主要有:NameNode、DataNode、SecondaryNameNode
- YARN集群负责海量数据运算时的资源调度,集群中的角色主要有:ResourceManager、NodeManager
- mapreduce是一个分布式运算编程框架,是应用程序开发包,由用户按照编程规范进行程序开发,后打包运行在HDFS集群上,并且受到YARN集群的资源调度管理。
二. 集群部署方式
2.1 Standalone mode(独立模式)
独立模式又称为单机模式,仅1个机器运行1个java进程,主要用于调试。
2.2 Pseudo-Distributed mode(伪分布式模式)
伪分布模式也是在1个机器上运行HDFS的NameNode和DataNode、YARN的ResourceManger和NodeManager,但分别启动单独的java进程,主要用于调试。
2.3 Cluster mode(群集模式)-单节点模式-高可用HA模式
集群模式主要用于生产环境部署。会使用N台主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同的机器上。
三. 集群环境准备
集群模式主要用于生产环境部署,需要多台主机,并且这些主机之间可以相互访问,现在使用腾讯云服务器和阿里云服务器2台主机为例进行搭建进行搭建。
3.1 服务器信息如下:
腾讯云服务器(master):2核4G,CentOS 8.3
阿里云服务器(slave1):1核2G, CentOS 8.2
3.2 集群规划如下:
主机组件 | master(外网ip:101.36.9.202 内网IP:10.0.8.33) | slave1(外网IP:39.136.77.212 内网IP:172.12.227.201) |
---|---|---|
NameNode | √ | × |
Secondary Namenode | × | √ |
DataNode | √ | √ |
ResourceManager | √ | × |
NodeManager | √ | √ |
3.3 主机hosts文件配置(重要)
在腾讯云服务器上做如下操作:
调整服务器主机名为master:
[root@V_TENS_EOS ~]# hostnamectl set-hostname master
修改hosts文件 vim /etc/hosts
# 注释掉127.0.0.1 和 ::1 的ipv6地址
# 127.0.0.1 master master
127.0.0.1 localhost.localdomain localhost
127.0.0.1 localhost4.localdomain4 localhost4
#::1 master master
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
#新增,这里很重要,内外网地址,弄了很久才搞明白要这样配置,不然无法形成主机回路,会出现slave1无法访问master某些端口,或者本地浏览器无法访问master端口
10.0.8.33 master #master 内网地址
39.136.77.212 slave1 # slave1 外网地址
同样调整slave1节点配置:
[root@V_MNSTE ~]# hostnamectl set-hostname slave1
修改hosts文件 vim /etc/hosts
#注释掉127.0.0.1 和::1 ipv6地址
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#127.0.0.1 localhost localhost
#新增
101.36.9.202 master #master 外网地址
172.12.227.201 slave1 # slave1 内网地址
保存,断开,重新连接,查看主机名生效
#master
[root@master ~]# cd
#slave1
[root@slave1 ~]# cd
四. 用户创建及防火墙设置
4.1 创建hadoop用户
在master和slave1上均执行以下操作
# 新增用户
[root@master ~]# useradd hadoop
# 设置密码
[root@master ~]# passwd hadoop
编辑 sudo vim /etc/sudoers 给hadoop用户赋予sudo权限:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL #在root这行下面新增
hadoop ALL=(ALL) ALL
保存,退出,切换hadoop用户登录。
4.2 防火墙设置
云服务平台自带防火墙设置,我再这里没有设置centos8系统防火墙。
以下是我的腾讯云服务器(master)防火墙设置,slave1同样设置
五. SSH免密登录设置
注意:从本步骤开始,后面所有操作均使用hadoop用户
5.1 ssh密钥生成
分别在master 和 slave1 两台机器的用户目录下生成公钥和私钥,提示输入可以直接回车
#master 机器:
[hadoop@master ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:HfIkWBAJNCHFKLWuYJW/jWbSMRx2GdfSfV/vnVOL+DI hadoop@master
The key's randomart image is:
+---[RSA 2048]----+
| .o=*oo=..o . |
|. .oo..o+. o . ..|
| ..o o.oo + . +|
| .. + o * . +|
|... = S o . ..=|
|o. . * . . +o|
|. . * . . .|
| + E . |
| o |
+----[SHA256]-----+
[hadoop@master ~]$ cd .ssh
[hadoop@master .ssh]$ ll
total 8
-rw------- 1 hadoop root 1675 Jun 24 16:14 id_rsa
-rw-r--r-- 1 hadoop root 395 Jun 24 16:14 id_rsa.pub
#slave1机器
[hadoop@slave1 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:uqQhC77i1TU/XOU8fB8fxboS3tCllIKNdL/NuGxyfRc hadoop@slave1
The key's randomart image is:
+---[RSA 3072]----+
| . . |
| . = . o |
| o o.+ +|
| =+ O.|
| oS .o=*Eo|
| . ..+ .. =o+*|
|. ....o + + B *|
|o..o + . . = o|
|o+o . . |
+----[SHA256]-----+
[hadoop@slave1 .ssh]$ ll
total 8
-rw------- 1 hadoop hadoop 2602 Jun 24 16:15 id_rsa
-rw-r--r-- 1 hadoop hadoop 567 Jun 24 16:15 id_rsa.pub
5.2 写入公钥
# master上执行
[hadoop@slave1 .ssh]$ cat id_rsa.pub >> authorized_keys
# 在slave1上执行
[hadoop@master .ssh]$ cat id_rsa.pub >> authorized_keys
5.3 赋权
# 在master上执行
[hadoop@master ~]$ chmod 700 .ssh
[hadoop@master ~]$ chmod 600 .ssh/authorized_keys
#在slave1上执行
[hadoop@slave1 ~]$ chmod 700 .ssh
[hadoop@slave1 ~]$ chmod 600 .ssh/authorized_keys
5.4 交换公钥
执行下面命令,两台机器上生成的公钥,相互发送到对方机器,完成公钥复制。
# 在master上执行
[hadoop@master ~]$ ssh-copy-id hadoop@slave1
# 在slave1上执行
[hadoop@slave1 ~]$ ssh-copy-id hadoop@master
成功提示如下: