zookeeper是一个自动管理分布式集群的一个工具,以实现集群的高可用。

比如集群中的一个机器挂掉了,没有zookeeper的话就得考虑挂一个机器对剩下集群工作的影响,而有了zookeeper,它就能自动帮你协调这些事儿。

正规的解释如下:

  zookeeper是 一个开源的针对大型分布式系统的可靠协调系统。

  设计目标是:将复杂且容易出错的分布式式一致性服务封装起来,构成一个高效可靠的原语集,

        并以简单易用的接口提供给用户使用。

  提供的功能包括:发布/订阅,分布式协调/通知,配置管理,集群管理,主从协调,分布式锁等。

安装与配置:

这里用三台centos6.9mini虚拟机演示,主机名分别是h1、h2、h3,ip分别是192.168.227.11、192.168.227.22、192.168.227.33。

三台虚拟机都已创建了hadoop用户,配了免密码登录。

软件安装路径是/home/hadoop/apps/。

1. 下载解压安装包

解压后,/home/hadoop/apps/zookeeper-3.4.10/下面的文件

2. 创建软连接

这一步要用root用户操作,先切换到root用户

语法:ln -s 源路径 软连接路径

ln -s /home/hadoop/apps/zookeeper-3.4.10 /usr/local/zookeeper

修改zookeeper软链接属主为hadoop:

chown -R hadoop:hadoop /usr/local/zookeeper

3. 修改环境变量

用root用户操作

vim /etc/profile

添加以下内容:

export JAVA_HOME=/usr/local/jdk

export ZOOKEEPER_HOME=/usr/local/zookeeper

export PATH=$PATH:${ZOOKEEPER_HOME}/bin:${JAVA_HOME}/bin

添加并保存后,重新编译环境变量:

source /etc/profile

(没有jdk的先下载jdk)

4. 修改配置文件

zookeeper/conf是保存配置文件的文件夹

修改里面的zoo.cfg文件

vi /conf/zoo.cfg

添加以下内容:

dataDir=/usr/local/zookeeper/data    #快照文件存储目录

dataLogDir=/usr/local/zookeeper/log   #事务日志文件目录

#(主机名, 心跳端口、数据端口)

server.1=h1:2888:3888

server.2=h2:2888:3888

server.3=h3:2888:3888

5. 创建运行需要的目录

在zookeeper目录下创建配置文件里写的目录

mkdir /usr/local/zookeeper/data

mkdir /usr/local/zookeeper/log

在data文件夹下新建myid文件,myid的文件内容为该节点的编号

cd data

touch myid

echo 1 >myid

6. 配置其余两个机器

用scp命令将整个zookeeper文件夹复制到其余两个机器上

scp -r /home/hadoop/apps/zookeeper-3.4.10 hadoop@h2:/home/hadoop/apps

scp -r /home/hadoop/apps/zookeeper-3.4.10 hadoop@h3:/home/hadoop/apps

然后按步骤2和步骤3分别对这两个机器创建软连接和修改环境变量。

将h2和h3机器里/hadoop/data/myid 中的数分别改成2和3。

至此就配置完了!

检查一下各个主机的运行

h1、h2、h3 依次执行zkServer.sh start

jps查看进程:

三个都开启后,执行zkServer.sh status查看zookeeper状态:

h1

h2

h3

可以看到zookeeper能够正常运行了。

数据存储:

zookeeper以Znode形式存储数据
类似于linux,但Znode可以存放数据
Znode类型:
持久节点、临时节点、顺序节点
组合:持久节点、持久顺序节点
临时节点、临时顺序节点
客户端创建临时节点后,当客户端与服务端断开连接后,临时节点将被删除,临时节点下不允许有子节点

监听机制使用:

即发布订阅功能
客户端注册一个监听时间,当zookeeper上被监听的时间发生变化时,会第一时间通知订阅者

客户端操作:

zkCli.sh 命令进入客户端
create [选项] 路径 值 #创建节点并赋值,不能不赋值
-s 顺序型 -e 临时型
set 路径 值 #改变节点的值
get 路径 #获取节点的值
get 路径 watch #监听节点数据内容变化,只监听一次
ls 路径 watch #监听节点目录变化,只监听一次
delete 路径 #删除一个节点,节点下不能有子节点
rmr 路径 #删除有子节点的目录
cons #输出所有客户端的连接信息

hadoop学习笔记——zookeeper平台搭建的更多相关文章

  1. 十五、Hadoop学习笔记————Zookeeper的环境搭建

    linux中/opt一般用来存放应用/var目录一般用来存放日志 sample为样例文件,复制一份zoo.cfg文件 配置zoo文件,id为服务器id(整数),host为服务器的ip地址,第一个por ...

  2. hadoop学习笔记壹 --环境搭建及配置文件的修改

    Hadoop生态和其他生态最大的不同之一就是“单一平台多种应用”的理念了. hadoop能解决是什么问题: 1.HDFS :海量数据存储 MapReduce: 海量数据分析   YARN :资源管理调 ...

  3. hadoop学习笔记--集群搭建

    注:大家常说的ssh其实就是一个免密码访问的东西,为了简化操作的,不用每次访问其他节点重新输入密码.但是要想配置如下: .在每台机器上执行 ssh-keygen -t rsa,连敲三次回车键(即设置空 ...

  4. 十五、Hadoop学习笔记————Zookeeper客户端的使用

    timeout表示会话超时时间,zookeeper靠与客户的心跳来判断会话是否有效(单位毫秒), -r为只读,表示zookeeper如果与半数以上服务器失去连接则会停止服务,如果有-r参数,则会继续保 ...

  5. 十四、Hadoop学习笔记————Zookeeper概述与基本概念

    顺序一致性:严格按照顺序在zookeeper上执行 原子性:所有事物请求的结果,在整个集群的应用情况一致 单一视图:无论从哪个服务器进入集群,看到的东西都是一致的 可靠性:服务端成功响应后,状态会 一 ...

  6. 十六、Hadoop学习笔记————Zookeeper实战

    所有服务器都会先将自己的服务器信息注册到servers中,然后每台服务器都会尝试注册master,哪台注册成功,则哪台就是master服务器. 所有的服务器都会关注master节点的删除事件,这样通过 ...

  7. Hadoop学习笔记—22.Hadoop2.x环境搭建与配置

    自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...

  8. Hadoop学习笔记(3)——分布式环境搭建

    Hadoop学习笔记(3) ——分布式环境搭建 前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里, ...

  9. Hadoop学习笔记(10) ——搭建源码学习环境

    Hadoop学习笔记(10) ——搭建源码学习环境 上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了.但是看代码用什么,难不成gedit?,单步 ...

随机推荐

  1. Data Flow ->> OLE DB Destination ->> Fast Load

    OLE DB Destination组件提供了fast load选项,用bulk模式load数据而不是row-to-row的模式.这样性能上好.但是需要注意一点就是,一旦用了fast load,err ...

  2. 如何向数据库中添加TIMESTAMP(6)类型的数据

    to_timestamp('2011-11-11 11:11:11.1','yyyy-mm-dd hh24:mi:ss.ff')

  3. %02hhX

    大家经常会遇到将 调试信息例如从网络收到的数据包 或者 转换后的数据 打印出来,调试问题. 如果以ascii码打印的话,控制字符和ascii码以外的字符不能很好的查看具体值(看不到,或者乱码,尤其对于 ...

  4. laravel 使用EasyWechat 3分钟完成微信支付(以APP支付为例)

    上一篇写了支付宝支付,然后这段时间我又把微信支付给接上了,作为萌新的我还是很有成就感的,哈哈~~好了,该写正事了. 第一步:创建应用及配配置  首先到微信的官方平台注册应用https://pay.we ...

  5. 电池容量单位 Wh和 Ah的关系

    电池容量单位,应该是一个能量单位.我认为使用Wh,KWh比较科学. 功率单位是W 能量单位是WH 部分手机.充电宝使用Ah作为单位,需要通过电池输出电压进行单位转换. 转换公式 Ah * 电池输出电压 ...

  6. python UI自动化实战记录四:测试页面1-pageobject

    该部分记录测试页面1-IndexPage,所有首页上的元素定位.操作.获取属性等方法都写在该类中. 1 首页类继承自BasePage 2 首页类第一部分写的是所有的定位器 3 首页类第二部分类的方法, ...

  7. mongodb分片集群(无副本集)搭建

    数据分片节点#192.168.114.26#mongo.cnfport=2001dbpath=/data/mongodb/datalogpath=/data/mongodb/log/mongodb.l ...

  8. angularJS报错$apply already in progress的原因和解决方法

    如果我们使用了AngularJS中的$scope.$apply()或者$scope.$digest(),我们很可能会遇到类似下面的错误,虽然这个错误没有太大影响,但是在日志中看起来还是很不爽的,日志中 ...

  9. phonegap 捕获图片,音频,视屏 api capture

    一. capture Api 简单介绍 capture 对象用于获取视屏,音频和图像,它是一个全局对象,通过 navigator.device.capture 来访问 方法: capture.capt ...

  10. Java时间格式化时YYYY(大写)和yyyy(小写)的区别

    在Java中,我们大多数情况下格式日期都是用的SimpleDateFormat,比如说把一个日期格式成"yyyy-MM-dd"的形式. 我们要注意的是,对于年份来说,大写的Y和小写 ...