1、环境准备

1.1下载zooKeeper

   查阅hadoop2.7.3的文档我们可以看到hadoop2.7.3在搭建高可用的时候使用的是zookeeper-3.4.2版本,所以我们也按照hadoop官网的提示,接下来我们安装zookeeper-3.4.2版本.进入官网下载ZooKeeper3.4.2版本

   官网地址:https://zookeeper.apache.org/



点击Download



1.3安装zooKeeper

  1. #1.把zookeeper的压缩安装包解压到/opt/bigdata/目录下
  2. [root@node1 ~]# tar -xzvf zookeeper-3.4.2.tar.gz -C /opt/bigdata/ #输入完命令后回车
  3. #2.切换到bigdata目录下
  4. [root@node1 ~]# cd /opt/bigdata/
  5. #3.按照安装hadoop的方式,将zookeeper的安装目录的所属组修改为hadoop:hadoop
  6. #修改zookeeper安装目录的所属用户和组为hadoop:hadoop
  7. [root@node1 bigdata]# chown -R hadoop:hadoop zookeeper-3.4.2/
  8. #4.修改zookeeper安装目录的读写权限
  9. [root@node1 bigdata]# chmod -R 755 zookeeper-3.4.2/

1.4配置zooKeeper环境变量

  1. #1.切换到hadoop用户目录下
  2. [root@node1 bigdata]# su - hadoop
  3. Last login: Thu Jul 18 16:07:39 CST 2019 on pts/0
  4. [hadoop@node1 ~]$ cd /opt/bigdata/zookeeper-3.4.2/
  5. [hadoop@node1 zookeeper-3.4.2]$ cd ..
  6. [hadoop@node1 bigdata]$ cd ~
  7. #2.修改hadoop用户下的环境变量配置文件
  8. [hadoop@node1 ~]$ vi .bash_profile
  9. # Get the aliases and functions
  10. # Get the aliases and functions
  11. if [ -f ~/.bashrc ]; then
  12. . ~/.bashrc
  13. fi
  14. # User specific environment and startup programs
  15. JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
  16. HADOOP_HOME=/opt/bigdata/hadoop-2.7.3
  17. SPARK_HOME=/opt/spark-2.4.3-bin-hadoop2.7
  18. M2_HOME=/opt/apache-maven-3.0.5
  19. #3.新增zookeeper的环境变量ZOOKEEPER_HOME
  20. ZOOKEEPER_HOME=/opt/bigdata/zookeeper-3.4.2/
  21. PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$M2_HOME/bin
  22. #4.将zookeeper的环境变量ZOOKEEPER_HOME加入到path中
  23. PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin:$ZOOKEEPER_HOME/bin
  24. export JAVA_HOME
  25. export HADOOP_HOME
  26. export M2_HOME
  27. export SPARK_HOME
  28. export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
  29. export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop
  30. #5.导出zookeeper环境变量
  31. export ZOOKEEPER_HOME
  32. #6.保存修改内容
  33. :wq! #记得回车
  34. #7.使得环境变量生效
  35. [hadoop@node1 ~]$ source .bash_profile
  36. #8.输入zk然后按键盘左侧的Tab键
  37. [hadoop@node1 ~]$ zk
  38. #有如下的提示,表名zookeeper的配置完成
  39. zkCleanup.sh zkCli.cmd zkCli.sh zkEnv.cmd zkEnv.sh zkServer.cmd zkServer.sh
  40. [hadoop@node1 ~]$ zk

1.5 修改zookeeper集群配置文件

   将目录切换到zookeeper的安装目录下的conf目录下复制zoo_sample.cfg文件为zoo.cfg

  1. [hadoop@node1 ~]$ cd /opt/bigdata/zookeeper-3.4.2/conf/
  2. [hadoop@node1 conf]$ ll
  3. total 12
  4. -rwxr-xr-x 1 hadoop hadoop 535 Dec 22 2011 configuration.xsl
  5. -rwxr-xr-x 1 hadoop hadoop 2161 Dec 22 2011 log4j.properties
  6. -rwxr-xr-x 1 hadoop hadoop 808 Dec 22 2011 zoo_sample.cfg
  7. #1.复制zoo_sample.cfg模板配置文件为正式的配置文件zoo.cfg
  8. [hadoop@node1 conf]$ cp zoo_sample.cfg zoo.cfg
  9. [hadoop@node1 conf]$ ll
  10. total 16
  11. -rwxr-xr-x 1 hadoop hadoop 535 Dec 22 2011 configuration.xsl
  12. -rwxr-xr-x 1 hadoop hadoop 2161 Dec 22 2011 log4j.properties
  13. -rwxr-xr-x 1 hadoop hadoop 808 Jul 19 11:20 zoo.cfg
  14. -rwxr-xr-x 1 hadoop hadoop 808 Dec 22 2011 zoo_sample.cfg
  15. [hadoop@node1 conf]$

   修改dataDir的值为 dataDir=/var/lib/zookeeper,在文件的末尾添加如下配置:

  1. server.1=node1:2888:3888
  2. server.2=node2:2888:3888
  3. server.3=node3:2888:3888

修改完配置文件记得保存

  1. # The number of milliseconds of each tick
  2. tickTime=2000
  3. # The number of ticks that the initial
  4. # synchronization phase can take
  5. initLimit=10
  6. # The number of ticks that can pass between
  7. # sending a request and getting an acknowledgement
  8. syncLimit=5
  9. # the directory where the snapshot is stored.
  10. # do not use /tmp for storage, /tmp here is just
  11. # example sakes.
  12. dataDir=/var/lib/zookeeper
  13. # the port at which the clients will connect
  14. clientPort=2181
  15. # the maximum number of client connections.
  16. # increase this if you need to handle more clients
  17. #maxClientCnxns=60
  18. #
  19. # Be sure to read the maintenance section of the
  20. # administrator guide before turning on autopurge.
  21. 开课吧
  22. kaikeba.com
  23. 精选领域名师,只为人才赋能 6
  24. 1.6 创建myid文件
  25. 在节点node1,node2,node3对应的/var/lib/zookeeper目录下(dataDir配置的目录/var/lib/zookeeper)创建myid
  26. 件,几个文件内容依次为1,2,3
  27. 如下图我们切换到root用户,在/var/lib目录下创建zookeeper目录,因为hadoop用户对/var/lib目录没有写权限,
  28. 所以我们在创建zookeeper目录时需要切换到root用户(拥有最大权限)
  29. #
  30. # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
  31. #
  32. # The number of snapshots to retain in dataDir
  33. #autopurge.snapRetainCount=3
  34. # Purge task interval in hours
  35. # Set to "0" to disable auto purge feature
  36. #autopurge.purgeInterval=1
  37. server.1=node1:2888:3888
  38. server.2=node2:2888:3888
  39. server.3=node3:2888:3888
  40. #修改完配置文件记得保存

1.6 创建myid文件

在节点node1,node2,node3对应的/var/lib/zookeeper目录下(dataDir配置的录/var/lib/zookeeper)创建myid文件,几个文件内容依次为1,2,3。切换到root用户,在/var/lib目录下创建zookeeper目录,因为hadoop用户对/var/lib目录没有写权限,所以我们在创建zookeeper目录时需要切换到

  1. root用户(拥有最大权限)
  2. [hadoop@node1 conf]$ vi zoo.cfg
  3. #1.切换到root用户
  4. [hadoop@node1 conf]$ su - root
  5. Password:
  6. Last login: Fri Jul 19 10:53:59 CST 2019 from 192.168.200.1 on pts/0
  7. #2.创建zookeeper目录
  8. [root@node1 ~]# mkdir -p /var/lib/zookeeper
  9. #3.进入到/var/lib/zookeeper/目录
  10. [root@node1 ~]# cd /var/lib/zookeeper/
  11. You have new mail in /var/spool/mail/root
  12. #4.创建myid配置文件
  13. [root@node1 zookeeper]# touch myid
  14. #5.编辑myid文件,输入1,我们目前编辑的是node1的节点的myid文件,node2的myid内容为2,node3的myid内容为3
  15. [root@node1 zookeeper]# vi myid
  16. You have new mail in /var/spool/mail/root
  17. #6.查看一下myid文件内容为1
  18. [root@node1 zookeeper]# cat myid
  19. 1
  20. You have new mail in /var/spool/mail/root

1.7 修改myid目录权限

  1. #1.配置完成后记得修改zookeeper目录的所属组和读写权限
  2. [root@node1 zookeeper]# cd ..
  3. You have new mail in /var/spool/mail/root
  4. #2.修改zookeeper目录所属组
  5. [root@node1 lib]# chown -R hadoop:hadoop zookeeper/
  6. #3.修改zookeeper目录的读写权限为755
  7. [root@node1 lib]# chmod -R 755 zookeeper/
  8. [root@node1 lib]#

2、复制zookeeper

  1. #1.复制/var/lib目录下的zookeeper目录到node2和node3的/var/lib目录下
  2. [root@node1 lib]# scp -r zookeeper node2:$PWD
  3. [root@node1 lib]# scp -r zookeeper node3:$PWD
  4. #2.复制zookeeper安装目录到node2和node3的安装目录下/opt/bigdata目录下
  5. [root@node1 lib]# scp -r /opt/bigdata/zookeeper-3.4.2/ node2:/opt/bigdata/
  6. [root@node1 lib]# scp -r /opt/bigdata/zookeeper-3.4.2/ node3:/opt/bigdata/

3、修改node2和node3节点zookeeper的相关目录权限

修改node2节点zookeeper 相关目录权限

  1. #1.修改zookeeper的myid配置目录所属组和读写权限
  2. [root@node2 lib]# cd ~
  3. [root@node2 ~]# chown -R hadoop:hadoop /var/lib/zookeeper
  4. [root@node2 ~]# chmod -R 755 /var/lib/zookeeper
  5. #2.修改zookeeper安装目录所属组和读写权限
  6. [root@node2 ~]# chown -R hadoop:hadoop /opt/bigdata/zookeeper-3.4.2/
  7. You have new mail in /var/spool/mail/root
  8. [root@node2 ~]# chmod -R 755 /opt/bigdata/zookeeper-3.4.2/
  9. [root@node2 ~]#

修改node3节点zookeeper 相关目录权限

  1. #1.修改zookeeper的myid配置目录所属组和读写权限
  2. [root@node3 bigdata]# cd ~
  3. You have new mail in /var/spool/mail/root
  4. [root@node3 ~]# chown -R hadoop:hadoop /var/lib/zookeeper
  5. [root@node3 ~]# chmod -R 755 /var/lib/zookeeper
  6. #2.修改zookeeper安装目录所属组和读写权限
  7. [root@node3 ~]# chown -R hadoop:hadoop /opt/bigdata/zookeeper-3.4.2/
  8. You have new mail in /var/spool/mail/root
  9. [root@node3 ~]# chmod -R 755 /opt/bigdata/zookeeper-3.4.2/
  10. [root@node3 ~]#

4、修改node2和node3的myid文件内容

修改node2节点zookeeper 的myid内容为2:

  1. [root@node2 ~]# vi /var/lib/zookeeper/myid
  2. You have new mail in /var/spool/mail/root
  3. [root@node2 ~]# cat /var/lib/zookeeper/myid
  4. 2
  5. [root@node2 ~]#

修改node3节点zookeeper 的myid内容为3

  1. [root@node3 ~]# vi /var/lib/zookeeper/myid
  2. You have new mail in /var/spool/mail/root
  3. [root@node3 ~]# cat /var/lib/zookeeper/myid
  4. 3
  5. [root@node3 ~]#

5、配置node2和node3的zookeeper环境变量

我们在node1节点上直接将hadoop用户的环境变量配置文件远程复制到node2和node3的hadoop用户家目录下

  1. #1.如果当前登录用户是root用户,需要切换到hadoop用户下,如果当前用户是hadoop用户,请将目录切换到hadoop用
  2. 户的家目录下,在进行环境变量文件的远程复制.
  3. [root@node1 lib]# su - hadoop
  4. Last login: Fri Jul 19 11:08:44 CST 2019 on pts/0
  5. [hadoop@node1 ~]$ scp .bash_profile node2:$PWD
  6. .bash_profile 100% 681
  7. 64.8KB/s 00:00
  8. [hadoop@node1 ~]$ scp .bash_profile node3:$PWD
  9. .bash_profile 100% 681
  10. 156.8KB/s 00:00
  11. [hadoop@node1 ~]$

5.1 使得node2和node3的环境变量生效

使得node2的hadoop的环境变量生效

  1. #注意:切换到hadoop用户下
  2. #1.使得环境变量生效
  3. [hadoop@node2 ~]$ source .bash_profile
  4. #2.输入zk然后按键盘左侧的Tab键
  5. [hadoop@node2 ~]$ zk
  6. #3.有如下命令和shell脚本的提示,说明zookeeper的环境变量配置成功.
  7. zkCleanup.sh zkCli.sh zkEnv.sh zkServer.sh
  8. zkCli.cmd zkEnv.cmd zkServer.cmd
  9. [hadoop@node2 ~]$ zk

使得node3的hadoop的环境变量生效

  1. #注意:切换到hadoop用户下
  2. [root@node3 bigdata]# su - hadoop
  3. Last login: Thu Jul 18 15:37:50 CST 2019 on :0
  4. #1.使得环境变量生效
  5. [hadoop@node3 ~]$ source .bash_profile
  6. #2.输入zk然后按键盘左侧的Tab键
  7. [hadoop@node3 ~]$ zk
  8. #3.有如下命令和shell脚本的提示,说明zookeeper的环境变量配置成功.
  9. zkCleanup.sh zkCli.sh zkEnv.sh zkServer.sh
  10. zkCli.cmd zkEnv.cmd zkServer.cmd
  11. [hadoop@node3 ~]$ zk

6.启动zookeeper集群

6.1 启动zookeeper集群

启动zookeeper集群需要手动分别依次在三台机器上启动,启动前需要在三台机器上都将用户切换为hadoop用户.

node1上启动zookeeper

  1. [hadoop@node1 ~]$ zkServer.sh start
  2. JMX enabled by default
  3. Using config: /opt/bigdata/zookeeper-3.4.2/bin/../conf/zoo.cfg
  4. Starting zookeeper ... STARTED
  5. [hadoop@node1 ~]$

node2上启动zookeeper

  1. [hadoop@node2 ~]$ zkServer.sh start
  2. JMX enabled by default
  3. Using config: /opt/bigdata/zookeeper-3.4.2/bin/../conf/zoo.cfg
  4. Starting zookeeper ... STARTED
  5. [hadoop@node2 ~]$

node3上启动zookeeper

  1. [hadoop@node3 ~]$ zkServer.sh start
  2. JMX enabled by default
  3. Using config: /opt/bigdata/zookeeper-3.4.2/bin/../conf/zoo.cfg
  4. Starting zookeeper ... STARTED
  5. [hadoop@node3 ~]$

6.2 查看zookeeper集群状态

使用zkServer.sh status命令在三个节点分别执行查看状态

在node1上查看

  1. [hadoop@node1 bin]$ zkServer.sh status
  2. JMX enabled by default
  3. Using config: /opt/bigdata/zookeeper-3.4.2/bin/../conf/zoo.cfg
  4. Mode: follower
  5. [hadoop@node1 bin]$

在node2上查看

  1. [hadoop@node2 bin]$ zkServer.sh status
  2. JMX enabled by default
  3. Using config: /opt/bigdata/zookeeper-3.4.2/bin/../conf/zoo.cfg
  4. Mode: follower
  5. [hadoop@node2 bin]$

在node3上查看

  1. [hadoop@node3 bin]$ zkServer.sh status
  2. JMX enabled by default
  3. Using config: /opt/bigdata/zookeeper-3.4.2/bin/../conf/zoo.cfg
  4. Mode: leader
  5. [hadoop@node3 bin]$

至此我们zookeeper集群安装完成.

6.3 zooKeeper安装遇到问题

由于按照hadoop2.7.3版本官方文档中使用zookeeper-3.4.2版本,但是zookeeper-3.4.2版本比较低,我们在启动zookeeper后,可以使用jps命令或者ps -ef|grep zookeeper命令查看zookeeper主进程的状态,但是我们发现是正常的,如果我们使用zkServer.sh status命令查看zookeeper的状态却显示是异常的,不管启动多少次都会得到同样的结果。

  1. [hadoop@node1 bin]$ zkServer.sh status
  2. JMX enabled by default
  3. Using config: /opt/bigdata/zookeeper-3.4.2/bin/../conf/zoo.cfg
  4. Error contacting service. It is probably not running.
  5. [hadoop@node2 bin]$ zkServer.sh status
  6. JMX enabled by default
  7. Using config: /opt/bigdata/zookeeper-3.4.2/bin/../conf/zoo.cfg
  8. Error contacting service. It is probably not running.
  9. [hadoop@node3 bin]$ zkServer.sh status
  10. JMX enabled by default
  11. Using config: /opt/bigdata/zookeeper-3.4.2/bin/../conf/zoo.cfg
  12. Error contacting service. It is probably not running.

分析主要有以下两个原因造成:

1.centos7上没有安装nc工具.

2.zookeeper启动脚本中的nc命令在不同的linux版本中使用了无效的参数导致获取状态异常或者获取的状态为

空状态导致的。

解决方法:

1.使用yum 在三个节点上分别安装nc工具

  1. yum install nc -y

2.修改zookeeper安装目录下的bin目录下的zkServer.sh脚本文件内容



修改完成后我们在使用zkServer.sh status就能看到zookeeper的状态了

Hadoop学习之路(9)ZooKeeper安装的更多相关文章

  1. hadoop学习之路1--centos7群集安装

    一.              安装centos7 1.  设置硬盘为单文件40G.CPU 2核.内存2G.其他默认. 2.  安装时选择gnome,具备操作界面,并增加hadoop的账号. a)   ...

  2. 《Hadoop学习之路》学习实践

    (实践机器:blog-bench) 本文用作博文<Hadoop学习之路>实践过程中遇到的问题记录. 本文所学习的博文为博主“扎心了,老铁” 博文记录.参考链接https://www.cnb ...

  3. 阿里封神谈hadoop学习之路

    阿里封神谈hadoop学习之路   封神 2016-04-14 16:03:51 浏览3283 评论3 发表于: 阿里云E-MapReduce >> 开源大数据周刊 hadoop 学生 s ...

  4. 我的 Delphi 学习之路 —— Delphi 的安装

    标题:我的 Delphi 学习之路 -- Delphi 的安装 作者:断桥烟雨旧人伤 1. Delphi 版本的选择 Delphi 版本众多,我该选择哪一个,这确实是个问题,自从 Borland 公司 ...

  5. Hadoop 学习之路(八)—— 基于ZooKeeper搭建Hadoop高可用集群

    一.高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用,两者的实现基本类似,但 HDFS NameNode 对数据存储及其一致性的要求 ...

  6. Hadoop学习之路(二)Hadoop发展背景

    Hadoop产生的背景 1. HADOOP最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题—— ...

  7. 小强的Hadoop学习之路

    本人一直在做NET开发,接触这行有6年了吧.毕业也快四年了(6年是因为大学就开始在一家小公司做门户网站,哈哈哈),之前一直秉承着学要精,就一直一门心思的在做NET(也是懒吧).最近的工作一直都和大数据 ...

  8. 3.Hadoop集群搭建之Zookeeper安装

    前期准备 下载Zookeeper 3.4.5 若无特殊说明,则以下操作均在master节点上进行 1. 解压Zookeeper #直接解压Zookeeper压缩包 tar -zxvf zookeepe ...

  9. 我的hadoop学习之路

    Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上. Ha ...

随机推荐

  1. JMeter之If Controller深究一

    1.背景 大家最近还好么,截止目前新型冠状病毒累计确诊病例已超7万4千多例,希望大家无论是在家办公还是单位办公,一定要注意自我防护.今天跟大家分享一下,最近一次真实生产压测遇到的问题,如题:if co ...

  2. NR / 5G - The Best CQI algorithm

  3. zabbix-proxy配置文件参数说明

    配置文件路径: /etc/zabbix/zabbix_proxy.conf Server=10.0.0.10 #<===指定zabbix server的ip地址或主机名 Hostname=zab ...

  4. Flutter Widgets 之 InkWell 和 Ink

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 InkWell InkWell组件在用户点击时出现&quo ...

  5. telnet命令连接服务器端

    win7: (1).使用telnet命令: 控制面板--->程序--->打开或关闭Windows功能--->Telnet客户端[勾选] (2)连接(cmd) eg:telnet ww ...

  6. [未完成]ECRound 80

    Educational Codeforces Round 80 (Rated for Div. 2)A 大意:寻找x使得等式<=n,若满足情况输出YES否则NO 解法:纯数学题,先构造函数f(x ...

  7. centos7使用fdisk:创建和维护MBR分区表

    1.在VMware选择要添加硬盘的虚拟机,添加一块硬盘. 这样就有两块硬盘 2.重启虚拟机. cd /dev #dev是设备目录,下面有很多很多设备,其中就包含硬盘 ll grep | sd #过滤s ...

  8. C#方法中的各类参数

    居家隔离的第26天,还在持续的疫情着实让人担忧,看着每天新增的确认人数数字,也在为那些家庭祝福,每当想想那不是一个数字是一条条鲜活的生命时就格外沉重.利用闲在家里的时间巩固C#语言的一个难点.最近在温 ...

  9. 理解一致性Hash算法

    简介 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CAR ...

  10. 阿里云K8S下玩.NET CORE 3.1

    1. 创建阿里云K8S集群,本文以标准托管集群为例 1.1 创建一个 2台 centos 2core 4G的 k8s 集群 1.2 创建成功的模样 2. 创建 asp.net core webapi项 ...