返回顶部
首页 > 资讯 > 数据库 >HBase入门修行基础篇
  • 857
分享到

HBase入门修行基础篇

2024-04-02 19:04:59 857人浏览 泡泡鱼
摘要

HBase入门修行基础篇 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigt

HBase入门修行基础篇

 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

一、Hbase获取查询条件结果的过程

HBase入门修行基础篇

1、两张特殊表:-ROOT- & .META.

    .META.   记录用户表的Region信息,同时,.META.也可以有多个region

    -ROOT-    记录.META.表的Region信息,但是,-ROOT-只有一个region

    ZooKeeper  中记录了-ROOT-表的location

2、客户端访问数据的流程:

    Client -> Zookeeper -> -ROOT- -> .META. -> 用户数据表

3、多次网络操作,不过client端有cache缓存

二、Hbase架构

HBase入门修行基础篇

 

组成部件说明

1、Client:

使用HBase rpc机制与HMaster和HRegionServer进行通信

Client与HMaster进行通信进行管理类操作

Client与HRegionServer进行数据读写类操作

2、Zookeeper:

Zookeeper Quorum存储-ROOT-表地址、HMaster地址

HRegionServer把自己以Ephedral方式注册到Zookeeper中,HMaster随时感知各个HRegionServer的健康状况

Zookeeper避免HMaster单点问题

3、HMaster:

HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master在运行,主要负责Table和Region的管理工作:

3.1 管理用户对表的增删改查操作

3.2 管理HRegionServer的负载均衡,调整Region分布

3.3 Region Split后,负责新Region的分布

3.4 在HRegionServer停机后,负责失效HRegionServer上Region迁移

4、HRegionServer:

HBase中最核心的模块,主要负责响应用户I/O请求,向hdfs文件系统中读写数据。

任何一项新技术并非救命稻草,一抹一擦立马药到病除的百宝箱,并非使用spring或者NoSQL的产品就神乎其神+五光十色,如果那样基本是扯淡。同类型产品中不管那种技术最终要达到的目的是一样的,通过新的技术手段你往往可能避讳了当前你所需要面对的问题,但过后新的问题又来了。也许回过头来看看还不如在原来的基础上多动动脑筋想想办法做些改良可以得到更高的回报。

传统数据库是以数据块来存储数据,简单来说,你的表字段越多,占用的数据空间就越多,那么查询有可能就要跨数据块,将会导致查询的速度变慢。在大型系统中一张表上百个字段,并且表中的数据上亿条这是完全是有可能的。因此会带来数据库查询的瓶颈。我们都知道一个常识数据库中表记录的多少对查询的性能有非常大的影响,此时你很有可能想到分表、分库的做法来分载数据库运算的压力,那么又会带来新的问题,例如:分布式事务、全局唯一ID的生成、跨数据库查询等,依旧会让你面对棘手的问题。如果打破这种按照行存储的模式,采用一种基于列存储的模式,对于大规模数据场景这样情况有可能发生一些好转。由于查询中的选择规则是通过列来定义的,因此整个数据库是自动索引化的。按列存储每个字段的数据聚集存储,可以动态增加,并且列为空就不存储数据,节省存储空间。每个字段的数据按照聚集存储,能大大减少读取的数据量,查询时指哪打哪,来的更直接。无需考虑分库、分表 Hbase将对存储的数据自动切分数据,并支持高并发读写操作,使得海量数据存储自动具有更强的扩展性。Java中的HashMap是Key/Value的结构,你也可以把HBase的数据结构看做是一个Key/Value的体系,话说HBase的区域由表名和行界定的。在HBase区域每一个"列族"都由一个名为HStore的对象管理。每个HStore由一个或多个MapFiles(Hadoop中的一个文件类型)组成。MapFiles的概念类似于Google的SSTable。 在Hbase里面有以下两个主要的概念,Row key 和 Column Family,其次是Cell qualifier和Timestamp tuple,Column family我们通常称之为“列族”,访问控制、磁盘和内存的使用统计都是在列族层面进行的。列族Column family是之前预先定义好的数据模型,每一个Column Family都可以根据“限定符”有多个column。在HBase每个cell存储单元对同一份数据有多个版本,根据唯一的时间戳来区分每个版本之间的差异,最新的数据版本排在最前面 。

以上为Hbase的基本需要掌握的知识点。


您可能感兴趣的文档:

--结束END--

本文标题: HBase入门修行基础篇

本文链接: https://lsjlt.com/news/41116.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • HBase入门修行基础篇
    HBase入门修行基础篇 HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigt...
    99+
    2024-04-02
  • Kotlin基础学习-入门篇
    本篇文章来自郭霖大佬的第一行代码中的Kotlin教程,笔者只是在学习Kotlin过程中记录学习过程。 Kotlin系列已更新: Kotlin基础学习-入门篇 Kotlin基础学习-第二篇 Kotli...
    99+
    2023-09-07
    kotlin android
  • SQL 教程-入门基础篇
    文章目录 SQL 简介SQL 语法SQL SELECT 语句SQL SELECT DISTINCT 语句SQL WHERE 子句SQL AND & OR 运算符SQL ORDER BY...
    99+
    2023-08-31
    sql 数据库 mybatis mysql
  • MySQL数据库基础篇之入门基础命令小结
    本文实例讲述了MySQL数据库入门基础命令。分享给大家供大家参考,具体如下: 在日常工作与学习中,无论是开发、运维、还是测试,对于数据库的学习是不可避免的,同时也是日常工作的必备技术之一。在互联网公司,开源产品线比较...
    99+
    2022-06-01
    MySQL 数据库 基础命令
  • 入门Java线程基础一篇就够了
    目录一、线程初步认识1、什么是线程2、Java本身就是多线程3、为什么要使用多线程4、线程的优先级5、线程的状态6、Daemon线程二、线程启动和终止1、构造线程2、什么是线程中断3...
    99+
    2024-04-02
  • MySQL 入门到高级:基础篇 上篇——尚硅谷 2021年
    MySQL 入门到高级:基础篇 上篇——尚硅谷 2021 年 MySQL 入门到高级:基础篇 上篇——尚硅谷 2021 年第 0 章 写在前面 1. MySQL 数据库基础篇大纲 1.1...
    99+
    2023-09-01
    mysql
  • C语言入门篇--sizeof与strlen基础理论
    1.sizeof (1)若求字符串占据 空间 的大小,包括字符串结尾处默认的'\0'。 (2)若所求不是字符串的大小,求的是数组、类型等的大小,不用考虑'\0',因为不是字符串,在结...
    99+
    2024-04-02
  • 完全不用基础的HTML5入门篇教程
    目录html5简介新特征HTML5的一些改进HTML5的多媒体注释:基础标题HTML段落HTML链接一个简单的代码例子html5简介 HTML5是构建Web内容的一种语言描述方式。H...
    99+
    2024-04-02
  • C++基础入门篇之强制转换讲解
    本篇内容主要讲解“C++基础入门篇之强制转换讲解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++基础入门篇之强制转换讲解”吧!引言假设有基类 A,包含了虚函数 func1,以及有派生类 B,...
    99+
    2023-06-07
  • 【Flutter入门到进阶】Flutter基础篇---弹窗Dialog
    1 AlertDialog 1.1 说明         最简单的方案是利用AlertDialog组件构建一个弹框 1.2 示例 void alertDialog(BuildContext context) async {  var res...
    99+
    2023-10-20
    flutter android 开发语言
  • MongoDB基础入门
    简介 • MongoDB是为快速开发互联网Web应用而设计的数据库系统。 • MongoDB的设计目标是极简、灵活、作为Web应用栈的一部分。 • MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,Mong...
    99+
    2021-02-07
    MongoDB基础入门
  • MyBatis基础入门
    鲁春利的工作笔记,好记性不如烂笔头官方文档详见:http://www.mybatis.org/mybatis-3/zh/index.html入门XML配置XML映射文件动态SQLJava API日志 ...
    99+
    2024-04-02
  • Mysql入门基础
    MySQL简介 1、什么是数据库 ? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅 是...
    99+
    2024-04-02
  • PHP基础入门
    1.2 PHP简介 1.2.1 概述 PHP是Hypertext Preprocessor的缩写,(超文本预处理器)是一种在服务器端运行的开源的脚本语言。 LAMP组合(Linux,Apache,My...
    99+
    2023-09-26
    php 服务器 mysql
  • Flutter基础入门
    文章目录 一、Flutter基础知识1.Flutter简介和发展历史2.Flutter安装和配置3.Dart语言基础知识Dart语言特性Dart基本语法空安全 Null safetyDart异...
    99+
    2023-10-25
    flutter android ui
  • python入门基础
    新的开始,新的奋斗!从今天起开始学习python的相关知识! 首先python的基本的关键字和基本的分支结构都跟C语言差不多,这里主要介绍python中比较特别的一些基础内容,包括列表,元组和字符串 列表 创建列表 空列表...
    99+
    2023-01-30
    入门 基础 python
  • HTML基础入门
      一、浏览器   浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,并让用户与这些文件交互的一种软件   1,浏览器种类   主流浏览器:Chrome,Firefox,Safari,Opera  ...
    99+
    2023-01-30
    入门 基础 HTML
  • python-基础入门
    列表shoplist = ['apple', 'mango', 'carrot', 'banana']shoplist[2] = 'aa'del shoplist[0] #删除第一个元素shoplist.insert('4','www') ...
    99+
    2023-01-31
    入门 基础 python
  • Python:基础入门
    #Python 逻辑运算: and,or,not #Python中没有&&,||,!等短路逻辑运算符而是用and,or,not分别替代 print("================================ 逻辑运算...
    99+
    2023-01-31
    入门 基础 Python
  • Java 入门基础
    Java软件工程师是指运用Java这个开发工具去完成软件产品的软件程序设计、开发、测试、维护升级等工作的人员。::::::::::::::::::::::::::::::::::::::::::::::::::::::::Java 入门基础...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作