Zookeeper分布式安装配置

Zookeeper分布式安装配置

Zookeeper介绍

概述

1、ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

2、ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

3、ZooKeeper包含一个简单的原语集,提供Java和C的接口。

4、ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。

ZooKeeper的基本运转流程:

1、选举Leader。

2、同步数据。

3、选举Leader过程中算法有很多,但要达到的选举标准是一致的。

4、Leader要具有最高的zxid。

5、集群中大多数的机器得到响应并follow选出的Leader。

Zookeeper下载与安装

 

下载

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

大家可以去官网下载自己需要的版本,例如我需要安装的是3.4.6版本:

安装

Zookeeper的运行需要Java环境,所以需要首先安装JDK,JDK的安装可以参考:

http://blog.csdn.net/u011204847/article/details/51002072

把下载的压缩包拷贝到想要安装的目录,然后解压:

[[email protected] software]# tar -xzf zookeeper-3.4.6.tar.gz

解压之后文件目录:

加入环境变量:

vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/software/zookeeper-3.4.6
export PATH=.:$PATH:$ZOOKEEPER_HOME/bin

使环境变量生效:

source /etc/profile

Zookeeper配置

单机配置

在zookeeper目录下创建目录data:

[[email protected] software]# cd zookeeper-3.4.6
[[email protected] zookeeper-3.4.6]# mkdir data

然后到zookeeper / conf 目录下,修改zoo_sample.cfg名称为zoo.cfg

然后修改配置文件zoo.cfg:

vi zoo.cfg   //单机只需要修改dataDir为之前创建的data目录即可

配置好后就可以启动了:

切换到Zookeeper的bin目录下,然后

./zkServer.sh start    //开启Zookeeper

其他命令:

./zkServer.sh stop    //关闭Zookeeper
./zkServer.sh status   //查看Zookeeper状态
./zkCli.sh   //打开Zookeeper客户端

分布式配置

这里我使用三台主机进行Zookeeper的分布式配置。

1、首先,我们在之前配置的单机基础上继续修改配置文件:

2、在之前的配置文件末尾添加如下内容:

server.0=master01:2888:3888   //master01为你的主机名,前面的0代表的是给这台主机配的ID
server.1=slave01:2888:3888    //同理slave01也是主机名,可以使用IP
server.2=slave02:2888:3888

3、然后在我们之前建立的data文件中使用命令:

echo 0 myid   //在data目录建立myid文件,并写入0(与上面的配置中server.0中的0对应)

4、将这台主机配置好的Zookeeper整个目录都拷贝到另外两台主机的相同路径下,并在那两台上修改myid为1和2。

5、修改另外两台主机/etc/profile文件,使得它们的Zookeeper环境配置和第一台主机一样

6、在每台主机上面开启Zookeeper后,查看状态

开启三台主机中Zookeeper后,查看状态会发现有一个leader以及两个follower,此时我们的Zookeeper分布式环境以及搭建好了

注意:

1、上面我可以使用类似 ssh slave01命令直接登录到slave01和slave02主机是因为我在三台主机之间做了免密码登录。

2、在配置文件和命令中可以直接使用主机名是因为我做了IP和主机名的映射。

3、我们可以在登录到另一台主机后,直接使用zkServer.sh脚本是因为我们之前配置了Zookeeper环境并使之生效。

附加配置

在安装好Zookeeper分布式环境后,一般情况下需要登录到每台主机上面去启动Zookeeper,比较繁琐,所以我们可以写一个shell脚本来启动和关闭这个Zookeeper集群。

在写脚本之前我们需要先解决一个问题,如果我们直接使用脚本操作去启动另外的主机上面Zookeeper,会发现启动不成功。这涉及到登录shell和非登录shell的问题。关于Shell脚本和登录/非登录shell可以参考:http://blog.csdn.net/u011204847/article/details/51184883

这里我直接写解决方法:

方法一:

修改Zookeeper / bin 目录下的zkEnv.sh,在图示位置或者文件开头添加你的JDK路径。

方法二:把profile的配置信息echo到.bashrc中  echo ‘source /etc/profile‘ >> ~/.bashrc

方法三:脚本代码中添加”source /etc/profile;”,例如:ssh $i "source /etc/profile;/usr/local/software/zookeeper-3.4.6/bin/zkServer.sh start"

Shell启动脚本示例:

#!/bin/bash
for i in master01 slave01 slave02
do
 	ssh $i "/usr/local/software/zookeeper-3.4.6/bin/zkServer.sh start"
done

脚本执行示例:

Shell停止脚本示例:

#!/bin/bash
for i in master01 slave01 slave02
do
        ssh $i "/usr/local/software/zookeeper-3.4.6/bin/zkServer.sh stop"
done

脚本执行示例:

Java代码操作Zookeeper示例

Pom依赖:

<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>2.8.0</version>
</dependency>

代码示例:

@Test   //测试类:测试Zookeeper连接
public void test13() throws Exception{
    //指定zookeeper集群的地址
    String connectString = "192.168.33.130:2181,192.168.33.131:2181,192.168.33.132:2181";
    //1000 :代表是重试时间间隔     3:表示是重试次数
    ExponentialBackoffRetry retryPolicy = new ExponentialBackoffRetry(1000, 3);
    //使用curator创建一个zk链接
    CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, retryPolicy);
    //启动连接
    client.start();
    InetAddress localHost = InetAddress.getLocalHost();
    String ip = localHost.getHostAddress();
    client.create()
        .creatingParentsIfNeeded()   //如果父节点不存在,这创建
        .withMode(CreateMode.EPHEMERAL)  //创建节点类型为临时节点
        .withACL(Ids.OPEN_ACL_UNSAFE)
        .forPath("/Spider/"+ip);
}

打印结果:

注意:

由于建立的是临时节点,所以默认40秒后,这个值会消失。临时节点的这个特性可以用于监控一些程序的运行状态。

时间: 2024-10-17 11:21:04

Zookeeper分布式安装配置的相关文章

zookeeper分布式安装

今天研究了下zookeeper,先跟大家分项下部署过程~~相对于hadoop其他软件来说,zookeeper的安装还是很简单的 环境说明: 虚拟机3台 IP地址                   hostname 192.168.192.136         namenode 192.168.192.137         datanode1 192.168.192.138         datanode2 zookeeper-3.4.6.tar 准备. 在每个虚拟机上配置host:   

HBase基础和伪分布式安装配置

一.HBase(NoSQL)的数据模型 1.1 表(table),是存储管理数据的. 1.2 行键(row key),类似于MySQL中的主键,行键是HBase表天然自带的,创建表时不需要指定 1.3 列族(column family),列的集合. 一张表中有多个行健,一个行健读取出来的是一条记录,列族和MySQL中的列差不多,但是它是列的集合 HBase中列族是需要在定义表时指定的,列是在插入记录时动态增加的. HBase表中的数据存储在本地磁盘上的时候,每个列族单独一个作为文件存储. 上图表

Zookeeper的安装配置及基本开发

一.简介 Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效.功能稳定的系统提供给用户. ZooKeeper包含一个简单的原语集,[1]提供Java和C的接口. ZooKeeper代码版本中,提供了分布式独享锁.选举.队列的接口,代码在zookeeper-3.4.3\src\recipes.其中分布锁和

Hadoop完全分布式安装配置完整过程

一. 硬件.软件准备 1. 硬件设备 为了方便学习Hadoop,我采用了云服务器来配置Hadoop集群.集群使用三个节点,一个阿里云节点.一个腾讯云节点.一个华为云节点,其中阿里云和腾讯云都是通过使用学生优惠渠道购买了一年的云服务,华为云使用免费7天或15天的云服务器.我决定使用腾讯云节点作为Master节点,阿里云节点和华为云节点作为Slave节点.集群基本结构如下图: 云服务器配置信息如下: 集群网络环境: 分别在每台机器上创建了用户hadoop,并且全部禁用了防火墙. 2. 软件 由于Ha

HDFS分布式安装配置笔记

1.准备三台虚拟机centos6.5 192.168.20.171 node1 NameNode节点centos6.5 192.168.20.172 node2 DataNode节点.SecondaryNameNode(必须和NameNode不在一台机器上)centos6.5 192.168.20.173 node3 DataNode节点由于Hadoop是由java开发的,所以请大家一开始就把jdk装好,务必关闭防火墙service iptables stop. 2.分别修改三台虚拟机主机名vi

伪分布式安装Hadoop + zookeeper + hbase安装配置

一.  安装JDK,配置环境JAVA环境变量 exportJAVA_HOME=/home/jdk1.6.0_27 exportJRE_HOME=/home/jdk1.6.0_27/jre exportANT_HOME=/home/apache-ant-1.8.2 export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 二.  安装Hadoop-1.0.3 1.     下载hadoop文件,地址为:http://hadoop.apac

Zookeeper 及其安装配置和启动

Zookeeper 为分布式系统提供一次性的服务,管理和协调分布式系统的工作,保证系统的高有效性.为什么需要它?因为分布式系统很容易出错,特别是在处理竞争和死锁的过程中. 提供的功能包括:配置维护.名字服务.分布式同步.组服务等. Client就是分布式系统中的节点,他们可以在ZooKeeper中设置监控,如果ZooKeeper中的目录节点存储的数据修改了,就会通知client. 设计目标: 简单 可复制 为什么叫做zookeeper?因为分布式系统就像一个动物园... 例子: 搜索引擎服务器集

zookeeper 的安装配置及简单使用

===> Zookeeper 是什么? => ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件. => ZooKeeper包含一个简单的原语集,提供Java和C的接口. => ZooKeeper代码版本中,提供了分布式独享锁.选举.队列的接口,代码在zookeeper-3.4.3\src\recipes.其中分布锁和队列有Java和C两个版本,选举只有Java版本 ===> Z

Hadoop2.6.0伪分布式安装配置

首先安装JDK,从Oracle官网下载 在 /usr/目录下mkdir java创建一个java目录 将jdk-7u72-linux-x64.rpm 放入java目录下 执行 rpm –ivh jdk-7u72-linux-x64.rpm 再从Apache官网下载 在 /usr/目录下 mkdir hadoop 创建一个hadoop目录 将hadoop-2.6.0.tar.gz 放入hadoop目录下 执行 tar –zxvf hadoop-2.6.0.tar.gz 接下来配置环境变量 vim