1.Hbase的读取过程。

以读取test_region表,row key为this is row value 400000为例.

1: 到zookeeper中去读取/hbase/root-region-server znode中的值,得到-ROOT-的唯一region归那台region-server管.

2: 管-ROOT- 的那台region-server将从hdfs系统中加载-ROOT-表的内容到内存中(并cache).

3.1 在我目前的测试中-ROOT- 表只有一个row key,  所以直接从info:server中得到管.META.的那台region-server管, 返回给clinet.

3.2 如果-ROOT-表中有多条.META.关于test_region表的记录,找法和4相同

4: 管.META. 的那台region-server从hdfs加载表.META.的数据,并cache.  client以test_region,this is row value 400000, 9999999999999, 找到那条比这个key最接近的那条数据,从info:server中得管这个表的这个region(叫a)的region-server服务器.

5: 管理a这个region的服务器从hdfs找到存储这条数据的文件,然后读取返回.

总结:

(1): 经过三次,定位到数据所在的region

(2): 读操作不要经过hmaster

2.Hbase写数据过程。

以插入test_region表,row key为this is row value 400001为例.

1: 到zookeeper中去读取/hbase/root-region-server znode中的值,得到-ROOT-的唯一region归那台region-server管.

2: 管-ROOT- 的那台region-server将从hdfs系统中加载-ROOT-表的内容到内存中(并cache).

3.1 在我目前的测试中-ROOT- 表只有一个row key,  所以直接从info:server中得到管.META.的那台region-server管, 返回给clinet.

3.2 如果-ROOT-表中有多条.META.关于test_region表的记录,找法和4相同

4: 管.META. 的那台region-server从hdfs加载表.META.的数据,并cache.  client以test_region,this is row value 400000, 9999999999999, 找到那条比这个key最接近小的那条数据,从info:server中得管这个表的这个region(叫a)的region-server服务器.

5: 先写HLog, 当region-server死了后恢复数据使用

6.1 : 如果cache 没有达到指定的值,则把数据写到这台region-server服务器的这块内存就好了.

6.2 : 如果cache已达到某个值,则新建一个内存区去接受新来的insert,老的cache区将由一个线程flush到文件系统相应用的region.

7: 如果region文件太多并达到某些大小,将开启一个线程做合并工作,合并后将删除其它小文件,如果合并后文件过大,将进行split,split多个region时,将向master报告region要进行重新分配。进入master分配region过程.

总结:

(1): 经过三次,定位到数据所在的region

(2): 写操作不要经过hmaster.

(3): 写操作将会触发一系统动作

Hbse的读写过程的更多相关文章

  1. f2fs源码分析之文件读写过程

    本篇包括三个部分:1)f2fs 文件表示方法: 2)NAT详细介绍:3)f2fs文件读写过程:4) 下面详细阐述f2fs读写的过程. 管理数据位置关键的数据结构是node,node包括三种:inode ...

  2. HDFS 文件读写过程

    HDFS 文件读写过程 HDFS 文件读取剖析 客户端通过调用FileSystem对象的open()来读取希望打开的文件.对于HDFS来说,这个对象是分布式文件系统的一个实例. Distributed ...

  3. HDFS读写过程

    HDFS的读写过程: 读过程: Client收到用户的读请求——client拿着path向namenode请求文件或者block的datanode列表——client从返回的datanode列表中选择 ...

  4. HBase 文件读写过程描述

    HBase 数据读写过程描述 我们熟悉的在 Hadoop 使用的文件格式有许多种,例如: Avro:用于 HDFS 数据序序列化与 Parquet:常见于 Hive 数据文件保存在 HDFS中 HFi ...

  5. HBase的简单介绍,寻址过程,读写过程

    HBase是列族数据库,主要由,表,行键,列族,列标识,值,时间戳 组成,         表   其中HBase 主要底层存储依赖与hdfs,可以在HDFS中看到每个表名都作为一个独立的目录结构   ...

  6. hbase的读写过程

    hbase的读写过程: hbase的架构: Hbase真实数据hbase真实数据存储在hdfs上,通过配置文件的hbase.rootdir属性可知,文件在/user/hbase/下hdfs dfs - ...

  7. Netty源码解析 -- ChannelPipeline机制与读写过程

    本文继续阅读Netty源码,解析ChannelPipeline事件传播原理,以及Netty读写过程. 源码分析基于Netty 4.1 ChannelPipeline Netty中的ChannelPip ...

  8. Hadoop学习总结之二:HDFS读写过程解析

    一.文件的打开 1.1.客户端 HDFS打开一个文件,需要在客户端调用DistributedFileSystem.open(Path f, int bufferSize),其实现为: public F ...

  9. HDFS追本溯源:租约,读写过程的容错处理及NN的主要数据结构

    1.      Lease 的机制: hdfs支持write-once-read-many,也就是说不支持并行写,那么对读写的互斥同步就是靠Lease实现的.Lease说白了就是一个有时间约束的锁.客 ...

随机推荐

  1. 关于TabControl的Trigger【项目】

    我有一个TabControl <TabControl x:Name="ToolSystemSection" Grid.Row="4" ContentTem ...

  2. InitializingBean和init-method

    [spring的InitializingBean的 afterPropertiesSet 方法 和 init-method配置的 区别联系] InitializingBean Spring的Initi ...

  3. 大数据平台搭建(hadoop+spark)

    大数据平台搭建(hadoop+spark) 一.基本信息 1. 服务器基本信息 主机名 ip地址 安装服务 spark-master 172.16.200.81 jdk.hadoop.spark.sc ...

  4. pic/at89c2051 programmer

    http://dangerousprototypes.com/forum/viewtopic.php?t=170 It looks like the PICKIT2 uses a small boos ...

  5. \r,\n,\t

    \r:回车符,返回到这一行的开头,return的意思. \n:换行符,到下一行的同一位置,纵坐标相同,new line的意思. \t:制表符,为了在不使用表格的情况下,上下对齐,table的意思. E ...

  6. CodeForces 164A Variable, or There and Back Again 搜索

    Variable, or There and Back Again 题目连接: http://codeforces.com/problemset/problem/164/A Description L ...

  7. Codeforces Round #188 (Div. 2) A. Even Odds 水题

    A. Even Odds Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/318/problem/ ...

  8. Java编程规范实践

    一个好的编程规范可以让代码易于理解,具体的操作却不必如此麻烦. 本文包含以下内容: Eclipse Java代码Formatter配置 Eclipse 代码模板配置 自动添加Javadoc注释 附录: ...

  9. thinkphp关联查询

    $list=$model->table("$dName d ,$mName m,$cName c") ->field('d.*,m.title as musicTitl ...

  10. python中import失败解决的简单办法

    例如:import pkg_resources失败 可以print sys.path查看,从其他机器上cp -r过来即可,如下例子: 从另外一个正常的机器上scp过来/usr/ali/lib/pyth ...