HBase是啥呢,有哪些特点呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase是啥呢,有哪些特点呢?相关的知识,希望对你有一定的参考价值。

HBase是什么呢,都有哪些特点呢?

参考技术A

Hbase是一种NoSQL数据库,这意味着它不像传统的RDBMS数据库那样支持SQL作为查询语言。Hbase是一种分布式存储的数据库,技术上来讲,它更像是分布式存储而不是分布式数据库,它缺少很多RDBMS系统的特性,比如列类型,辅助索引,触发器,和高级查询语言等待

那Hbase有什么特性呢?如下:

    强读写一致,但是不是“最终一致性”的数据存储,这使得它非常适合高速的计算聚合

    自动分片,通过Region分散在集群中,当行数增长的时候,Region也会自动的切分和再分配

    自动的故障转移

    Hadoop/HDFS集成,和HDFS开箱即用,不用太麻烦的衔接

    丰富的“简洁,高效”API,Thrift/REST API,Java API

    块缓存,布隆过滤器,可以高效的列查询优化

    操作管理,Hbase提供了内置的web界面来操作,还可以监控JMX指标

    什么时候用Hbase?

    Hbase不适合解决所有的问题:

    首先数据库量要足够多,如果有十亿及百亿行数据,那么Hbase是一个很好的选项,如果只有几百万行甚至不到的数据量,RDBMS是一个很好的选择。因为数据量小的话,真正能工作的机器量少,剩余的机器都处于空闲的状态

    其次,如果你不需要辅助索引,静态类型的列,事务等特性,一个已经用RDBMS的系统想要切换到Hbase,则需要重新设计系统。

    最后,保证硬件资源足够,每个HDFS集群在少于5个节点的时候,都不能表现的很好。因为HDFS默认的复制数量是3,再加上一个NameNode。

    Hbase在单机环境也能运行,但是请在开发环境的时候使用。

    内部应用

    存储业务数据:车辆GPS信息,司机点位信息,用户操作信息,设备访问信息。。。

    存储日志数据:架构监控数据(登录日志,中间件访问日志,推送日志,短信邮件发送记录。。。),业务操作日志信息

    存储业务附件:UDFS系统存储图像,视频,文档等附件信息

    不过在公司使用的时候,一般不使用原生的Hbase API,使用原生的API会导致访问不可监控,影响系统稳定性,以致于版本升级的不可控。

HFile

HFile是Hbase在HDFS中存储数据的格式,它包含多层的索引,这样在Hbase检索数据的时候就不用完全的加载整个文件。索引的大小(keys的大小,数据量的大小)影响block的大小,在大数据集的情况下,block的大小设置为每个RegionServer 1GB也是常见的。

探讨数据库的数据存储方式,其实就是探讨数据如何在磁盘上进行有效的组织。因为我们通常以如何高效读取和消费数据为目的,而不是数据存储本身。

Hfile生成方式

起初,HFile中并没有任何Block,数据还存在于MemStore中。

Flush发生时,创建HFile Writer,第一个空的Data Block出现,初始化后的Data Block中为Header部分预留了空间,Header部分用来存放一个Data Block的元数据信息。

而后,位于MemStore中的KeyValues被一个个append到位于内存中的第一个Data Block中:

注:如果配置了Data Block Encoding,则会在Append KeyValue的时候进行同步编码,编码后的数据不再是单纯的KeyValue模式。Data Block Encoding是HBase为了降低KeyValue结构性膨胀而提供的内部编码机制。

程序开发中遇到的lua语言概念是啥呢?

程序开发中遇到的lua语言概念是什么呢?

参考技术A Lua 教程
lua
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于 1993 年开发的,该小组成员有:Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo。
设计目的
其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua 特性
轻量级: 他用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
其它特性:
支持面向过程(procedure-oriented)编程和函数式编程(functional programming);
自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;
语言内置模式匹配;闭包(closure);函数也可以看作一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;
通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。
Lua 应用场景
游戏开发
独立应用脚本
Web 应用脚本
扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench
安全系统,如入侵检测系统
第一个 Lua 程序
接下来我们使用 Lua 来输出"Hello World!"
实例(Lua 5.3)
print("Hello World!")

以上是关于HBase是啥呢,有哪些特点呢?的主要内容,如果未能解决你的问题,请参考以下文章

PDCA的运用特点是啥呢?

Ant和Maven的作用是啥?两者之间功能,特点都有哪些区别

uml的特点是啥

基于Java的开源CMS都有哪些推荐,各自特点是啥

云原生应用是啥?它的特点都有哪些?

linux都有哪些版本?它们各自的特点是啥?