HBASE的读写以及client API

一:读写思想

1.系统表

  hbase:namespace

    存储hbase中所有的namespace的信息

  hbase:meta   

    rowkey:hbase中所有表的region的名称
    column:regioninfo:region的名称,region的范围
    server:该region在哪台regionserver上

2.读写流程

  tbname,rowkey  ->   region  ->  regionserver  ->  store ->  storefile

  但是这些都是加载过meta表之后,然后meta表如何寻找?

3.读的流程  

  -》根据表名和rowkey找到对应的region
  -》zookeeper中存储了meta表的region信息
  -》从meta表中获取相应的region的信息
  -》找到对应的regionserver
  -》查找对应的region
  -》读memstore
  -》storefile

4.写的流程  

  -》根据表名和rowkey找到对应的region
  -》zookeeper中存储了meta表的region信息
  -》从meta表中获取相应的region的信息
  -》找到对应的regionserver
  -》正常情况
  -》WAL(write ahead log预写日志),一个regionserver维护一个hlog
  -》memstore (达到一定大小,flush到磁盘)
  -》当多个storefile达到一定大小以后,会进行compact,合并成一个storefile
  -》当单个storefile达到一定大小以后,会进行split操作,等分割region

5.注意点

  关于版本的合并和删除是在compact阶段完成的。hbase只负责数据的增加存储
  hmaster短暂的不参与实际的读写

时间: 2024-10-06 22:44:03

HBASE的读写以及client API的相关文章

HBase Client API使用入门(二)---查询及过滤器

相关知识 创建表插入数据删除等见:http://www.cnblogs.com/wishyouhappy/p/3735077.html HBase API简介见:http://www.cnblogs.com/wishyouhappy/p/3753347.html 按行.列簇等查询 package wish.hbase; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org

HBase 二次开发 java api和demo

1. 试用thrift python/java以及hbase client api,结论如下: 1.1 thrift的安装和发布繁琐,可能会遇到未知的错误,且hbase.thrift的版本在变化中.优点代码简单,需要打包的内容少. 1.2 hbase client api,需要的jar很多,发布版的容量也很大,打包后近百兆.优点是,明确,无歧义. 2. 推荐用hbase client api的方式搞定. 3. 以下均为技术细节. 4. 有一台机器/一个集群,在运行hadoop,也运行了基于这个h

Hbase新旧版的API

1 package com.felix.hbaseapi_test; 2 3 /* 这是旧版的 API操作 */ 16 public class hbaseapifelix { 17 18 public static final String TABLE_NAME = "testapi"; 19 public static final String COLUMNFAMILY_NAME = "cf"; 20 public static final String ROW

HBase 数据读写流程

HBase 数据读写流程 2016-10-18 杜亦舒 读数据 HBase的表是按行拆分为一个个 region 块儿,这些块儿被放置在各个 regionserver 中 假设现在想在用户表中获取 row key 为 row0001 的用户信息 要想取得这条数据,就需要先找到含有此条记录的 region HBase 是如何定位到具体 regionserver 中的具体 region 的呢? HBase 中有一个内置的 hbase:meta 表,其中记录了所有表的所有 region 的详细信息 例如

Memcached Java Client API详解

针对Memcached官方网站提供的java_memcached-release_2.0.1版本进行阅读分析,Memcached Java客户端lib库主要提供的调用类是SockIOPool和MemCachedClient?,关键类及方法整理说明如下. SockIOPool 这个类用来创建管理客户端和服务器通讯连接池,客户端主要的工作包括数据通讯.服务器定位.hash码生成等都是由这个类完成的. public static SockIOPool getInstance() 获得连接池的单态方法.

spark读写压缩文件API使用详解

最近研究了下Spark如何读写压缩格式的文件,主要有如下三种方式,这里以lzo方式压缩为例     /*******************old hadoop api*************************/     val confHadoop = new JobConf     confHadoop.set("mapred.output.compress", "true")     confHadoop.set("mapred.output

ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul

catalog 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 ECShop存在一个盲注漏洞,问题存在于/api/client/api.php文件中,提交特制的恶意POST请求可进行SQL注入攻击,可获得敏感信息或操作数据库 http://sebug.net/vuldb/ssvid-21007 2. 漏洞触发条件 1. /api/client/api.php存在未过滤漏洞 2. 服务器magic_quote_gpc =

ElasticSearch--------------------->Elasticsearch Clients--------------------->Java REST Client API

Elasticsearch-->Java REST Client API 概述: elasticsearch提供了REST WEB API,所以开发者可以在自己的restful web中调用elasticsearch 关于Java REST Client API的详细叙述,参见官方documentation:Java REST Client API 可以直接使用curl来调用elasticsearch: 基本语法格式:RESTful API with JSON over HTTP 使用示例: 例

jupyter Client API

Jupyter Client Api : Jupyter Kernel :http://jupyter-client.readthedocs.io/en/latest/kernels.html Jupyter Client API: http://jupyter-client.readthedocs.io/en/latest/api/kernelspec.html