Hadoop完全分布式

Hadoop的三种模式

三种模式:本地 、伪分布式、全分布式、高可用HA(重点)

思考:伪分布式模式存在的问题?

模拟集群 实质上在一个节点上面的操作

全分布式:NN DN SNN 用多台节点(服务器)来运行的,并没有用高可用HA

高可用:HA

集群拓扑

1589953548482


主机(角色)规划

节点名称 IP namenode datanode SecondaryNameNode 节点类型
node01 192.168.32.2 * * master
node02 192.168.32.3 * * slave
node03 192.168.32.4 * slave

准备三个虚拟机,三个虚拟机分别设置好对应的网络ip配置

软件规划

软件 版本 节点 说明
VMware 16Pro VM虚拟机
CentOS 7 * Linux操作系统
JDK 1.8 * Hadoop基于Java,所以必须提前安装JDK
Hadoop 2.7 * 存储、运行处理大数据的软件平台

软件目录规划

目录 路径
所有软件包存放目录 /usr/tools/
大数据软件安装目录 /usr/local/

虚拟机安装

1589955120259

1589955167199

1589955183882

1589955200679

1589955210138

1589955216696

1589955222045

1589955232869

1589955239722

1589955252135

1589955258196

1589955262315

1589955266780

1589955273074Linux操作系统安装

1589955299950

1589955308231

1589955316201

1589955327495

1589955332876

1589955340503

1589955383743

1589955398635

1589955404694

1589955412625

1589955421739

1589955430856

1589955436104

1589955441918

虚拟机拍照

  1. 关闭虚拟机
  2. 快照

虚拟机网络适配器设置

选择联网模式

  1. 桥接模式
    1589957562935
  2. Nat模式
    1589957906167
  3. 仅主机模式
    1589957938149

1589958403997

1589958441728

1589958503178

编辑虚拟网络

1589958814217

1589958802571配置IP地址

1589959839006

1
2
3
4
5
6
7
8
#修改
BOOTPROTO=static #这里讲dhcp换成static
ONBOOT=yes #将no换成yes
#新增
IPADDR=192.168.52.101 #静态IP
GATEWAY=192.168.52.2 #默认网关
NETMASK=255.255.255.0 #子网掩码
DNS1=114.114.114.114 #DNS

1589962380018

1
2
3
4
5
#重启网卡

service network restart

ifconfig 或 ip addr

1589960037089MobaXterm连接

1589961334828

1589962468160

Linux安全机制

  1. 关闭防火墙
  2. 关闭防火墙开机启动
  3. 修改SELinux配置文件
    1
    2
    3
    4
    [root@master ~]# systemctl status firewalld.service
    [root@master ~]# systemctl stop firewalld.service
    [root@master ~]# systemctl disable firewalld.service
    [root@master ~]# vi /etc/selinux/config

image-20210305084355647

安装JDK

  1. 创建一个存放软件的目录

    1
    2
    3
    [root@localhost ~]# mkdir /usr/tools
    [root@localhost ~]# cd /usr/tools/
    [root@localhost tools]# pwd

    image-20210305084553096

  2. 上传jdk压缩包到/usr/tools目录下
    image-20210305084748788

  3. 解压

    1
    [root@localhost tools]# tar -zxvf jdk-8u221-linux-x64.tar.gz  -C /usr/local/
  4. 设置环境变量
    1590042543484
    将如下配置添加至文件/etc/profile中,然后保存退出。

    1
    2
    3
    4
    5
    #java

    export JAVA_HOME=/usr/local/jdk1.8.0_221
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
    export PATH=$JAVA_HOME/bin:$PATH

    image-20210305141301802

  5. 让配置文件生效

    1
    [root@node01 java]# source /etc/profile
  6. 验证

    1
    [root@node01 java]# java -version

image-20210305085208531

再次拍照

  1. 关机
  2. 拍照

集群复制

克隆节点

1590020909682

1590020936092

1590021035956

再重复此操作创建出Node02 node03

1590021155731

配置IP

1590021695079

1590021665832

1590021802827

其它2台对应修改

1590021970210

1590021983803

修改主机名

MobaXterm连上4台机器,修改主机名

1590022368029

1
hostnamectl set-hostname node01
1
hostnamectl set-hostname node02
1
hostnamectl set-hostname node03

1590022542697

1590022588900

关机创建拍照

1590022896823

Hadoop安装配置

虚拟机IP映射

在node01上编辑 /etc/hosts,加入如下内容

1
2
3
192.168.52.101 node01
192.168.52.102 node02
192.168.52.103 node03

SSH免密登录

所有机器依次执行

执行过程中需要输入密码,就输入对应密码即可。

1
ssh 127.0.0.1

img

在node01创建秘钥

下面的命令一行一行的运行,运行过程中如果要输入密码,输入即可。

1
2
3
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

img

共享公钥

在node01将公钥推给另外节点,执行:

可能要输入密码,输入即可

1
2
3
[root@node01 ~]# ssh-copy-id -i node01
[root@node01 ~]# ssh-copy-id -i node02
[root@node01 ~]# ssh-copy-id -i node03

验证

连的过程中有可能第一次需要输入密码,第二次再去ssh还是需要输入密码就有问题,

注意事项:一旦ssh连进去了之后一定要退出来,exit

1
2
ssh node02
exit
1
2
ssh node03
exit
1
2
ssh node04
exit

分发hosts文件

把hosts文件分发给node02 node03

1
2
[root@node01 ~]# scp /etc/hosts root@node02:/etc/
[root@node01 ~]# scp /etc/hosts root@node03:/etc/

node01(主)安装Hadoop

  1. 上传
    1590044622284

  2. 解压

    1
    2
    3
    4
    5
    [root@node01 ~]# cd /usr/tools/
    [root@node01 local]# tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local
    [root@node01 hadoop-2.7.7]# cd /usr/local/hadoop-2.7.7/share/
    [root@node01 share]# ls doc
    hadoop[root@node01 share]# rm -rf doc
  3. 设置环境变量

    1
    vi /etc/profile

    添加如下内容

    1
    2
    # Hadoop
    export HADOOP_HOME=/usr/local/hadoop-2.7.7export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
  4. 环境变量生效

    1
    [root@node01 ~]# source /etc/profile
  5. 测试验证

    1
    hadoop
  6. 分发环境变量

1
2
3
scp /etc/profile root@node02:/etc/
scp /etc/profile root@node03:/etc/
注意:记得到所有节点上执行source命令

配置Hadoop全分布式

修改hadoop-env.sh

image-20210305161336177

1
export JAVA_HOME=/usr/local/jdk1.8.0_221

image-20210305160713081

修改core-site.xml

image-20210305161357980

1
2
3
4
5
6
7
8
9
10
11
<configuration>    
   <property>        
       <name>fs.defaultFS</name>        
       <value>hdfs://node01:9000</value>    
   </property>
   
   <property>        
       <name>hadoop.tmp.dir</name>        
       <value>/var/root/hadoop/full</value>    
   </property>
</configuration>

说明:

  • fs.defaultFS 文件系统对外提供的URI地址以供数据交互。
  • hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode 和datanode的存放位置,默认就放在这个路径下。

image-20210305161052241

修改hdfs-site.xml

image-20210305161422709

1
2
3
4
5
6
7
8
9
10
11
<configuration>    
   <property>        
       <name>dfs.replication</name>        
       <value>2</value>    
   </property>    
   
   <property>        
       <name>dfs.namenode.secondary.http-address</name>        
       <value>node02:50090</value>    
   </property>
</configuration>

说明:

  • dfs.replication 副本数量
  • dfs.namenode.secondary.http-address 提供secondary namenode的节点和端口

image-20210305161205537

修改slaves

image-20210305161434494

1
node01node02node03

image-20210305161256592

修改yarn-site.xml

image-20210305161538239

image-20210305161521741

1
2
3
4
5
6
7
8
9
10
11
<configuration>    
   <property>        
       <name>yarn.resourcemanager.hostname</name>        
       <value>node01</value>    
   </property>    
   
   <property>        
       <name>yarn.nodemanager.aux-services</name>        
       <value>mapreduce_shuffle</value>    
   </property>
</configuration>

分发hadoop到各节点

1
2
scp -r /usr/local/hadoop-2.7.7 root@node02:/usr/local
scp -r /usr/local/hadoop-2.7.7 root@node03:/usr/local

格式化和启动

  1. 在Node01节点格式化操作
    1
    hdfs namenode -format
  2. 启动(只需要在主节点上启动,其他的不需要启动)
    1
    start-dfs.sh
  3. 验证
    1
    jps
  4. **登陆web地址([**http://192.168.52.101:50070/)检测

总结

Hadoop的全分布式搭建的过程:

  • 准备3台虚拟机
  • 保证虚拟机网络、IP、主机名、防火墙
  • 安装JDK
  • 做etc hosts文件设置
  • 免秘钥登陆
  • 安装Hadoop
  • 上传包 解压
  • 配置环境变量
  • 让环境变量生效 验证
  • hadoop-env.xml 配置JAVA_HOME
  • core-site.xml namenode
  • hdfs-site.xml
  • slaves 从节点
  • yarn-site.xml
  • 分发Hadoop
  • 格式化 hadoop namenode -format
  • 启动 start-dfs.sh stop-dfs.sh
  • 检查 JPS