第3章 客户端API:基础知识

  • 所有修改都保证了行级别的原子性: 要么读到最新的修改,要么等待系统允许写入改行修改
  • 用户要尽量使用批处理(batch)更新来减少单独操作同一行数据的次数
  • 写操作中设计的列的数目并不会影响该行数据的原子性,行原子性会同时保护到所有列
  • 创建HTable实例(指的是在java中新建该类),每个实例都要扫描.META. 表,以检查该表是否存在,推荐用户只创建一次HTable实例,而且是每个线程创建一个
  • 如果用户需要多个HTable实例,建议使用HTablePool类(类似连接池)

CRUD

  • 还可以通过 KeyValue 来添加Put: Put add(KeyValue kv)
  • getFamilyMap() 可以遍历Put实例中每一个可用的KeyValue实例
  • 用 has(family, qualifier) 来检查是否存在特定的单元格,而不需要遍历整个集合
  • Put.getRow() 可以获取rowkey
  • Put.heapSize() 可以计算当前Put实例所需的堆大小,既包含其中的数据,也包含内部数据结构所需的空间

KeyValue

KeyValue提供了一些比较器(可能可以进行服务器端排序?),列出可能用到的几种:
  • KeyComparator   比较 getKey()
  • KVComparator
  • RowComparator   比较 getRow()

客户端的写缓冲区

  • 客户端有一个写缓冲区(默认大小2M),收集一堆put,然后一次发给服务器
  • 通过 table.setAutoFlush(false) 来激活缓冲区(只有在写非常频繁的情况下会用到)
  • hbase-site.xml 中的 hbase.client.write.buffer来调整大小
以下情况会激发缓冲区的刷写
  1. 激活写缓冲区之后要手动调用 flushCommits()
  2. 缓冲区满了的时候也会自动调用flushCommits()方法
  3. table.close()也会触发刷写
注意:如果只存储大单元格,缓冲区的作用就不大,因为大部分时间是传输时间而不是开关socket的时间

Put列表

可以传入一个列表的 Put
void Put(List<Put> puts)
不过如果同时插入多个put,当其中某个出错的时候,前面几个会被正常插入,往后的put就都不会插入
而且客户端也不能保证服务器端的写入顺序

GET

  • get.exist(Get get) 方法,在需要检查一个比较大的列的时候能节省网络传输
  • Result getRowBefore 可以获取某个行之前的行

批量处理操作

  • put,get, delete 列表其实都是通过 batch() 方法实现的
  • 直接使用batch(List<Action> actions, Object[] results, ... ) 可以同时传入3种实例中的任意一种
  • batch并不使用写缓冲区
注意:不可以把对同一行的put和delete放在一个批量处理里面,因为批量处理的顺序不可控

两种批量查询的区别

用batch(List<Row> actions, Object[] results)批量查 和 Object[] batch(List<Row> actions) 的区别是
  • batch(List<Row> actions, Object[] results)可以返回部分结果
  • Object[] batch(List<Row> actions) 一旦出错,一条都没有

行锁

尽量不要使用行锁,如果必须使用,请一定节约占用锁的时间

扫描

  • 通过 hbase-site.xml 中的 hbase.regionserver.lease.period 设定 ResultScanner 的租约
  • 由于每次next()都要发一次请求,所以扫描器也有缓存,叫scanner caching ,默认是关闭的
  • 通过 setBatch(5) 可以每次 next() 返回5列,注意是 列!

各种特性

HRegionLocation getRegionLocation(row)
Map<HRegionInfo, HServerAddress> getRegionInfo()
这些方法可以获取某一行数据的具体位置,或者所在的region信息

《HBase权威指南》读书笔记3相关推荐

  1. 《人人都是产品经理》第四章读书笔记及读后感作文2400字

    <人人都是产品经理>第四章读书笔记及读后感作文2400字: 最近一直在忙别的学习,以至于好久没有更新公众号了,也好久没有写读书笔记了.<人人都是产品经理>这本书其实早在一个月前 ...

  2. 《营销5.0后互联网时代的企业战略营销》读书笔记

    文章目录 前言 营销 1.0 到营销 5.0 的发展路径 CIDR 模型 小结 前言 怀着对"营销"继续探索的心情,今年3月份完成了<营销5.0>的阅读,读本书的初衷是 ...

  3. 《互联网+:小米案例版》的读书笔记

    读书笔记 摘自<互联网+:小米案例版刘润> 互联网+:小米案例版刘润 序篇 创业方法论之变 雷军反复强调的"顺势而为",以及"站对了风口,猪都能飞起来&quo ...

  4. 互联网产品经理(PM)的工作内容和职责

    互联网产品经理的角色和职责在不同的互联网公司会存在一定差异,但是一些关键职责是任何一个产品经理都应承担的,下面我们按照产品阶段将互联网产品经理的职责整理为一下五个方面: 一.市场调研及用户研究 即研究 ...

  5. 一组漫画告诉你,互联网产品经理是什么概念

    一.什么是产品经理 1. 1 什么是产品 产品是满足用户需求,被使用和消费的任何东西.包括有形的物品和无形的服务. 在了解产品经理之前,先来了解一下什么是产品.产品充斥在我们生活中的方方面面.鞋子.手 ...

  6. 《修炼之道:互联网产品从设计到运营》荣获“2012最受读者喜爱的IT人文类图书奖”!

    <修炼之道:互联网产品从设计到运营>获得51CTO 主办的"2012最受读者喜爱的IT人文类图书奖",http://t.cn/zjjaXNo! 如何在寸土寸金的首页上使 ...

  7. 互联网产品的交互设计方法

    目前交互设计在互联网产品中的应用状况 "交互设计可以提高产品可用性."在国内的互联网行业中,建立在这个认识基础上,交互设计得到了普遍的接受."产品设计开始的时候应该先交互 ...

  8. 为什么互联网能创造商业奇迹——我的互联网产品观

    作者   网易·崔晓宇 互联网的出现突破了时间.地域的局限性,它使信息可以更快的速度传播到更广的范围,从时间和空间维度上看形成了真正的信息流.高效的流动让信息与生俱来的价值属性得以提升.我认为信息已经 ...

  9. 互联网产品的定义及分类

    产品类型 产品是指能够提供给市场,被人们使用和消费,并能满足人们某种需求的任何东西,包括有形的物品.无形的服务.组织.观念或它们的组合.产品一般可以分为三个层次,即核心产品.形式产品.延伸产品.核心产 ...

  10. 怎么做好互联网产品运营?

    怎么做好互联网产品运营? 一.什么是运营? 从广义的角度上说,一切围绕着网站产品进行的人工干预都叫运营.所以某种程度上,我认为互联网产品公司只有3个业务部门:产品,技术,运营. 产品运营这个概念就=运 ...

最新文章

  1. 为什么匿名内部类参数必须为final类型
  2. tf.reduce_max用法
  3. SpringMVC+RestFul详细示例实战教程(实现跨域访问)
  4. java文本框背景_background 设置文本框背景图
  5. C++双冒号和单冒号的用法区别
  6. 汇编编译器以及 DOSBox0.74的安装使用(虚拟)64位
  7. mysql 编辑 条目,mysql函数:将旧条目旋转到归档表
  8. 分页,在第一页不显示上一页或禁止使用上一页
  9. 淘宝首页原生js练习(基础练习的基础中的基础)
  10. Vue+百度地图api
  11. 怎么制作QQ背景音乐链接
  12. C++ printf打印二进制,三进制,八进制,十六进制等
  13. Android 多种限定符
  14. vue项目,解决IE浏览器报Promise未定义的错误
  15. 互联网巨头追捧的“中台”战略,有多重要?
  16. 建筑师们终于在虚拟空间开双年展了! | 绿洲 · 虚拟现实专栏
  17. 微众银行客服电话是95384 认准官方的人工客服电话
  18. 看看小编都用啥!实用Win7小软件大推荐
  19. 从陶潜的“化”到王维的“空”
  20. vue 生命周期 这个博客写的很好https://www.cnblogs.com/happ0/p/8075562.html

热门文章

  1. iOS 加载本地Gif图片
  2. thinkpad 开启虚拟服务器,ThinkPad笔记本怎么开启处理器虚拟化技术
  3. protues仿真闪退问题,亲测有效
  4. 《数字图像处理 第三版》(冈萨雷斯)——第十一章 表示和描述
  5. 震旦adc225打印机连接计算机,震旦ADC225打印机驱动
  6. idea调整代码字体大小方法
  7. 路由器带硬盘+文件服务器,带硬盘路由器推荐,几款硬盘路由器产品PK
  8. 人脸识别技术大起底,你了解多少?
  9. 医学统计学计算机操作教程第3版附录答案,医学统计学课后习题集答案解析.doc...
  10. python字体类型arial_python 更改字体_更改字体名称而不更改默认字体python