一、案例

微博:

微博内容:

关注用户和粉丝用户: 添加或移除关注用户

查看关注用户的微博内容

微博数据存储:

响应时间 秒级 无延迟

(1)mysql分布式

(2)hbase数据库

使用HBase数据库实现微博系统数据的存储

表的设计:

命名空间:weibo

1. 微博内容表

TableName: weibo:weibo-content

RowKey:用户ID_timestamp

列簇:cf

列标签: cf:content,cf:title,cf:photo

版本设计:只需要保留一个版本

2. 用户关系表

TableName: weibo:relations

rowkey: 用户iID

列簇:

attend 关注用户

fan 粉丝用户

列标签:使用用户ID作为列标签,值为用户ID

rowkey   attend          fan

0001       attend:0002=0002           fan:0004=0004

          attend:0003=0003           fan:0004=0004

版本设计:只需要保留一个版本

3. 用户微博内容接收邮件箱表

TableName: weibo:receive-content-email

Rowkey:用户ID

列簇:cf

列标签:

直接使用用户ID,vlaue值取微博内容的rowkey

版本设计:设置最大版本为1000

rowkey  cf

00001  cf:0002=0002_2132455

     cf:0002=0002_2132456

1)rowkey设计:

(1)唯一性

(2)长度: 最大64kb。rowkey是hbase中表数据冗余产生的因素

10~100 字节

最好 8字节 16字节 64位操作系统

(3)散列原则:

假如 时间戳_用户ID 作为rowkey

10亿用户同时发微博,

1456777_000001

1456778_000002

1456778_100000

问题: 集中到某个region,造成这单独几个region负载量偏大,而其他region完全没有负载

散列: 尽量将某一时刻内的数据均衡分散到所有Region中(大部分Region)中

热点现象:数据在某一个时刻集中存储到某一两个Region上

rowkey设计规范;

方便查询,尽可能讲查询字段放到rowkey,HBase根据rowkey查询速度是最快。

2)列簇设计:

HBase面向列簇存储

region起始rowkey --- 终止rowkey范围内一个列簇下的数据

hdfs上的一个文件

StoreFile === HFile

跨列簇查询,速度相对较慢

一般设计一到两个列簇

HBase中的缓存

memstore: 写缓存

blockcache:块缓存,读缓存

HBase表单元格版本号:插入数据的时候如果没有单独制定,系统默认使用时间戳作为版本号。也可以自己制定时间戳。

Get查询单行记录,Scan查询多行记录

《OD学HBase》20160820的更多相关文章

  1. 《OD学HBase》20160821

    一.HBase性能调优 1. JVM内存调优 MemStore内存空间,设置合理大小 memstore.flush.size 刷写大小 134217728 = 128M memstore.mslab. ...

  2. 《OD学HBase》20160814

    一.HBase引入 http://hbase.apache.org/ 大数据的数据库 1. 概述 Hadoop生态系统中的一个分布式.可拓展.面向列.可伸缩,具有自动容错功能的数据库. NoSQL数据 ...

  3. 《OD学hive》第四周0717

    一.Hive基本概念.安装部署与初步使用 1. 后续课程 Hive 项目:hadoop hive sqoop flume hbase 电商离线数据分析 CDH Storm:分布式实时计算框架 Spar ...

  4. 《OD学hadoop》20160903某旅游网项目实战

    一.大数据的落地点 1.数据出售 数据商城:以卖数据为公司的核心业务 2. 数据分析 百度统计 友盟 GA IBM analysis 3.搜索引擎 4. 推荐系统 mahout 百分比 5.精准营销 ...

  5. 《OD学Sqoop》数据转换工具Sqoop

    一. 第二阶段课程回顾 hadoop 2.x HDFS YARN MapReduce Zookeeper Hive 二.大数据协作框架 对日志类型的海量数据进行分析 hdfs mapreduce/hi ...

  6. 《OD学hadoop》第二周0702

    大数据离线计算hadoop2.x 三周(6天) markdown文本剪辑器 罗振宇--跨年演讲,时间的朋友 http://tech.163.com/16/0101/11/BC87H8DF000915B ...

  7. 《OD学hadoop》第一周0625

    一.实用网站 1. linux内核版本 www.kernel.org 2. 查看网站服务器使用的系统  www.netcraft.com 二.推荐书籍 1. <Hadoop权威指南> 1- ...

  8. 一起学HBase——总结HBase中的PUT、GET、DELETE操作

    传统的关系型数据库有CRUD增删改查操作,同样对于NoSQL列式数据库也有CRUD操作.本文对HBase中常用的Scan.GET.PUT.DELETE操作的用法做个总结. Put操作 Put相当于传统 ...

  9. 一起学HBase——简单介绍HBase各种组件

    HBase是谷歌BigTble的开源实现.谷歌的三篇论文拉开了大数据江湖的序幕,铸就了现在以Hadoop为主的大数据技术生态圈.而HBase是开源的大数据数据库,和传统的行式数据库不同的是,HBase ...

随机推荐

  1. A*(A星)算法Go lang实现

    之前发表一个A*的python实现,连接:点击打开链接 最近正在学习Go语言,基本的语法等东西已经掌握了.但是纸上得来终觉浅,绝知此事要躬行嘛.必要的练手是一定要做的.正好离写python版的A*不那 ...

  2. Metasploit Framework命令汇总

    一.msfconsole ? 帮助菜单back 从当前环境返回banner 显示一个MSF bannercd 切换目录color 颜色转换connect 连接一个主机exit 退出MSFhelp 帮助 ...

  3. 定时器 corn 表达式

    一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素.按顺序依次为1.秒(0~59)2.分钟(0~59)3.小时(0~23)4.天(月)(0~31,但是你需要考虑你月的天数)5.月(0~11 ...

  4. 从底层理解Python的执行

    摘要:是否想在Python解释器的内部晃悠一圈?是不是想实现一个Python代码执行的追踪器?没有基础?不要怕,这篇文章让你初窥Python底层的奥妙. [编者按]下面博文将带你创建一个字节码级别的追 ...

  5. JavaScript语言基础知识点图示(转)

    一位牛人归纳的JavaScript 语言基础知识点图示. 1.JavaScript 数据类型 2.JavaScript 变量 3.Javascript 运算符 4.JavaScript 数组 5.Ja ...

  6. POJ 1986 Distance Queries (最近公共祖先,tarjan)

    本题目输入格式同1984,这里的数据范围坑死我了!!!1984上的题目说边数m的范围40000,因为双向边,我开了80000+的大小,却RE.后来果断尝试下开了400000的大小,AC.题意:给出n个 ...

  7. iOS-CoreImage简单使用

    CoreImage是一个图像框架,它基于OpenGL顶层创建,底层则用着色器来处理图像,这意味着它利用了GPU基于硬件加速来处理图像. CoreImage中有很多滤镜,它们能够一次给予一张图像或者视频 ...

  8. LoaderManager使用详解(二)---了解LoaderManager

    了解LoaderManager   这篇文章将介绍LoaderManager类,这是该系列的第二篇文章. 一:Loaders之前世界 二:了解LoaderManager 三:实现Loaders 四:实 ...

  9. 神器——Chrome开发者工具(一)

    这里我假设你用的是Chrome浏览器,如果恰好你做web开发,或者是比较好奇网页中的一些渲染效果并且喜欢折腾,那么你一定知道Chrome的开发者工具了.其实其他浏览器也有类似工具,比如Firefox下 ...

  10. BZOJ 1452: [JSOI2009]Count 二维树状数组

    1452: [JSOI2009]Count Description Input Output Sample Input Sample Output 1 2 HINT Source 题解:设定C[101 ...