将Hive与HBase整合在一起,使Hive可以读取HBase中的数据,让Hadoop生态系统中最为常用的两大框架互相结合,相得益彰。
在Hive中创建HBase识别的表就可以替代mysql了。
如下:
CREATE TABLE hbase_hive_1(key int, value string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "xyz")
分别查看Hive、HBase中建立的表
那是因为: Mysql ,(Mysql 随机插入的代价)主键索引是有序的 B+ 树结构,新增条目的 id 肯定是最大的,新增给 B+ 结构带来的调整最小,主键索引是聚簇的:新增条目,id 是最大的。其 data 追加在上一次插入的后面,磁盘更容易顺序写,辅助索引,插入基本是随机的插入条目,可能会引起 B+ 树结构很大的调整。HBase 可以随机插入HBase 的所有插入只是写入内存 memstore,只保证内存数据的有序即可 (很快、很容易)。为防止数据丢失写入 memstore 前,先写入 wal (可以关闭,速度更快)
NoSQL太火,冒出太多产品了,保守估计也成百上千了。互联网公司常用的基本集中在以下几种,每种只举一个比较常见或者应用比较成功的例子吧。
1. In-Memory KV Store : Redis
in memory key-value store,同时提供了更加丰富的数据结构和运算的能力,成功用法是替代memcached,通过checkpoint和commit log提供了快速的宕机恢复,同时支持replication提供读可扩展和高可用。
2. Disk-Based KV Store: Leveldb
真正基于磁盘的key-value storage, 模型单一简单,数据量不受限于内存大小,数据落盘高可靠,Google的几位大神出品的精品,LSM模型天然写优化,顺序写盘的方式对于新硬件ssd再适合不过了,不足是仅提供了一个库,需要自己封装server端。
3. Document Store: Mongodb
分布式nosql,具备了区别mysql的最大亮点:可扩展性。mongodb 最新引人的莫过于提供了sql接口,是目前nosql里最像mysql的,只是没有ACID的特性,发展很快,支持了索引等特性,上手容易,对于数据量远超内存限制的场景来说,还需要慎重。
4. Column Table Store: HBase
这个富二代似乎不用赘述了,最大的优势是开源,对于普通的scan和基于行的get等基本查询,性能完全不是问题,只是只提供裸的api,易用性上是短板,可扩展性方面是最强的,其次坐上了Hadoop的快车,社区发展很快,各种基于其上的开源产品不少,来解决诸如join、聚集运算等复杂查询。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)