zoukankan      html  css  js  c++  java
  • Hbase记录-Hbase基础概念

    HBase是什么?

    HBase是建立在Hadoop文件系统之上的分布式面向列的数据库。它是一个开源项目,是横向扩展的。

    HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。

    它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。

    人们可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。

    HBase 和 HDFS

    HDFSHBase
    HDFS是适于存储大容量文件的分布式文件系统。 HBase是建立在HDFS之上的数据库。
    HDFS不支持快速单独记录查找。 HBase提供在较大的表快速查找
    它提供了高延迟批量处理;没有批处理概念。 它提供了数十亿条记录低延迟访问单个行记录(随机存取)。
    它提供的数据只能顺序访问。 HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。

    HBase的存储机制

    HBase是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。表中的每个单元格值都具有时间戳。总之,在一个HBase:

    • 表是行的集合。
    • 行是列族的集合。
    • 列族是列的集合。
    • 列是键值对的集合。

    下面给出的表中是HBase模式的一个例子。

    RowideColumn FamilyColumn FamilyColumn FamilyColumn Family
     col1col2col3col1col2col3col1col2col3col1col2col3
    1                        
    2                        
    3                        

    面向列和面向行

    面向列的数据库是存储数据表作为数据列的部分,而不是作为行数据。总之它们拥有列族。

    行式数据库列式数据库
    它适用于联机事务处理(OLTP)。 它适用于在线分析处理(OLAP)。
    这样的数据库被设计为小数目的行和列。 面向列的数据库设计的巨大表。

    下图显示了列族在面向列的数据库:

    Table

    HBase 和 RDBMS

    HBaseRDBMS
    HBase无模式,它不具有固定列模式的概念;仅定义列族。 RDBMS有它的模式,描述表的整体结构的约束。
    它专门创建为宽表。 HBase是横向扩展。 这些都是细而专为小表。很难形成规模。
    没有任何事务存在于HBase。 RDBMS是事务性的。
    它反规范化的数据。 它具有规范化的数据。
    它用于半结构以及结构化数据是非常好的。 用于结构化数据非常好。

    Base的特点

    • HBase线性可扩展。
    • 它具有自动故障支持。
    • 它提供了一致的读取和写入。
    • 它集成了Hadoop,作为源和目的地。
    • 客户端方便的Java API。
    • 它提供了跨集群数据复制。

    在哪里可以使用HBase?

    • Apache HBase曾经是随机,实时的读/写访问大数据。
    • 它承载在集群普通硬件的顶端是非常大的表。
    • Apache HBase是此前谷歌Bigtable模拟非关系型数据库。 Bigtable对谷歌文件系统操作,同样类似Apache HBase工作在Hadoop HDFS的顶部。

    HBase的应用

    • 它是用来当有需要写重的应用程序。
    • HBase使用于当我们需要提供快速随机访问的数据。
    • 很多公司,如Facebook,Twitter,雅虎,和Adobe内部都在使用HBase。

    在HBase中,表被分割成区域,并由区域服务器提供服务。区域被列族垂直分为“Stores”。Stores被保存在HDFS文件。下面显示的是HBase的结构。

    注意:术语“store”是用于区域来解释存储结构。

    HBase Architecture

    HBase有三个主要组成部分:客户端库,主服务器和区域服务器。区域服务器可以按要求添加或删除。

    主服务器

    主服务器是 -

    • 分配区域给区域服务器并在Apache ZooKeeper的帮助下完成这个任务。
    • 处理跨区域的服务器区域的负载均衡。它卸载繁忙的服务器和转移区域较少占用的服务器。
    • 通过判定负载均衡以维护集群的状态。
    • 负责模式变化和其他元数据操作,如创建表和列。

    区域

    区域只不过是表被拆分,并分布在区域服务器。

    区域服务器

    区域服务器拥有区域如下 -

    • 与客户端进行通信并处理数据相关的操作。
    • 句柄读写的所有地区的请求。
    • 由以下的区域大小的阈值决定的区域的大小。

    需要深入探讨区域服务器:包含区域和存储,如下图所示:

    Regional Server

    存储包含内存存储和HFiles。memstore就像一个高速缓存。在这里开始进入了HBase存储。数据被传送并保存在Hfiles作为块并且memstore刷新。

    Zookeeper

    • Zookeeper管理是一个开源项目,提供服务,如维护配置信息,命名,提供分布式同步等
    • Zookeeper代表不同区域的服务器短暂节点。主服务器使用这些节点来发现可用的服务器。
    • 除了可用性,该节点也用于追踪服务器故障或网络分区。
    • 客户端通过与zookeeper区域服务器进行通信。
    • 在模拟和独立模式,HBase由zookeeper来管理。
  • 相关阅读:
    C#开发微信门户及应用(7)-微信多客服功能及开发集成
    C#开发微信门户及应用(6)--微信门户菜单的管理操作
    使用Json.NET来序列化所需的数据
    Winform开发框架里面使用事务操作的原理及介绍
    C#开发微信门户及应用(5)--用户分组信息管理
    C#开发微信门户及应用(4)--关注用户列表及详细信息管理
    基于MVC4+EasyUI的Web开发框架经验总结(3)- 使用Json实体类构建菜单数据
    基于MVC4+EasyUI的Web开发框架经验总结(2)- 使用EasyUI的树控件构建Web界面
    基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录
    如何在应用系统中实现数据权限的控制功能
  • 原文地址:https://www.cnblogs.com/xinfang520/p/7716886.html
Copyright © 2011-2022 走看看