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

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

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结构性膨胀而提供的内部编码机制。

1.下载和安装hbase数据库

[root@tong1 ~]# wget http://mirrors.hust.edu.cn/apache/hbase/stable/hbase-0.98.9-hadoop2-bin.tar.gz

[root@tong1 ~]# tar xvf hbase-0.98.9-hadoop2-bin.tar.gz

[root@tong1 ~]# mv hbase-0.98.9-hadoop2 /usr/local/

[root@tong1 local]# chown -R hadoop:hadoop hbase-0.98.9-hadoop2

[root@tong1 local]# ll hbase-0.98.9-hadoop2

total 352

drwxr-xr-x. 4 hadoop hadoop 4096 Dec 16 14:16 bin

-rw-r--r--. 1 hadoop hadoop 164928 Dec 16 14:20 CHANGES.txt

drwxr-xr-x. 2 hadoop hadoop 4096 Jan 8 12:48 conf

drwxr-xr-x. 4 hadoop hadoop 4096 Dec 16 14:16 dev-support

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:22 hbase-annotations

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-assembly

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:22 hbase-checkstyle

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-client

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:22 hbase-common

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-examples

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:25 hbase-hadoop1-compat

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-hadoop2-compat

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-hadoop-compat

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-it

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-prefix-tree

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-protocol

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-rest

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-server

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-shell

drwxr-xr-x. 2 hadoop hadoop 4096 Dec 16 14:23 hbase-testing-util

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 14:23 hbase-thrift

-rw-r--r--. 1 hadoop hadoop 11358 Dec 2 07:36 LICENSE.txt

drwxrwxr-x. 2 hadoop hadoop 4096 Jan 8 12:01 logs

-rw-r--r--. 1 hadoop hadoop897 Dec 16 14:16 NOTICE.txt

-rw-r--r--. 1 hadoop hadoop 81667 Dec 16 14:16 pom.xml

-rw-r--r--. 1 hadoop hadoop 1377 Dec 16 14:16 README.txt

drwxr-xr-x. 3 hadoop hadoop 4096 Dec 16 06:37 src

[root@tong1 local]#

2.修改hbase配置文件

[root@tong1 local]# cd /usr/local/hbase-0.98.9-hadoop2/conf/

[root@tong1 conf]# vim hbase-site.xml

<configuration>

<property>

<name>hbase.rootdir</name>

<value>hdfs://tong1:9000/hbase</value>-与hadoop中的core-site.xml文件中一至

</property>

<property>

<name>hbase.cluster.distributed</name>

<value>true</value>

</property>

</configuration>

[root@tong1 conf]# vim hbase-env.sh

export JAVA_HOME=/usr/local/jdk1.8.0_25

[root@tong1 conf]#

3.启动hbase服务

[root@tong1 conf]# su - hadoop

[hadoop@tong1 ~]$ start-hbase.sh

localhost: starting zookeeper, logging to /usr/local/hbase-0.98.9-hadoop2/bin/../logs/hbase-hadoop-zookeeper-tong1.out

starting master, logging to /usr/local/hbase-0.98.9-hadoop2/logs/hbase-hadoop-master-tong1.out

localhost: starting regionserver, logging to /usr/local/hbase-0.98.9-hadoop2/bin/../logs/hbase-hadoop-regionserver-tong1.out

[hadoop@tong1 ~]$ hbase shell

2015-01-08 15:01:36,052 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available

2015-01-08 15:01:36,082 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available

2015-01-08 15:01:36,109 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available

2015-01-08 15:01:36,135 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available

2015-01-08 15:01:36,147 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available

HBase Shellenter 'help<RETURN>' for list of supported commands.

Type "exit<RETURN>" to leave the HBase Shell

Version 0.98.9-hadoop2, r96878ece501b0643e879254645d7f3a40eaf101f, Mon Dec 15 23:00:20 PST 2014

hbase(main):008:0* create 'tong1' ,'test'

0 row(s) in 0.9120 seconds

=>Hbase::Table - tong1

hbase(main):009:0>scan 'tong1'

ROW COLUMN+CELL

0 row(s) in 0.0390 seconds

hbase(main):010:0>

4.在浏览器查看状态即可。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6742324.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-27
下一篇2023-03-27

发表评论

登录后才能评论

评论列表(0条)

    保存