zookeeper集群

Zookeeper的工作原理

你说的曾经没有我的故事 提交于 2020-02-26 03:00:34
1.ZooKeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户 来源: oschina 链接: https://my.oschina.net/u/3626804/blog/3158612

部署ZooKeeper

自闭症网瘾萝莉.ら 提交于 2020-02-26 02:40:25
一、引言 ZooKeeper简介 顾名思义 zookeeper 就是动物园管理员,他是用来管 hadoop(大象)、Hive(蜜蜂)、pig(小 猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到了 zookeeper;Zookeeper: 是一个分布式的、开源的程序协调服务,是 hadoop 项目下的一个子项目。 ZooKeeper一般部署奇数个节点,部署方法包主要含安装JDK、修改配置文件、启动测试三个步骤 二、安装JDK 下载安装JDK。因为 ZooKeeper 服务器在 JVM 上运行。 环境变量 vim /etc/profile export ZOOKEEPER_HOME=/usr/local/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin 三、修改ZooKeeper配置文件 首先配置master,slave1,slave2之间的免密(ssh-keygen -t rsa)和各个机器的/etc/hosts文件 修改ZooKeeper的配置文件,步骤如下: 进入解压目录下,把conf目录下的zoo_sample.cfg 复制成zoo.cfg文件。 cd /opt/app/apache-zookeeper-3.5.5-bin/conf cp zoo.cfg.dynamic.next zoo

zookeeper+kafka环境搭建

依然范特西╮ 提交于 2020-02-25 15:50:01
一、JDK安装配置 1、新建文件夹 # mkdir /usr/local/java 2、上传jdk到文件夹中,解压(官网下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,以jdk-8u111-linux-x64.tar.gz为例 ) # tar -xzvf jdk-8u111-linux-x64.tar.gz 3、配置jdk环境变量 # vi ~/.bashrc #java export JAVA_HOME=/usr/local/java/jdk1.8.0_111 export JAVA_BIN=$JAVA_HOME/bin export JAVA_LIB=$JAVA_HOME/lib export CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar export PATH=$JAVA_BIN:$PATH 4、环境变量配置生效 # source ~/.bashrc 5、检查jdk版本 # java -version 6、公司安装 # yum install jdk7u51 二、zookeeper搭建 1、zk安装 (1)解压:这里假定以root作为用户名进行安装,将zookeeper-3.4.6.tar.gz放入

kafka-console-consumer 参数 --zookeeper 不可用 与 The coordinator is not available的问题

本秂侑毒 提交于 2020-02-25 00:42:42
事情起因是这样的。我们环境需要用到kafka,现在都是使用容器化的部署,大佬就找了个github星最多docker-kafka连接给我,建议我用这个来搭建。我们开发环境已经有了zk,所以就让我用kafka连上面的zk。kafka搭起来了,生产者可以生产。但是消费者始终是消费不到消息。使用tcpdump抓包也可以确认,消息已经发送到kafka。但是消费者始终无法消费。猜想是不是那个步骤执行错了。所以就按照 https://github.com/wurstmeister/kafka-docker 的官方文档一步一步来做。 wurstmeister docker-kafka tutorial: http://wurstmeister.github.io/kafka-docker/ 发现里面有一步骤怎么也走不通: $KAFKA_HOME/bin/kafka-console-consumer.sh --topic=topic --zookeeper=$ZK 本地查看脚本的帮助,也没有这个参数,类似功能的是 --bootstrap-server 的参数: D:\Programs\kafka_2.11-2.4.0\bin\windows>kafka-console-consumer.bat --help This tool helps to read data from Kafka topics

Hadoop HA架构搭建

醉酒当歌 提交于 2020-02-23 19:04:06
Hadoop HA架构搭建 共七台服务器,节点角色分配如下: 192.168.133.21 (BFLN-01):namenode zookeeper journalnade DFSZKFailoverController 192.168.133.23 (BFLN-02):namenode resourcemanager zookeeper journalnade DFSZKFailoverController 192.168.133.24 (BFLN-03):resourcemanager zookeeper journalnade DFSZKFailoverController 192.168.133.25 (BFLN-04):datanode,nodemanager 192.168.133.26 (BFLN-05):datanode,nodemanager 192.168.133.27 (BFLN-06):datanode,nodemanager 192.168.133.28 (BFLN-07):datanode,nodemanager HA优势:双namedata和resourcemanager能防止hadoop核心组件单点故障导致集群不可用情况的发生。 配置步骤: 环境配置 1、集群间需实现时间同步: ntpdate 2、配置7台服务器的主机名解析/etc/hosts

Kafka安装

两盒软妹~` 提交于 2020-02-23 09:01:05
Kafka基于Zookeeper管理分布式节点,Zookeeper是基于Java开发,所以,安装Kafka就必须安装JDK和Zookeeper。 一、安装JDK 1、新建一个存放jdk的目录,并解压jdk到该目录下; 如下图所示,jdk存放目录为/home/coshaho/jdk,版本为jdk1.7.0_79。 2、编辑用户环境变量文件~/.bashrc,添加jdk环境变量; 3、执行source ~/.bashrc加载环境变量。 二、安装Zookeeper 1、 新建Zookeeper存放目录,并解压Zookeeper到该目录; 2、在Zookeeper目录下新建zkdata文件夹以及zkdatalog文件夹; 3、进入/home/coshaho/zookeeper/zookeeper-3.4.6/conf目录配置zoo.cfg文件; (1) dataDir为zk快照日志存储路径; (2) dataLogDir为zk事务日志,这个目录不配置的话,事务日志会打印到dataDir中,影响性能; (3) clientPort为zk端口; (4) server.数字配置节点ip端口信息,第一个端口为master,slaver通信端口,第二个端口为leader选举端口。 4、进入zk快照文件目录创建节点标识; 这里myid文件中的内容和zoo.cfg中的节点标识数字一致。 5

zookeeper日志各类日志简介

こ雲淡風輕ζ 提交于 2020-02-22 05:09:22
zookeeper服务器会产生三类日志:事务日志、快照日志和log4j日志。 在zookeeper默认配置文件zoo.cfg(可以修改文件名)中有一个配置项dataDir,该配置项用于配置zookeeper快照日志和事务日志的存储地址。在官方提供的默认参考配置文件zoo_sample.cfg中,只有dataDir配置项。其实在实际应用中,还可以为事务日志专门配置存储地址,配置项名称为dataLogDir,在zoo_sample.cfg中并未体现出来。在没有dataLogDir配置项的时候,zookeeper默认将事务日志文件和快照日志文件都存储在dataDir对应的目录下。建议将事务日志(dataLogDir)与快照日志(dataLog)单独配置,因为当zookeeper集群进行频繁的数据读写操作是,会产生大量的事务日志信息,将两类日志分开存储会提高系统性能,而且,可以允许将两类日志存在在不同的存储介质上,减少磁盘压力。log4j用于记录zookeeper集群服务器运行日志,该日志的配置地址在conf/目录下的log4j.properties文件中,该文件中有一个配置项为“zookeeper.log.dir=.”,表示log4j日志文件在与执行程序(zkServer.sh)在同一目录下。当执行zkServer.sh 时,在该文件夹下会产生zookeeper.out日志文件

分布式服务框架 Zookeeper — 管理分布式环境中的数据

∥☆過路亽.° 提交于 2020-02-22 04:53:34
Zookeeper 安装和配置详解 本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/ 来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两个方面介绍 Zookeeper 的安装和配置。 单机模式 单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目录如:/home/zookeeper-3.2.2 下,Zookeeper 的启动脚本在 bin 目录下,Linux 下的启动脚本是 zkServer.sh,在 3.2.2 这个版本 Zookeeper 没有提供 windows 下的启动脚本,所以要想在 windows 下启动 Zookeeper 要自己手工写一个,如清单 1 所示: 清单 1. Windows 下 Zookeeper 启动脚本 setlocal set ZOOCFGDIR=%~dp0%..\conf set ZOO_LOG_DIR=%~dp0%.. set ZOO_LOG4J_PROP=INFO,CONSOLE set CLASSPATH=%ZOOCFGDIR% set CLASSPATH=%~dp0..\*;%~dp0..\lib\*;%CLASSPATH% set CLASSPATH=%~dp0..\build

Zookeeper选举机制及Zookeeper安装台数规划

自古美人都是妖i 提交于 2020-02-21 18:55:11
选举机制(2n+1) 在实际生产中根据集群规模安装zk台数经验如下: 10-3 20-5 100-11(左为集群规模,右为zk规模) 1)半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器。 2)Zookeeper虽然在配置文件中并没有指定Master和Slave。但是Zookeeper工作时,是有一个节点为Leader,其他则为Follower,Leader是通过内部的选举机制临时产生的。 3)以一个简单的例子来说明整个选举的过程。 假设有五台服务器组成的Zookeeper集群,它们的id从1-5,同时它们都是最新启动的,也就是没有历史数据,在存放数据量这一点上,都是一样的。假设这些服务器依序启动,来看看会发生什么,如图所示。 (1)服务器1启动,此时只有它一台服务器启动了,它发出去的报文没有任何响应,所以它的选举状态一直是LOOKING状态。 (2)服务器2启动,它与最开始启动的服务器1进行通信,互相交换自己的选举结果,由于两者都没有历史数据,所以id值较大的服务器2胜出,但是由于没有达到超过半数以上的服务器都同意选举它(这个例子中的半数以上是3),所以服务器1、2还是继续保持LOOKING状态。 (3)服务器3启动,根据前面的理论分析,服务器3成为服务器1、2、3中的老大,而与上面不同的是,此时有三台服务器选举了它

Zookeeper修改运行日志zookeeper.out输出路径

99封情书 提交于 2020-02-20 10:18:47
前言 Zookeeper中运行日志 zookeeper.out 文件的输出路径默认为启动脚本的当前路径,导致Zookeeper集群启动失败时总是不记得输出日志在哪儿,不便于查找错误原因,因此很有必要设置固定路径来保存运行日志 在本次实验之前已经将 dataDir 和 dataLogDir 分别设置为 $ZOOKEEPER_HOME/zkData 和 $ZOOKEEPER_HOME/logs/transaction ,都是在 $ZOOKEEPER_HOME/conf/zoo.cfg 中配置。值得注意的是在此 zoo.cfg 文件中配置必须使用 绝对路径 ,不能使用环境变量 $ZOOKEEPER_HOME ,此处是为了描述方便才使用此变量名 本次实验将把运行日志文件 zookeeper.out 输出路径指定为 $ZOOKEEPER_HOME/logs/runtime/ 路径下 简单配置 修改 $ZOOKEEPER_HOME/bin/zkEnv.sh 将 ZOO_LOG_DIR 设置成自定义路径,本次设置为 $ZOOBINDIR/../logs/runtime ,其中 ZOOBINDIR 变量是此脚本开头获取的Zookeeper的bin路径,我们直接以此来定位自己的日志路径即可。具体如下: # 修改前 54 if [ "x ${ZOO_LOG_DIR} " = "x" ] 55 then