淘宝在2011年之前所有的后端持久化存储基本上与我们所认知的意义,  大量存于 mysql 。少量 oracle mongdb 等,使用mysql 的原因相信各位也很熟悉了。  开源、社区庞大、解决方案多种、分库分表做超过超过 500W 数据的扩容、再到读写分离、再到专用图片服务器、再到专业后端缓存系统、二级缓存等等。 但是由于业务的发展。产生了如下变化:

1 数据量越来越大,用户的激增从千万级别到亿级别,每日调用从亿级到百亿级。历史数据的海量存储问题。 TB PB 的数据时代来临。(HBase)

2 数据增长快。  数据量仍然在每天成阶梯式上涨。 查询性能及水平扩展有强烈的需求。(一次写入多次读取)

3 简单的 KV 存储、系统的并发能力以及吞吐量和最终强一致性。(KV 存储,ZK 强一致)

4 系统写入频繁,尤其是大量系统依赖于实时的日志分析。(HDFS 'LSM tree'、 HBase、Strom,kafka)

5 且查询刚刚录入的数据频繁(HBase MemStore)

6 数据分析,如双十一预测,优化运营手段 (漏斗模型)

7 良好的定义接口,灵活组件( java)

结合以上需求,HBase 成为首要选择(淘宝正在做 TBFS  原始打算用 Hadoop 临时顶替一下,结果用起来挺好用的。 希望 阿里 搞出国人的牛X 生态圈。= =! 事实上我也想去 阿里的大数据医疗 !)hdfs天然地做了数据冗余(高可用),以及海量扩容 HBase 单次写入 1~3ms 内。  且性能不会随着数据的增大而下降 (如传统B+、B* 树)。

灵活的 region = 数据库的分表。 而且可以达到毫秒级切分、移动。 定时的合并存储, hbase 内置的 负载均衡。 HBase 的数据模型利用 rowkey 排序,因此合理的设计可以一次IO 就得到 几十上百条用户所要的数据。而且源码 是JAVA 的。 JAVA 猿好多好多。无论是成本还是技术角度,更适合。

另外 HBase 的社区做的也很好,很多问题都有解决、有 taobao、facebook、yahoo 的大神研究发表技术改进等等。

  
HBase 不适合的场景 
1 大量无序的随机访问
2 事物要求高
3 经常多表查询(基本上可以靠设计解决,除非变态多关联)

----------------------------------------------------------------------------------------------------------------------

快照是什么?

快照就是一份元信息的合集,允许管理员恢复到表的先前状态。快照不是表的复制而是一个文件名称列表,因而不会复制数据。完全快照恢复是指恢复到之前的“表结构”以及当时的数据,快照之后发生的数据不会恢复。

HBase 快照介绍

在 HBase 0.90(大概是)之前,唯一能够备份或克隆表的方法就是使用复制/导出表或者在关闭表之后拷贝HDFS中所有的hfile。复制/导出是通过一系列工具调用 MapReduce 来扫描并复制表,这样会对域服务器的效率有直接的影响。关闭表会停止所有的读写操作,实际环境中往往无法接受。

相比之下HBase快照允许管理员不拷贝数据直接克隆一张表,这对域服务器产生的影响最小。将快照导出至其他集群不会直接影响到任何域服务器;导出只是带有一些额外逻辑的群间数据同步。

HBase Snapshots允许你对一个表进行快照(即可用副本),它不会对Region Servers产生很大的影响,它进行复制和 恢复操作的时候不包括数据拷贝。导出快照到另外的集群也不会对Region Servers产生影响。 下面告诉你如何使用Snapshots功能

1.开启快照支持功能,在0.95+之后的版本都是默认开启的,在0.94.6+是默认关闭

<property><name>hbase.snapshot.enabled</name><value>true</value></property>

2.给表建立快照,不管表是启用或者禁用状态,这个操作不会进行数据拷贝

$ ./bin/hbase shell 
hbase> snapshot 'myTable', 'myTableSnapshot-122112'

3.列出已经存在的快照

$ ./bin/hbase shell
hbase> list_snapshots

4.删除快照

$ ./bin/hbase shell
hbase> delete_snapshot 'myTableSnapshot-122112'

5.从快照复制生成一个新表

$ ./bin/hbase shell
hbase> clone_snapshot 'myTableSnapshot-122112', 'myNewTestTable'

6.用快照恢复数据,它需要先禁用表,再进行恢复

$ ./bin/hbase shell
hbase> disable 'myTable'
hbase> restore_snapshot 'myTableSnapshot-122112'

提示:因为备份(replication)是系统日志级别的,而快照是文件系统级别的,当使用快照恢复之后,副本会和master出于不同的状态,如果你需要使用恢复的话,你要停止备份,并且重置bootstrap。

如果是因为不正确的客户端行为导致数据丢失,全表恢复又需要表被禁用,可以采用快照生成一个新表,然后从新表中把需要的数据用map-reduce拷贝到主表当中。

7.复制到别的集群当中

该操作要用hbase的账户执行,并且在hdfs当中要有hbase的账户建立的临时目录(hbase.tmp.dir参数控制)

采用16个mappers来把一个名为MySnapshot的快照复制到一个名为srv2的集群当中

$ bin/hbase class org.apache.hadoop.hbase.snapshot.tool.ExportSnapshot -snapshot MySnapshot -copy-to hdfs://srv2:8020/hbase -mappers 16

HBase快照、Snapshots 淘宝快照的更多相关文章

  1. 淘宝在hbase中的应用和优化

    本文来自于NoSQLFan联合作者@koven2049,他在淘宝从事Hadoop及HBase相关的应用和优化. 对Hadoop.HBase都有深入的了解,本文就是其在工作中对HBase的应用优化小结, ...

  2. 淘宝可伸缩高性能互联网架构HSF(转)

    文章转自http://blog.csdn.net/hpf911/article/details/14165865 时间过得很快,来淘宝已经两个月了,在这两个月的时间里,自己也感受颇深.下面就结合淘宝目 ...

  3. Web——在淘宝搜索到看到商品

    [摘自]http://blog.renren.com/blog/254459622/799372165 浏览器首先查询DNS服务器,将www.taobao.com转换成ip地址.负载均衡的第一步,将你 ...

  4. 揭秘淘宝自主研发的文件系统:TFS

    目前,国内自主研发的文件系统可谓凤毛麟角.淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优 ...

  5. Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享

    Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享 支付宝十年账单上的数字有点吓人,但它统计的项目太多,只是想看看到底单纯在淘宝上支出了多少,于是写了段脚本,统计任意时间段淘宝订单的消费情况,看 ...

  6. 淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道

    时至今日,“Big data”(大数据)时代的来临已经毋庸置疑,尤其是在电信.金融等行业,几乎已经到了“数据就是业务本身”的地步.这种趋势已经让很多相信数据之力量的企业做出改变.恰逢此时,为了让更多的 ...

  7. 淘宝主搜索离线集群完成Hadoop 2

    淘宝搜索离线dump集群(hadoop&hbase)2013进行了几次重大升级,本文中将这些升级的详细过程.升级中所遇到的问题以及这些问题的解决方案分享给大家.至此,淘宝主搜索离线集群完全进入 ...

  8. 从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构) (转)

    转自:http://blog.csdn.net/v_july_v/article/details/6704077 从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到 ...

  9. 从Hadoop骨架MapReduce在海量数据处理模式(包括淘宝技术架构)

    从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,认为它们非常是神奇.而神奇的东西常能勾 ...

随机推荐

  1. 关于exsi的虚拟网络

    相关术语: VM Network 默认的网络 VSwitch   (默认)标准交换机 (exsi的内核中) Port groups  (用来定义各个不同vlan) DVSwitch分布式交换机(exs ...

  2. 用AI识别内部人威胁面临的道德规范

    用AI识别内部人威胁面临的道德规范 还记得汤姆·克鲁斯的<少数派报告>吗?人工智能可识别昭示未来风险的员工行为.该如何有效且有道德地使用这一数据呢? 为保护公司网络不受恶意软件.数据渗漏和 ...

  3. 洛谷 P1967 货车运输 LCA + 最小生成树

    两点之间边权最大值的最小值一定在图的最小生成树中取到. 求出最小生成树,进行倍增即可. Code: #include<cstdio> #include<algorithm> u ...

  4. (2016北京集训十四)【xsy1556】股神小D - LCT

    题解: 题解居然是LCT……受教了 把所有区间按照端点排序,动态维护目前有重叠的区间,用LCT维护即可. 代码: #include<algorithm> #include<iostr ...

  5. js递归获取html页面所有标签

    js原生递归获取,直接源码 : <script> var child = document.children; var arr = [];//用来存放获取到的所有的标签 function ...

  6. Qt 3D教程(二)初步显示3D的内容

    Qt3D教程(二)初步显示3D的内容 前一篇很easy,全然就没有牵涉到3D的内容,它仅仅是我们搭建3D应用的基本框架而已,而这一篇.我们将要利用它来初步地显示3D的内容了! 本次目的是将程序中间的内 ...

  7. libevent的使用(socket)

    这篇文章介绍下libevent在socket异步编程中的应用.在一些对性能要求较高的网络应用程序中,为了防止程序堵塞在socket I/O操作上造成程序性能的下降,须要使用异步编程,即程序准备好读写的 ...

  8. JAVA:从public static void main(String args[])開始

    我们都知道当你要执行一个JAVA文件的时候必需要有一个main函数. 这是为什么呢? 跟C语言的道理一样,当你执行一个文件的时候.你必需要有一个入口函数或者入口地址,在C里面是main函数.相同的在J ...

  9. ACM:动态规划,01背包问题

    题目: 有n件物品和一个容量为C的背包.(每种物品均仅仅有一件)第i件物品的体积是v[i],重量是w[i].选一些物品装到这个背包中,使得背包内物品在整体积不超过C的前提下重量尽量大. 解法:两种思路 ...

  10. 第十六周项目3:max带来的冲突

    问题及代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名:project.cpp *作 者:陈文青 *完毕日期:20 ...