当前位置: 首页 > news >正文

大数据之HBase基础

文章目录

  • 前言
  • 一、HBase基础简介
    • (一)基础介绍
    • (二)应用场景
    • (三)特点
  • 二、数据模型
    • (一)行键(row key)
    • (二)列
    • (三)列族(Column Family)
    • (四)列名(Column Qualifier)
    • (五)版本号
    • (六)时间戳
  • 三、HBase相关shell操作
  • 四、Java API介绍
  • 总结


前言

#博学谷IT学习技术支持#
本篇文章主要介绍HBase的基础,数据模型、相关shell命令以及Java API,详情如下。

一、HBase基础简介

(一)基础介绍

  1. HBase是BigTable的开源系统,其建立在HDFS的基础之上,提供高可靠性、高性能、列存储、可伸缩以及实时读写NoSQL的数据库系统;
  2. 主要存储结构化和半结构化的松散数据,只支持单行事务,不支持复杂的事务,HBase的数据查询很简单,不支持join等复杂操作,查询数据时只能通过主键rowkey和主键的range来检索数据。
  3. 与Hadoop相同,HBase主要依靠横向扩展,通过增加廉价的服务器来增加存储和数据处理能力,节点越多,存储和处理能力越好。

(二)应用场景

HBase的应用场景有很多,主要由以下几种:

  1. 对象存储,不少的头条类的新闻、网页、图片等数据都存储在HBase之中
  2. 时序数据,主要依靠HBase的openTSDB模块
  3. 推荐画像
  4. 时空轨迹,主要是轨迹,气象网格之类的数据,在一些具有大数据量的车联网企业中,数据也是存储在HBase之中
  5. Cube OLAP,kylin的一个cube分析工具,底层的数据就是存储在HBase中
  6. 消息/订单,在电信、银行领域,不少的订单查询底层的数据存储
  7. Feeds流,典型的应用就是朋友圈类型的应用,用户可以随时进行内容发布,点赞和评论

(三)特点

HBase的特点主要有以下几点:

  1. 强一致性读写,HBase不是最终一致性,而是强一致性,所以HBase非常适合执行高速计数器聚合等任务。
  2. Region自动分块,HBase表通过Region分布在集群的每个节点上,随着数据的增加,Region会进行拆分和重新分布。
  3. RegionServer故障自动转移。
  4. Hadoop/HDFS集成,HBase底层将HDFS作为其分布式文件系统,同时也支持MapReduce计算引擎。
  5. HBase具有简单易用的Java API和Thrift/REST API。
  6. 支持Cache块缓存和Bloom过滤器进行大容量查询优化。

二、数据模型

在这里插入图片描述

在HBase中,数据存储在有行有列的表中,HBase的表中主要由以下几部分组成:

(一)行键(row key)

  • HBase的每一行由一个row key和一个或多个列组成,列的值与值对应的列、row key相关联;
  • 行存储时按照row key的字典序排序,设计row key时尽量让相关的行存储在一起

(二)列

HBase的列由列族(Column Family)和列名(Column Qualifier)组成,列的表示方式为“列族:列名”,例如“C1:UserID”

(三)列族(Column Family)

  • 列族将一列及其列值组织在一起
  • 每个列族都有数据如何被压缩等存储属性
  • 表中的每一行都有相同的列族
  • 建议将同一类型的列放置在一个列族中
  • 不建议设置太多列族,列族过多的话存在一定的性能问题

(四)列名(Column Qualifier)

  • 列族中包含很多列名,可以为存储的数据提供索引
  • 不同列族中可以存在相同列名的列,但是同一列族中的列名不能重复
  • 列族在创建表后已经固定,列名不做限制,存储数据时再指定对应的列名

(五)版本号

  • 每条数据都可以由多个版本,默认是3,添加相同row key的数据时,HBase不会进行覆盖,而是进行追加,通过版本号进行区分,过早版本的数据会在执行Major Compaction时删除。

(六)时间戳

  • 每条数据都有对应的时间戳,往HBase中添加数据时,时间戳默认为当前操作的时间,也可以人为指定该条数据的时间戳
  • 不同版本的数据按照时间倒序排序,即最新的数据排在前面

三、HBase相关shell操作

四、Java API介绍


总结

相关文章:

  • Python爬虫教你爬取视频信息
  • 基于微信小程序的火锅店点餐系统小程序
  • 一文带你吃透红黑树---红黑树如此简单
  • 经济的1000+篇文章总结
  • 【数据结构】基础:AVL树(平衡二叉树)
  • 【C++11】lambda表达式、包装器、bind 与 placeholders
  • 【深度学习基础6】自编码器及其变体
  • 数学知识-约数
  • 【Python模块】psutil
  • 配置安全的linux-apache服务器(5)
  • 【栈】数据结构栈的实现
  • BPMP 需求
  • 软件测试(概念Ⅰ) · 软件测试的基本概念 · 什么是需求 · 测试用例的概念 · 软件错误(bug)的概念
  • 理论一:当谈论面向对象的时候,我们到底在谈论什么?
  • 带你三分种了解网络用语之网络层、传输层
  • 元宵节:css画灯笼
  • 异步编程实践
  • Go XORM学习
  • 【golang/go语言】go语言中包的使用、Init()函数、协程和接口
  • 【电源专题】JEITA学习
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉