Hadoop-HA 搭建高可用集群Hadoop Zookeeper


Hadoop Zookeeper 搭建(一)

一、准备工作

VMWARE虚拟机 CentOS 7 系统

虚拟机1:master

虚拟机2:node1

虚拟机3:node2

  • 时间同步

    ntpdate ntp.aliyun.com
  • 调整时区

    cp  /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
  • jdk1.8(以1.8为例,目前大多数企业都是使用1.8版本,最稳定)

    java -version
  • 修改主机名

    三台分别执行 vim /etc/hostname 并将内容指定为对应的主机名
  • 关闭防火墙:systemctl stop firewalld

    • 查看防火墙状态:systemctl status firewalld

    • 取消防火墙自启:systemctl disable firewalld

  • 静态IP配置

    • 直接使用图形化界面配置(不推荐)

    • 手动编辑配置文件进行配置

      1、编辑网络配置文件
      vim /etc/sysconfig/network-scripts/ifcfg-ens33
      ?
      TYPE=Ethernet
      BOOTPROTO=static
      HWADDR=00:0C:29:E2:B8:F2
      NAME=ens33
      DEVICE=ens33
      ONBOOT=yes
      IPADDR=192.168.190.100
      GATEWAY=192.168.190.2
      NETMASK=255.255.255.0
      DNS1=192.168.190.2
      DNS2=223.6.6.6
      ?
      需要修改:HWADDR(mac地址,centos7不需要手动指定mac地址)
      IPADDR(根据自己的网段,自定义IP地址)
      GATEWAY(根据自己的网段填写对应的网关地址)
      ?
      2、关闭NetworkManager,并取消开机自启
      systemctl stop NetworkManager
      systemctl disable NetworkManager
      ?
      3、重启网络服务
      systemctl restart network
  • 免密登录

    # 1、生成密钥
    ssh-keygen -t rsa
    注意:连敲三次生成方格形状的密钥,在当前状态下,配置免密钥登陆。
    # 2、配置免密登录(三台虚拟机都需要进行免密操作,不要怕麻烦!!)
    ssh-copy-id master
    ssh-copy-id node1
    ssh-copy-id node2
    # 3、测试免密登录
    ssh node1
    ssh node2
    ssh master

     

  • 配置好映射文件:/etc/hosts(三台虚拟机都需要配置)

    192.168.170.100 master
    192.168.170.101 node1
    192.168.170.102 node2
    注意:每个人的IP地址都是不一样的,查看自己的IP地址使用 ifconfig
    使用远程复制
    cd /etc
    scp -r hosts/ node1:`pwd`
    scp -r hosts/ node2:`pwd`

 

二、 Zookeeper 搭建

1、上传安装包到master并解压

    tar -xvf zookeeper-3.4.6.tar.gz
官网下载:
https://zookeeper.apache.org/

2、配置环境变量

vim /etc/profile

export ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin
保存退出,执行
source /etc/profile

配置node1和node2的环境变量
scp /etc/profile node1:/etc/
scp /etc/profile node2:/etc/

在所有节点执行
source /etc/profile

3、修改配置文件

cd /usr/local/soft/zookeeper-3.4.6/(解压后的目录)
?	cd conf
zoo_sample.cfg(是一个模板文件,_sample后缀,不起任何效果,需要复制一份)
?	cp  zoo_sample.cfg zoo.cfg
修改
dataDir=/usr/local/soft/zookeeper-3.4.6/data

文件最后位置增加
server.0=master:2888:3888
server.1=node1:2888:3888
server.2=node2:2888:3888

4、同步到其它节点

	scp -r zookeeper-3.4.6 node1:`pwd`
	scp -r zookeeper-3.4.6 node2:`pwd`

 

5、创建/usr/local/soft/zookeeper-3.4.6/data目录,所有节点都要创建

mkdir /usr/local/soft/zookeeper-3.4.6/data

在data目录下创建myid文件
vim myid 
master,node1,node2分别加上0,1,2

6、启动zk, zkServer.sh start 三台都需要执行

zkServer.sh status 查看状态

当有一个leader的时候启动成功

连接zk zkCli.sh

zk  是一个目录结构 ,每个节点可以存数据,同时可以有子节点

zk shell

创建目录
create /test test
create /test/a 1
获取数据
get /test
 
ls /test

delete 只能删除没有子节点的节点
rmr /test  删除节点

重置zk 1、杀掉所有zk进程 kiil -9 pid

2、删除data目录下的version文件, 所有节点都要删除 rm -rf /usr/local/soft/zookeeper-3.4.6/data/version-2

2、启动zk zkServer.sh start

 

Hadoop -HA 高可用 搭建(二)

一、准备工作(做之前拍摄快照)

VMWARE虚拟机 CentOS 7 系统

虚拟机1:master

虚拟机2:node1

虚拟机3:node2

  • 时间同步

    ntpdate ntp.aliyun.com
  • 调整时区

    cp  /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime
  • jdk1.8(以1.8为例,目前大多数企业都是使用1.8版本,最稳定)

    java -version
  • 修改主机名

    三台分别执行 vim /etc/hostname 并将内容指定为对应的主机名
  • 关闭防火墙:systemctl stop firewalld

    • 查看防火墙状态:systemctl status firewalld

    • 取消防火墙自启:systemctl disable firewalld

  • 静态IP配置

    • 直接使用图形化界面配置(不推荐)

    • 手动编辑配置文件进行配置

      1、编辑网络配置文件
      vim /etc/sysconfig/network-scripts/ifcfg-ens33
      ?
      TYPE=Ethernet
      BOOTPROTO=static
      HWADDR=00:0C:29:E2:B8:F2
      NAME=ens33
      DEVICE=ens33
      ONBOOT=yes
      IPADDR=192.168.190.100
      GATEWAY=192.168.190.2
      NETMASK=255.255.255.0
      DNS1=192.168.190.2
      DNS2=223.6.6.6
      ?
      需要修改:HWADDR(mac地址,centos7不需要手动指定mac地址)
      IPADDR(根据自己的网段,自定义IP地址)
      GATEWAY(根据自己的网段填写对应的网关地址)
      ?
      2、关闭NetworkManager,并取消开机自启
      systemctl stop NetworkManager
      systemctl disable NetworkManager
      ?
      3、重启网络服务
      systemctl restart network
  • 免密登录

    # 1、生成密钥
    ssh-keygen -t rsa
    注意:连敲三次生成方格形状的密钥,在当前状态下,配置免密钥登陆。
    # 2、配置免密登录(三台虚拟机都需要进行免密操作,不要怕麻烦!!)
    ssh-copy-id master
    ssh-copy-id node1
    ssh-copy-id node2
    # 3、测试免密登录
    ssh node1
    ssh node2
    ssh master

     

  • 配置好映射文件:/etc/hosts(三台虚拟机都需要配置)

    192.168.170.100 master
    192.168.170.101 node1
    192.168.170.102 node2
    注意:每个人的IP地址都是不一样的,查看自己的IP地址使用 ifconfig
    使用远程复制
    cd /etc
    scp -r hosts/ node1:`pwd`
    scp -r hosts/ node2:`pwd`

二、 Zookeeper 搭建(一中有详细教程)

        ZK  NN  DN  RM  NM  JN  ZKFC
master 1 1 1 1 1
node1 1 1 1 1 1 1 1
node2 1 1 1 1
?

停止HDFS集群:stop-dfs.sh

1、修改hadoop配置文件

cd  /usr/local/soft/hadoop-2.7.6/etc/hadoop
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml

举例视图:

[root@master hadoop]# ll
总用量 156
-rw-r--r-- 1 20415  101  4436 4月  18 2018 capacity-scheduler.xml
-rw-r--r-- 1 20415  101  1335 4月  18 2018 configuration.xsl
-rw-r--r-- 1 20415  101   318 4月  18 2018 container-executor.cfg
-rw-r--r-- 1 20415  101  1100 5月  21 15:40 core-site.xml
-rw-r--r-- 1 20415  101  3670 4月  18 2018 hadoop-env.cmd
-rw-r--r-- 1 20415  101  4269 5月  21 17:38 hadoop-env.sh
-rw-r--r-- 1 20415  101  2598 4月  18 2018 hadoop-metrics2.properties
-rw-r--r-- 1 20415  101  2490 4月  18 2018 hadoop-metrics.properties
-rw-r--r-- 1 20415  101  9683 4月  18 2018 hadoop-policy.xml
-rw-r--r-- 1 20415  101   961 5月  21 15:43 hdfs-site.xml
-rw-r--r-- 1 20415  101  1449 4月  18 2018 httpfs-env.sh
-rw-r--r-- 1 20415  101  1657 4月  18 2018 httpfs-log4j.properties
-rw-r--r-- 1 20415  101    21 4月  18 2018 httpfs-signature.secret
-rw-r--r-- 1 20415  101   620 4月  18 2018 httpfs-site.xml
-rw-r--r-- 1 20415  101  3518 4月  18 2018 kms-acls.xml
-rw-r--r-- 1 20415  101  1527 4月  18 2018 kms-env.sh
-rw-r--r-- 1 20415  101  1631 4月  18 2018 kms-log4j.properties
-rw-r--r-- 1 20415  101  5540 4月  18 2018 kms-site.xml
-rw-r--r-- 1 20415  101 11801 4月  18 2018 log4j.properties
-rw-r--r-- 1 20415  101   951 4月  18 2018 mapred-env.cmd
-rw-r--r-- 1 20415  101  1383 4月  18 2018 mapred-env.sh
-rw-r--r-- 1 20415  101  4113 4月  18 2018 mapred-queues.xml.template
-rw-r--r-- 1 root  root  1116 5月  21 15:44 mapred-site.xml
-rw-r--r-- 1 20415  101   758 4月  18 2018 mapred-site.xml.template
-rw-r--r-- 1 20415  101    12 5月  21 15:44 slaves
-rw-r--r-- 1 20415  101  2316 4月  18 2018 ssl-client.xml.example
-rw-r--r-- 1 20415  101  2697 4月  18 2018 ssl-server.xml.example
-rw-r--r-- 1 20415  101  2191 4月  18 2018 yarn-env.cmd
-rw-r--r-- 1 20415  101  4567 4月  18 2018 yarn-env.sh
-rw-r--r-- 1 20415  101  1185 5月  21 15:45 yarn-site.xml

修改配置文件

core-site.xml


	
		fs.defaultFS
		hdfs://cluster
	
	
		hadoop.tmp.dir
		/usr/local/soft/hadoop-2.7.6/tmp
	
	
		fs.trash.interval
		1440
	
	
	      ha.zookeeper.quorum
	      master:2181,node1:2181,node2:2181
	

修改配置文件

hdfs-site.xml




dfs.namenode.name.dir
/usr/local/soft/hadoop-2.7.6/data/namenode




dfs.datanode.data.dir
/usr/local/soft/hadoop-2.7.6/data/datanode




dfs.replication
1




dfs.permissions.enabled
false




dfs.webhdfs.enabled
true





dfs.nameservices
cluster




dfs.ha.namenodes.cluster
nn1,nn2




dfs.namenode.rpc-address.cluster.nn1
master:8020


dfs.namenode.rpc-address.cluster.nn2
node1:8020




dfs.namenode.http-address.cluster.nn1
master:50070


dfs.namenode.http-address.cluster.nn2
node1:50070




dfs.namenode.shared.edits.dir
qjournal://master:8485;node1:8485;node2:8485/cluster




dfs.journalnode.edits.dir
/usr/local/soft/hadoop-2.7.6/data/journal




dfs.client.failover.proxy.provider.cluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider




dfs.ha.fencing.methods
sshfence




dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
:



dfs.ha.automatic-failover.enabled
true

 

yarn 高可用 修改配置文件

yarn-site.xml




mapreduce.framework.name
yarn




mapreduce.jobhistory.address
node1:10020




mapreduce.jobhistory.webapp.address
node1:19888




mapreduce.job.ubertask.enable
true




mapreduce.job.ubertask.maxmaps
9




mapreduce.job.ubertask.maxreduces
1

 

修改配置文件

mapred-site.xml



mapreduce.framework.name
yarn




mapreduce.jobhistory.address
node1:10020




mapreduce.jobhistory.webapp.address
node1:19888




mapreduce.job.ubertask.enable
true




mapreduce.job.ubertask.maxmaps
9




mapreduce.job.ubertask.maxreduces
1

 

5、删除hadoop数据存储目录下的文件 每个节点都需要删除(直接删除其他节点上的 /hadoop-2.7.6/ 文件夹)

注:原来的节点上没有Hadoop这个文件就不要删除了!!

其他节点上删除   node1   node2
rm -rf /usr/local/soft/hadoop-2.7.6/

同步到其它节点 (远程复制一份到其他两个节点上去)

cd /usr/local/soft/
scp -r hadoop-2.7.6/ node1:`pwd`
scp -r hadoop-2.7.6/ node2:`pwd`

 

三、启动进程 (按照一下顺序进行操作)

6、启动zookeeper 三台都需要启动 zkServer.sh start zkServer.sh status

7、启动JN 存储hdfs元数据 三台JN上执行 启动命令:

cd /usr/local/soft/hadoop-2.7.6/sbin/
hadoop-daemon.sh start journalnode

 

8、格式化 在一台NN上执行,这里选择master

hdfs namenode -format

启动当前的NN

hadoop-daemon.sh start namenode

 

9、执行同步 没有格式化的NN上执行 在另外一个namenode上面执行 这里选择node1

/usr/local/soft/hadoop-2.7.6/bin/
hdfs namenode -bootstrapStandby

 

10、格式化ZK 在master上面执行 !!一定要先 把zk集群正常 启动起来

/usr/local/soft/hadoop-2.7.6/bin/
hdfs zkfc -formatZK

 

11、启动hdfs集群,在master上执行

start-dfs.sh

 

最后在页面查看(以下显示,集群搭建成功)

http://master:50070/   或者     http://192.168.170.110:50070/ 
http://node1:50070/    或者     http://192.168.170.120:50070/ 

image-20220525210549978

image-20220525210713567

关闭

stop-all.sh