学习笔记 | HBase学习笔记

前言

学习过程中的笔记,给踩坑的同学做个参考,笔记已经过去很久了,如有问题请留言。。

一、基础知识

  • HBase是一个构建在HDFS上的分布式列存储系统,主要用于海量非结构化数据存储。
  • 依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力
  • HBase是一个分布式的、面向列的开源数据库
  • 表由行和列组成,列划分为多个列族/列簇(column family)
  • RowKey:是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要。
  • Column Family:列族,拥有一个名称(string),包含一个或者多个相关列
  • Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加
  • HBase 数据访问形式
    • get:指定rowkey获取一行数据
    • scan:指定StartRow和StopRow获取范围内数据
    • 全表扫描:扫描整个HBase表
  • HBase 表结构


    图片来自网络

二、特征

  • BigTable:一个表可以有数十亿行和百万个列
  • 面向列:面向列族的存储和权限控制
  • 稀疏:空(null)列不占用存储空间,表可以设计的非常稀疏
  • 数据单一性:存储的是byte

三、存储原理

  • Hbase中一个表被划分了很多个Region,它可以动态扩展,保证整个系统的负载均衡。
  • 让一个Region达了上限的时候,就会自动拆分二个相等的Region。(原理就是Hbase中的split和compaction,Region-split 分裂 ,split会使Server有一段时间的停顿)
  • 每个Region
  • 每个Region由一个RegionServer管理,一个RegionServer可以管理多个Region。
  • RgionServer管理100-1000个region比较合适。 Region的大小一般在1-20GB

四、Rowkey 设计原则

  • 长度原则
    • Rowkey最大长度为64kb,设计的时候越短越好,最好是不要超过16个字节
    • 数据的持久化文件HFile是按照key/value的形式存储的,Rowkey过长会影响HFile的存储效率
    • Rowkey过长,会占用更多的内存,内存的有效利用率会变低,影响查询效率
  • 散列原则
    • HBase 按照升序排序,如果同一类型的数据(如时间)在一起,在查询的时候,大量的client会直接访问集群的一个或极少数的节点,如果超出了该节点的最大承受能力会导致性能下降甚至region不可用
    • 数据存储的时候不要按照时间戳存储,最好是在高位存储随机数(可以定义个固定的函数,这样方便重新构建完整的Rowkey)
  • 唯一原则
    • Rowkey设计必须保证唯一性

五、HBase 表设计建议

  • 列族名尽可能的小,因为存储时,每列都会带上列族名,过长的列族名会浪费更多的存储空间。可以选择牺牲可读性,比如设置一到两个字符作为列族名
  • 列名尽可能的小
  • 不要在一个表里定义太多的column family。最好是只定义一个column family
  • 预分区+随机散列,让数据均匀分布在集群中,避免热点问题的发生,能够充分发挥分布式系统的性能

六、HBase shell

1. 创建表
> create 'NewsHK',  {NAME=>'news'}, {NAME=>'visit'}
> create 'news_rowkey_record',  {NAME=>'rowkey_info'} 
2.查看所有表
> list
3.查看表描述
> describe 'NewsHK'
4. scan浏览表中数据
> scan 'NewsHK'
5.删除一个列族:需要先将表disable,否则无法进行操作
> disable 'NewsHK'
> is_enabled 'NewsHK'     #查看下是否成功
> alter 'NewsHK',{NAME=>'visit',METHOD=>'delete'}
> enable 'NewsHK'
6.插入记录
> put 'NewsHK','rowkey001','news:title','value'
> put 'NewsHK','rowkey001','news:text','value'
7.get 获取数据
根据rowkey获取一行数据
> get 'NewsHK','rowkey001‘
获取某rowkey的一个列族的数据
> get 'NewsHK','rowkey001','news'
获取rowkey的一个列族的某个字段
> get 'NewsHK','rowkey001','news:title' 
通过timestamp来获取两个版本的数据
> get 'NewsHK','rowkey001',{COLUMN=>'news:title',TIMESTAMP=>1471282238461}
8. scan的形式获取数据
> scan 'NewsStream',{LIMIT=>1,REVERSED=>true}
> scan 'NewsStream',{LIMIT=>1,STARTROW=>'2017-04-16',ENDROW=>'2017-04-17'}
> scan 'puc_weibo',{LIMIT=>10,STARTROW=>'2017-01-01',COLUMN=>'weiboinfo:sentiment'}
9. 更新数据,直接覆盖即可,如果字段不存在会新增字段,所以注意大小写,否则容易出现脏数据
> put 'NewsHK','rowkey001','news:title' ,'value1'
10. 查询表中有多少行
> count 'NewsHK'  
11. 删除整行
> deleteall 'NewsHK','rowkey001'
12. 删除字段
> delete 'NewsHK','rowkey001','news:title'
13.将整张表清空:
> truncate 'NewsHK'
14.删除表
> disable 'NewsHK'
> drop 'NewsHK'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容