【Hadoop生产调优】之异构存储策略

【Zookeeper】之简介

一、概述


对于Zookeeper的一些理解:

  • Zookeeper是一个分布式的,为分布式框架提供服务的框架;

  • Zookeeper从设计模式的角度看,使用观察者模式,是一套实现了文件系统+通知机制的框架;服务提供者注册到Zookeeper中,以文件的形式存储,服务消费者订阅服务,当服务发生变更时,Zookeeper将消息及时通知给消费者。

二、特点


  1. Zookeeper拥有一个Leader,多个Fellower;

  2. 集群中只要有半数以上节点存活,Zookeeper就能正常工作,所以适合安装奇数台服务器;

  3. 全局数据一致:每台服务器都保存相同的数据,客户端连接哪个Server,都是一样的;

  4. 请求顺序执行:客户端的请求按顺序执行;

  5. 数据更新原子性:要么成功,要么失败;

  6. 实时性:客户端对于集群的更新,客户端能在极短时间内获取最新的数据;

三、数据结构


与Unix、Hadoop类似,在文件存储上,Zookeeper采用的是树形结构,树上的每一个节点用znode表示,大小只有1M,也就是说Zookeeper无法存储大文件,只适合存储一些小文件

四、应用场景


  • 统一命名服务
   /
     /service
        /www.baidu.com
          /192.168.0.1
          /192.168.0.1
          /192.168.0.1

Zookeeper存储的数据是树形结构,如上所示,我们会给关键服务起一个名称,比如www.baidu.com,然后在这个服务的节点下面, 我们可以继续挂载实际提供服务的IP地址。

这就是统一命名服务,通过名称实现抽象的服务和具体实现之间的解耦。

  • 统一配置管理

在Hadoop和Kafka等分布式框架环境下,不同节点间的配置文件是需要保持一致的,以往我们通过编写shell脚本的方式,修改一处配置后,统一分发给集群的其它节点。

现在,我们可以将配置文件交给zookeeper管理,当配置文件发生变更是,zookeeper将自动给client发送提醒消息。

  • 统一集群管理

分布式环境中,需要实时掌握某些节点运行的状态信息,我们可以将状态信息实时写入zookeeper的节点中,这样客户端就可以订阅这个状态信息,做到实时监控。

  • 服务器节点动态上下线

服务器节点动态上下线属于应用层面的,实现原理依然是zookeeper的订阅发现机制。

  • 软负载均衡

在上面的案例中,在www.baidu.com这个节点下,我们可能有很多服务IP,那我们不仅可以只记录服务IP,还可以将某些统计数据加入其中,比如当前的访问量,这样,我们就可以通过判断当前的访问量,实现软负载均衡。

你可能感兴趣的:(大数据)