【IT168 应用】全球数据的海量剧增俨然是一个不争的事实。移动互联网的兴起,尤其是智能移动终端的广泛普及使得企业数据与日俱增,在这其中,互联网行业是首先受到海量数据冲击的行业之一。很多依赖于互联网的企业不得不着手解决由海量大数据引发的一系列问题。大数据的问题的产生使得开源的大数据分析工具——Hadoop成为各饱受海量数据困扰企业的热门工具。但面对这一新兴的分析工具,我们应该怎样去正确应用呢?电子商务网站的领头羊淘宝的经验也许可以给我们提供一些参考。
淘宝邓明鉴
在谈到淘宝为什么会选择Hadoop,或者说今天的主题——HBase时,邓明鉴说,之所以选择HBase的最为主要的原因就是为了解决海量数据所产生的难题,而HBase在这方面有着巨大的优势。他说,如果你所在的企业面临以下问题时,你也可以考虑选择HBase。如数据量急剧增加,需要TB级甚至PB级的在线服务;数据量增长速度快,对水平扩展能力有需求,前期少量投入,随着数据量的不断增加,后期可以不断追加;只是简单的kv读写,要求响应延时低;要求强一致性;每秒上万的写入,并且需要批量读取,大量的随机读取,需要大吞吐量;应用程序不断变更,导致schema多变;最后一个则是整个平台是一个Java平台,需要良好的Java接口等等。而HBase无疑很好地满足了这些特点。
在邓明鉴看来,HBase的优势主要有以下几点,即具备水平线性扩展能力;强一致性读写能力;原子和可分配地切分表,并且在未来版本中极有可能提供可分配地合并表功能;具有自动容错能力,在遭遇宕机之后,应用可迅速切换;可满足实时读写响应,I/O吞吐量大;容易使用的Java API;方便地运行MapReduce以及可扩展的thrif/rest/avrol接口等等。
尽管HBase有着诸多的优点,但邓明鉴同时提醒到,HBase仍然存在一些不足,如在索引方面,其暂时只提供主索引,而没有二级索引;另外一个值得注意的是,虽然HBase里的数据都是存储在三台服务器以上,数据安全有保障,没有数据单点,但这并不意味着没有服务单点,也就是说数据安全,但是服务有可能会中断,通常遭遇服务单点的话,其服务不可用都存在较长时间,目前淘宝通过对其进行优化,将服务不可用时间缩减到了1-2分钟之内;另外还需要注意的是namenode单点和难以实现真正的服务等不足。
现在的HBase发展非常迅速,版本更新较为频繁,那么该如何去选择一个适合的版本呢?邓明鉴认为,目前较为成熟的HBase版本为0.90版本,已经有很多企业在使用这一版本,应用已经较为成熟,但是目前的更新频率较低,很多新的功能并不在这一版本上发布。在这个版本之后的0.92版本也是一个不错的版本,其增加了协处理器,可以实现真正的分析,并且是子表的容量更多,从原来的GB级增大到了现在最大2TB。至于最新发布的0.94版本则代码变更不大,这主要是Facebook贡献的版本,并不一定适合所有的企业。目前在淘宝应用的较多的是0.90版本,同时也应用了很大部分的0.92版本,0.96版本则处于测试阶段。
淘宝在2011年3月时就开始研究HBase,并在5月上线了第一个应用。目前已上线有二十几个应用,集群约15个,有超过300服务器用于Hbase之中。其所能提供的tps高峰值约在12万以上,已用使用容量超过300TB。这些还远远不过,据邓明鉴透露,HBase服务器还在持续增加之中,预计在2012年会翻番。另外处理应用于在线服务的300多台服务器意外,离线应用还约有300服务器。淘宝中的HBase在线应用状态较好,稳定性有一定保障,达到了生产标准,最近8个月无数据丢失情况。
目前HBase在淘宝主要应用在cube、timetunel、实时计算与实时推荐、历史交易订单以及notify日志等典型应用之中。