只知道MySQL?那你应该来看看HBase

2022-05-05 16:38:04 浏览数 (1)

什么是HBase

HBase是一种非关系型的,分布式的,海量存储数据库。可用于大数据分析,如日志分析。来看看官网解释:

❝Apache HBase™ is the Hadoop database, a distributed, scalable, big data store. Use Apache HBase™ when you need random, realtime read/write access to your Big Data. This project's goal is the hosting of very large tables -- billions of rows X millions of columns -- atop clusters of commodity hardware. Apache HBase is an open-source, distributed, versioned, non-relational database modeled after Google's Bigtable: A Distributed Storage System for Structured Data by Chang et al. Just as Bigtable leverages the distributed data storage provided by the Google File System, Apache HBase provides Bigtable-like capabilities on top of Hadoop and HDFS. ❞

HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库,HBase基于列的而不是基于行的模式。

与关系型数据库的区别

HBase是非关系型数据库,那么与关系型数据库(如MySQL)有什么区别呢,我们来看看他们的区别:

「HBase」

RDBMS

类似于 Hadoop 的分布式集群,硬件成本低廉

硬件架构

传统的多核系统,硬件成本昂贵

由软件架构实现,由于由多个节点组成,所以不担心一点或几点宕机

容错性

一般需要额外硬件设备实现 HA 机制

PB

数据库大小

GB、TB

稀疏的、分布的多维的 Map

数据排布方式

以行和列组织

Bytes

数据类型

丰富的数据类型

ACID 只支持单个 Row 级别

事物支持

全面的 ACID 支持,对 Row 和表

只支持 Java API (除非与其他框架一起使用,如 Phoenix、Hive)

查询语言

SQL

只支持 Row-key,除非与其他技术一起应用,如 Phoenix、Hive

索引

支持

百万查询/每秒

吞吐量

数千查询/每秒

由此可见HBase的性能之强。

数据存储示例

如果是关系型数据库,我们一般是这么存储的:

ID

密码

时间戳

1

111

20200719

2

222

20200720

换成Hbase,我们是这么存储的:

Row-Key

Value(CF、Qualifier、Version)

1

info{'姓': '张','名':'三'}pwd{'密码': '111'}

2

Info{'姓': '李','名':'四'}pwd{'密码': '222'}

看出区别了么。

HBase部署

文件目录

HBase目录如下:

HBase目录

配置hbase-site.xml

代码语言:javascript复制
vi ~/support/hbase/conf/hbase-site.xml
<configuration>
 <property>
  <name>hbase.rootdir</name>
  <value>file:///home/log4x/data/hbase</value>
 </property>
    <property>
  <name>hbase.cluster.distrubuted</name>
  <value>true</value>
 </property>
 <property>
  <name>hbase.zookeeper.quorum</name>
  <value>10.174.26.145</value>
 </property>
 <property>
  <name>hbase.zookeeper.property.clientPort</name>
  <value>2181</value>
 </property>
 <property>
  <name>hbase.tmp.dir</name>
  <value>/home/log4x/logs/hbase/tmp</value>
 </property>
</configuration>

在这个配置文件中,我们需要配置Zookeeper的地址,配置data的目录,配置tmp的目录。

配置hbase-env.sh

代码语言:javascript复制
vi ~/support/hbase/conf/hbase-env.sh
export HBASE_MANAGES_ZK=false

我们要禁用Hbase自带的Zookeeper,用统一的Zookeeper管理。

进程启动与数据展示

执行~/support/hbase/bin/start-hbase.sh

jps查看

HBase进程

执行~/support/hbase/bin/hbase shell进入数据库,我们可以看到程序已建好的表:

Hbase表

web页面也能看到:

hbase的web界面

❝这里需要提前创立表空间:cx_log4x ❞

Hbase常用命令(需要进入Hbase shell):

代码语言:javascript复制
#hbase创建表空间
create_namespace 'cx_log4x'

#列出表明
>list

#统计表的记录条数
> count 'cx_log4x:WEB'

#查看表的数据,使用指定的时间范围和返回10条。
> scan 'cx_log4x:SRV', {LIMIT=>10,TIMERANGE=>[1495953605000,1496385605000]}

#创建表,base指列名,TTL是数据存活时间,单位秒。
> create 'cx_log4x:ESB', {NAME => 'base',VERSIONS => 1, TTL => 7200, COMPRESSION => 'NONE'}

#清空表,清空表数据。
> truncate 'cx_log4x:WEB

上面就是HBase的一个简短的介绍了,欢迎有兴趣的一起交流。

0 人点赞