zookeeper集群

ZooKeeper 学习笔记之扫盲

你说的曾经没有我的故事 提交于 2019-12-01 12:57:48
题外话:从字面上来看,ZooKeeper表示动物园管理员,而Hadoop生态系统中,许多项目的Logo都采用了动物,比如Hadoop采用了大象的形象,所以可以ZooKeeper就是对这些动物进行一些管理工作的。 对于单机环境进程内的协调方法,我们一般通过线程锁来协调对共享数据的访问以保证状态的一致性。 但是分布式环境如何进行协调呢?于是,Google创造了Chubby,而ZooKeeper则是对于Chubby的一个开源实现。 ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源 协调服务 ,它提供了一项基本服务: 分布式锁服务 。由于ZooKeeper的开源特性,后来我们的开发者在分布式锁的基础上,摸索了出了其他的使用方法: 配置维护、组服务、分布式消息队列、分布式通知/协调 等。它被设计为易于编程,使用文件系统目录树作为数据模型。 ZooKeeper集群模式典型架构 Zookeeper服务自身组成一个集群(2n+1个服务允许n个失效)。Zookeeper服务有两个角色,一个是leader,负责写服务和数据同步,剩下的是follower,提供读服务,leader失效后会在follower中重新选举新的leader。 保证 顺序一致性:按照客户端发送请求的顺序更新数据。 原子性:更新要么成功,要么失败,不会出现部分更新。 单一性 :无论客户端连接哪个server

zookeeper伪集群搭建

别说谁变了你拦得住时间么 提交于 2019-12-01 12:54:58
zookeeper伪集群搭建 1. 下载zookeeper: https://zookeeper.apache.org/ 2. 解压: tar -zxvf zookeeper-3.4.14.tar.gz 3. 进入zookeeper根目录, 创建文件夹zkData和zkLogData, 用于存储快照和日志 4. 进入zookeeper中conf目录中, 里面的 zoo_sample.cfg 是官方示例配置, 复制zoo_sample.cfg文件, 并起名为zoo.cfg, 配置如下: # 端口 默认是2181 伪集群这里的端口要不一致 clientPort=12183 # 集群配置 server.num 中的num需要在zkData中进行配置myid文件, 将num写入 server.11=192.168.1.138:12888:13888 server.22=192.168.1.138:12999:13999 server.33=192.168.1.138:12777:13777 5.进入zkData目录, 分别创建myid文件 echo "11" > myid > 注意: 使用伪集群,     1. 将解压好的zookeeper-3.4.14复制两遍:zk1和zk2     2. 修改zoo.cfg中的clientPort,dataDir和dataLogDir配置     3.

Kafka单机安装

烈酒焚心 提交于 2019-12-01 11:42:33
Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: •Kafka将消息以topic为单位进行归纳。 •将向Kafka topic发布消息的程序成为producers. •将预订topics并消费消息的程序成为consumer. •Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker. producers通过网络将消息发送到Kafka集群,集群向消费者提供消息,如下图所示: 客户端和服务端通过TCP协议通信。Kafka提供了Java客户端,并且对多种语言都提供了支持。 说明: 操作系统:CentOS 7.x 64位 Kafka版本:kafka_2.11-0.8.2.1 实现目的: 单机安装配置kafka 具体操作: 一、关闭防火墙 systemctl status firewalld.service 永久关闭防火墙 systemctl stop firewalld.service 禁止开机启动防火墙 systemctl disable firewalld.service 关闭SELINUX vi

[置顶] Java集群优化——dubbo+zookeeper构建高可用分布式集群

旧街凉风 提交于 2019-12-01 11:39:48
们讨论过Nginx+tomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器已经不能满足我们的需求,这时,我们要考虑另外一种,我们熟悉的内容,就是分布式,而当下流行的Dubbo框架,不容我们忽视,这里,咱们一起来探讨一下这个框架的使用。 一,背景 以前我们需要远程调用他人的接口,我们是这么做的: 我们遇到的问题: (1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。 此时需要一个服务注册中心,动态的注册和发现服务,使服务的位置透明。 并通过在消费方获取服务提供方地址列表,实现软负载均衡和Failover,降低对F5硬件负载均衡器的依赖,也能减少部分成本。 (2) 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。 这时,需要自动画出应用间的依赖关系图,以帮助架构师理清理关系。 (3) 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器? 为了解决这些问题,第一步,要将服务现在每天的调用量,响应时间,都统计出来,作为容量规划的参考指标。 其次,要可以动态调整权重,在线上,将某台机器的权重一直加大,并在加大的过程中记录响应时间的变化,直到响应时间到达阀值,记录此时的访问量

快速搭建hadoop+hbase分布式集群

家住魔仙堡 提交于 2019-12-01 11:34:48
hadoop集群部署 1. 准备三台机器,如`10.8.177.23`,`10.8.177.24`,`10.8.177.25` 2. 修改主机名称,配置`hosts`文件(root用户下操作): Shell代码 # 每台机器执行,我这里hd开头,后边的数字与机器ip的最后一个组一致 hostnamectl set-hostname hd-23 hostnamectl set-hostname hd-23 --static # 修改hosts文件, vi /etc/hosts #加入路由配置 10.8.177.23 hd-23 10.8.177.24 hd-24 10.8.177.25 hd-25 3. 每台机器上创建一个用户,如hadoop: Shell代码 useradd -d /home/hadoop -m hadoop # 最好创建一个用户,不要直接使用root进行操作 4. 设置免密登录(==hadoop用户,下同==) > 只需要设置master对于其他两台机器进行免密登录即可 Shell代码 # 1、 在Master机器上的主目录中生成ssh公钥 ssh-keygen -t rsa # 2、 在其余机器上主目录中创建.ssh目录(执行上边的命令也可以) # 3、 将Master的公钥发送给其余两台服务器(需要输入免密) scp id_rsa.pub hadoop@hd

[转帖]HBase详解(很全面)

拈花ヽ惹草 提交于 2019-12-01 07:40:44
HBase详解(很全面) very long story 简单看了一遍 很多不明白的地方.. 2018-06-08 16:12:32 卢子墨 阅读数 34857 更多 分类专栏: HBase 【转自:http://jiajun.iteye.com/blog/899632】 一、 简介 history started by chad walters and jim 2006.11 G release paper on BigTable 2007.2 inital HBase prototype created as Hadoop contrib 2007.10 First useable Hbase 2008.1 Hadoop become Apache top-level project and Hbase becomes subproject 2008.10 Hbase 0.18,0.19 released hbase是bigtable的开源山寨版本。是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。 它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。 与hadoop一样

HBase

半城伤御伤魂 提交于 2019-12-01 07:30:05
1. HBase基本介绍 a. 介绍 Hbase是一个nosql的列式存储的数据库。实际来源于Google发表的论文bigtable。构建在hdfs基础之上。 提供高可用,高性能,列储存,可伸缩, 实时读写 nosql的数据库系统。 按照key-value的形式进行数据的存储: rowkey (行键),通过行键完成数据的检索。 Hbase仅支持简单的事务(行级操作),不支持复杂的操作(不能join等操作)。 Hbase的数据类型单一:byte[] 和hadoop一样,Hbase依靠横向拓展,增加服务器,提高计算能力。 b. Hbase的特点 大:数据量大 面向列:数据按照列式的方式进行储存。 稀疏:habase中null的数据不会占用存储空间 2. Hbase和hadoop的关系 a. hdfs 为分布式存储提供文件系统 针对存储大尺寸的文件进行优化,不需要对HDFS上的文件进行随机读写 直接使用文件 数据模型不灵活 使用文件系统和处理框架 优化一次写入,多次读取的方式 b. Hbase 提供列式存储 可以对数据进行随机读取按照key-value形式操作数据 支持mr,依赖hdfs 优化多次读或者写 总结 :紧耦合关系,Hbase依赖于hdfs 3. RDBMS和Hbase对比 Hbase: 结构: 数据库以region的形式存在 支持hdfs 使用WAL存储日志(写前日志)

Kafka

半腔热情 提交于 2019-12-01 05:06:05
Kafka 入门 什么是 Kafka kafka最初是 LinkedIn 的一个内部基础设施系统。最初开发的起因是, LinkedIn虽然有了数据库和其他系统可以用来存储数据,但是缺乏一个可以帮助处理持续数据流的组件。所以在设计理念上,开发者不想只是开发一个能够存储数据的系统,如关系数据库、Nosql 数据库、搜索引擎等等,更希望把数据看成一个持续变化和不断增长的流,并基于这样的想法构建出一个数据系统,一个数据架构。 Kafka外在表现很像消息系统,允许发布和订阅消息流,但是它和传统的消息系统有很大的差异, 首先,Kafka 是个现代分布式系统,以集群的方式运行,可以自由伸缩。 其次,Kafka 可以按照要求存储数据,保存多久都可以, 第三,流式处理将数据处理的层次提示到了新高度,消息系统只会传递数据,Kafka 的流式处理能力可以让我们用很少的代码就能动态地处理派生流和数据集。所以 Kafka 不仅仅是个消息中间件。 Kafka不仅仅是一个消息中间件,同时它是一个流平台,这个平台上可以发布和订阅数据流(Kafka 的流,有一个单独的包 Stream 的处理),并把他们保存起来,进行处理,这个是 Kafka作者的设计理念。 大数据领域,Kafka 还可以看成实时版的 Hadoop,但是还是有些区别,Hadoop 可以存储和定期处理大量的数据文件,往往以 TB 计数,而

window系统下搭建zookeeper集群

牧云@^-^@ 提交于 2019-12-01 02:06:37
1、官网下载zookeeper https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 2、配置zookeeper 一、解压zookeeper到目录中,保证目录名字中不能包含空格。 我的文件名为:C:\software\zookeeper\zookeeper-3.4.12 进入conf文件目录,找到zoo_sample.cfg文件,复制一份命名为zoo.cfg。 修改zoo.cfg文件。具体如下: # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/tmp

分布式网站架构后续:zookeeper技术浅析

梦想的初衷 提交于 2019-12-01 00:24:37
 Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多。今天我想谈谈zookeeper,本文不谈如何使用zookeeper,而是zookeeper到底有哪些实际的运用,哪些类型的应用能发挥zookeeper的优势,最后谈谈zookeeper对分布式网站架构能产生怎样的作用。   Zookeeper是针对大型分布式系统的高可靠的协调系统。由这个定义我们知道zookeeper是个协调系统,作用的对象是分布式系统。为什么分布式系统需要一个协调系统了?理由如下:   开发分布式系统是件很困难的事情,其中的困难主要体现在分布式系统的“部分失败”。“部分失败”是指信息在网络的两个节点之间传送时候,如果网络出了故障,发送者无法知道接收者是否收到了这个信息,而且这种故障的原因很复杂,接收者可能在出现网络错误之前已经收到了信息,也可能没有收到,又或接收者的进程死掉了。发送者能够获得真实情况的唯一办法就是重新连接到接收者,询问接收者错误的原因,这就是分布式系统开发里的“部分失败”问题。   Zookeeper就是解决分布式系统“部分失败”的框架。Zookeeper不是让分布式系统避免“部分失败”问题,而是让分布式系统当碰到部分失败时候,可以正确的处理此类的问题,让分布式系统能正常的运行。