生产实习Day8 ---- Zookeeper&Hbase介绍

ZooKeeper:分布式系统的心脏

引言

在当今的分布式计算环境中,协调和管理服务是一项关键任务。ZooKeeper,作为一个开源的分布式协调服务,已经成为许多分布式系统中的核心组件。本文将带你深入了解ZooKeeper的功能、架构以及它在分布式系统中的作用。

什么是ZooKeeper?

ZooKeeper是一个分布式服务框架,由雅虎开源,现在由Apache软件基金会维护。它提供了一系列简单的原语,用于构建分布式应用,并确保这些应用在大规模分布式系统中的协调一致性。

ZooKeeper的核心功能

1. 数据模型和层次命名空间

ZooKeeper有一个类似于文件系统的数据模型,以树形结构组织数据。这棵树中的每个节点被称为“znode”,每个znode可以存储数据,并且有子节点。

2. 状态同步

ZooKeeper确保所有客户端看到的服务视图是一致的。当发生任何变化(如节点创建、删除或数据更新)时,ZooKeeper会同步这些变化到所有客户端。

3. 原子操作

ZooKeeper支持一系列原子操作,如创建节点、删除节点、设置数据等。这些操作确保了在并发环境中的数据一致性。

4. 顺序访问

ZooKeeper为每个更新操作分配一个全局唯一的递增编号,这允许客户端通过这个编号来顺序访问数据。

5. 高可用性

ZooKeeper设计为高可用性系统。它可以在集群中运行,即使部分服务器发生故障,整个系统仍然可以继续工作。

ZooKeeper的架构

ZooKeeper运行在服务器集群上,这些服务器被称为“ZooKeeper集群”。集群中的服务器分为以下几种角色:

1. Leader

Leader负责处理所有写操作请求。它还负责同步集群中所有服务器的状态。

2. Follower

Follower负责处理读操作请求,并在写操作时转发给Leader。它们还参与Leader选举过程。

3. Observer

Observer是可选的角色,它们只处理读操作请求,不参与写操作的同步过程,也不参与Leader选举。它们用于扩展集群的读能力。

ZooKeeper命令行操作

服务端常用命令

  • 启动 ZooKeeper 服务:

     ./zkServer.sh start
    
  • 查看 ZooKeeper 服务状态:

    ./zkServer.sh status
    
  • 停止 ZooKeeper 服务:

     ./zkServer.sh stop 
    
  • 重启 ZooKeeper 服务:

    ./zkServer.sh restart 
    

Zookeeper客户端常用命令

  • 连接ZooKeeper服务端:

    ./zkCli.sh –server ip:port     
    
  • 断开连接:

    quit
    
  • 显示指定目录下节点

    ls 目录
    
  • 创建持久化节点:

    create  /节点path     # 创建持久化节点但不设置值
    create  /节点path  value   # 创建持久化节点并且设置值
    
  • 获取节点值:

    get  /节点path
    
  • 设置节点值:

    set  /节点path  value
    
  • 删除单个节点:

    delete  /节点path
    
  • 删除包含子节点的节点:

    deleteall  /节点path
    
  • 创建临时节点:

    create -e /节点path value
    
  • 创建顺序节点:

    create -s /节点path value
    
  • 查询节点详细信息:

    ls -s /节点path
    

HBase:面向列的分布式数据库

引言

在当今的大数据时代,处理海量数据的需求日益增长。HBase,作为一个开源的、面向列的分布式数据库,已经成为大数据存储和处理的重要工具。本文将带你深入了解HBase的特点、架构以及它在实际应用中的作用。

什么是HBase?

HBase是基于Google的Bigtable模型构建的,是Apache Hadoop生态系统的一部分。它是一个分布式、可扩展、支持列存储的数据库,适用于非结构化和半结构化数据的大规模存储。

HBase的核心特点

1. 面向列的存储

与传统的行存储数据库不同,HBase采用面向列的存储方式。这意味着每个列族(column family)都存储在不同的文件中,可以独立访问,提高了读取效率。

2. 可扩展性

HBase可以轻松地水平扩展,只需添加更多的服务器到集群中即可。这使得HBase能够处理PB级别的数据。

3. 稳定性和可靠性

HBase构建在Hadoop和HDFS之上,继承了Hadoop的高可用性和可靠性。

4. 实时读写

HBase支持实时读写操作,适用于需要快速响应的应用场景。

5. 灵活的数据模型

HBase的数据模型非常灵活,可以存储任意类型的数据,包括结构化、半结构化和非结构化数据。

HBase的架构

HBase架构主要包括以下几个组件:

1. HMaster

HMaster负责管理集群中的RegionServer,如分配Region、负载均衡、元数据管理等。

2. RegionServer

RegionServer负责处理客户端的读写请求,并管理一组Region。每个Region包含一个表的一部分数据。

3. Region

Region是HBase表的水平分区,每个Region包含一个起始行键和一个终止行键之间的所有数据。

4. HDFS

HBase使用Hadoop分布式文件系统(HDFS)作为其底层存储系统,确保了数据的可靠性和高可用性。

HBase组件角色:

  • HMaster

功能:

1.监控 RegionServer

2.处理 RegionServer 故障转移

3.处理元数据的变更

4.处理region 的分配或移除

5.在空闲时间进行数据的负载均衡

6.通过 Zookeeper 发布自己的位置给客户端

  • HRegionServer

功能:

1.负责存储 HBase 的实际数据

2.处理分配给它的 Region

3.刷新缓存到 HDFS

4.维护WAL

5.执行压缩

6.负责处理 Region 分片

  • HFile

    这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。

  • Store

​ HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个Column Family列族(列簇)。

  • MemStore

    顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在 WAL中之后,RegsionServer 会在内存中存储键值对。

HBase部署与启动

(1)下载、解压缩,在/etc/profile全局配置文件中添加

export HBASE_HOME=/export/servers/hbase-2.4.5
export PATH=$PATH:$HBASE_HOME/bin

(2)配置hbase-env.sh

export JAVA_HOME=/export/servers/jdk1.8.0_161
export HBASE_MANAGES_ZK=false  # 使用外部的ZooKeeper

(3)配置hbase-site.xml

<configuration>
  <!-- hbase数据存放的目录,若用本地目录,必须带上file://,否则hbase启动不起来 -->
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://my2308-host:9000/hbase</value>
        </property>

        <!-- zk的位置 -->
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>localhost</value>
                <description>my2308-host:2181</description>
        </property>

<!--hbase.cluster.distributed表示是否分布式部署,指定为true-->
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>

        <!-- hbase主节点的位置 -->
        <property>
                <name>hbase.master</name>
                <value>my2308-host:60000</value>
        </property>
</configuration>

(3)拷贝zookeeper的conf/zoo.cfg到hbase的conf/下

(4)启动HBase

​ 执行start-hbase.sh脚本

注意:为了方便启动,可在/etc/profile中添加环境变量

export HBASE_HOME=/export/servers/hbase-2.4.5
export PATH=$PATH:$HBASE_HOME/bin

在这里插入图片描述

HBase对ZooKeeper的依赖

HBase依赖于ZooKeeper来实现其高可用性和分布式特性。没有ZooKeeper,HBase将无法有效地管理其分布式环境中的各种操作和状态变化。

总结

简而言之,ZooKeeper对于HBase来说是一个关键组件,它提供了分布式环境中的协调服务,确保了HBase集群的稳定性和一致性。两者共同工作,使得HBase成为一个可靠、可扩展的分布式数据库系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值