HBase快照、Snapshots 淘宝快照
淘宝在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 淘宝快照的更多相关文章
- 淘宝在hbase中的应用和优化
本文来自于NoSQLFan联合作者@koven2049,他在淘宝从事Hadoop及HBase相关的应用和优化. 对Hadoop.HBase都有深入的了解,本文就是其在工作中对HBase的应用优化小结, ...
- 淘宝可伸缩高性能互联网架构HSF(转)
文章转自http://blog.csdn.net/hpf911/article/details/14165865 时间过得很快,来淘宝已经两个月了,在这两个月的时间里,自己也感受颇深.下面就结合淘宝目 ...
- Web——在淘宝搜索到看到商品
[摘自]http://blog.renren.com/blog/254459622/799372165 浏览器首先查询DNS服务器,将www.taobao.com转换成ip地址.负载均衡的第一步,将你 ...
- 揭秘淘宝自主研发的文件系统:TFS
目前,国内自主研发的文件系统可谓凤毛麟角.淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优 ...
- Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享 支付宝十年账单上的数字有点吓人,但它统计的项目太多,只是想看看到底单纯在淘宝上支出了多少,于是写了段脚本,统计任意时间段淘宝订单的消费情况,看 ...
- 淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道
时至今日,“Big data”(大数据)时代的来临已经毋庸置疑,尤其是在电信.金融等行业,几乎已经到了“数据就是业务本身”的地步.这种趋势已经让很多相信数据之力量的企业做出改变.恰逢此时,为了让更多的 ...
- 淘宝主搜索离线集群完成Hadoop 2
淘宝搜索离线dump集群(hadoop&hbase)2013进行了几次重大升级,本文中将这些升级的详细过程.升级中所遇到的问题以及这些问题的解决方案分享给大家.至此,淘宝主搜索离线集群完全进入 ...
- 从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构) (转)
转自:http://blog.csdn.net/v_july_v/article/details/6704077 从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到 ...
- 从Hadoop骨架MapReduce在海量数据处理模式(包括淘宝技术架构)
从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,认为它们非常是神奇.而神奇的东西常能勾 ...
随机推荐
- php计算两个日期相差的天数
/** * 时间差计算 * * @param Timestamp $time * @return String Time Elapsed */ function time2Units ($time,$ ...
- 3Ds Max制作克劳族少女教程
作者:Andrius Balciunas 使用软件:3ds Max, ZBrush 3ds Max下载:http://www.xy3dsmax.com/xiazai.html ZBrush下载:htt ...
- iF.svnadmin 安装遇到的坑
iF.svnadmin 官网:http://svnadmin.insanefactory.com/ 安装配置iF.svnadmin : http://blog.linhere.com/archives ...
- h5实现 微信的授权登录
本文重点 判断是不是微信环境 localstorage设置一个值 微信授权登录 获取一个时间戳 new Date().getTime() const wx = (function () { retur ...
- HDU-4221 Greedy? 贪心 从元素的相对位置开始考虑
题目链接:https://cn.vjudge.net/problem/HDU-4221 题意 给n个活动,每个活动需要一段时间C来完成,并且有一个截止时间D 当完成时间t大于截止时间完成时,会扣除t- ...
- HDU 1667 The Rotation Game (A*迭代搜索)
题目大意:略 每次选择一个最大深度K,跑IDA* 估价函数H=8-中间8个格里出现次数最多的数的个数x,即把它填满这个数最少需要8-x次操作,如果dep+H>K,就跳出.. 深搜的时候暴力修改, ...
- KVM 日常使用命令
[root@Eren liwm]# ps ax | grep kvm 681 ? S< 0:00 [kvm-irqfd-clean]17597 pts/0 S+ ...
- nginx编译支持HTTP2.0
nginx编译支持HTTP2.0 nginx编译支持HTTP2.0 wget https://www.openssl.org/source/openssl-1.1.0i.tar.gz #openssl ...
- hook中ref使用
hook使用ref 父组件: 引入 useRef 声明ref的名字 const dateRef = useRef() 复值给组件 ref={d ...
- BNUOJ 34990 Justice String
Justice String Time Limit: 2000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java cla ...