HBase是一种Hadoop数据库,经常被描述为一种稀疏的,分布式的,持久化的,多维有序映射,它基于行键、列键和时间戳建立索引,是一个可以随机访问的存储和检索数据的平台。HBase不限制存储的数据的种类,允许动态的、灵活的数据模型,不用SQL语言,也不强调数据之间的关系。HBase被设计成在一个服务器集群上运行,可以相应地横向扩展。
HBase使用场景和成功案例
互联网搜索问题:爬虫收集网页,存储到BigTable里,MapReduce计算作业扫描全表生成搜索索引,从BigTable中查询搜索结果,展示给用户。
抓取增量数据:例如,抓取监控指标,抓取用户交互数据,遥测技术,定向投放广告等
内容服务
信息交互
入门
1、API
和数据操作有关的HBase API有5个,分别是 Get(读),Put(写),Delete(删),Scan(扫描)和Increment(列值递增)
2、操作表
首先要创建一个configuraTIon对象
ConfiguraTIon conf = HBaseConfiguraTIon.create();
使用eclipse时的话还必须将配置文件添加进来。
conf.addResource(new Path(“E:\\share\\hbase-site.xml”));
conf.addResource(new Path(“E:\\share\\core-site.xml”));
conf.addResource(new Path(“E:\\share\\hdfs-site.xml”));
使用连接池创建一张表。
HTablePool pool = new HTablePool(conf,1);
HTableInterface usersTable = pool.getTable(“users”);
3、写操作
用来存储数据的命令是put,往表里存储数据,需要创建Put实例。并制定要加入的行
Put put = new Put(byte[] row) ;
Put的add方法用来添加数据,分别设定列族,限定符以及单元格的指
put.add(byte[] family , byte[] qualifier , byte[] value) ;
最后提交命令给表
usersTable.put(put);
usersTable.close();
修改数据,只需重新提交一次最新的数据即可。
HBase写操作的工作机制:
HBase每次执行写操作都会写入两个地方:预写式日志(write-ahead log,也称HLog)和MemStore(写入缓冲区),以保证数据持久化,只有当这两个地方的变化信息都写入并确认后,才认为写动作完成。MemStore是内存里的写入缓冲区,HBase中数据在永久写入硬盘之前在这里累积,当MemStore填满后,其中的数据会刷写到硬盘,生成一个HFile。
4、读操作
创建一个Get命令实例,包含要查询的行
Get get = new Get(byte[] row) ;
执行addColumn()或addFamily()可以设