预测2015大数据趋势 星环孙元浩为你揭秘

怎么来处理实时数据和历史数据。Nathan提出了Lambda Architecture的架构。实时数据进入一个流处理系统进行检测分析,同时也进入Hadoop,全量数据放在Hadoop对历史数据进行分析,两者结果做融合,然后应用程序访问这个数据库做分析。今天为止没有哪个技术既能处理实时数据又能处理大量历史数据,所以Nathan提出了这样一个混合的架构,这个混合架构受到很多人的追捧。这种架构实时数据流里面处理完之后仍掉了,只把结果放在里面,也就是我不能对实时数据进行随机的查询,这是第一个问题。我把随时数据和历史数据分离后,我怎么形成统一的视图,怎么最后拼接起来,这是比较难的事情。第三个这个Serving DB可以完成快速查询但是不能做统计分析。这三个弱点很快大家意识到了,很快大家想出一个办法,有一个项目叫Druid,这个项目得到大家比较多的关注,现在Twitter和雅虎采用这种实时数据分析。Druid解决了两个问题,把实时数据和历史数据全部拼接起来变成一张视图,它内部把实时数据离线的收集起来拼成一个历史视图进行分析。Druid解决了快速采集和统一视图的问题,但是它还不能解决复杂统计和挖掘的问题。比较理想的架构最好是数据经过流处理以后直接进入一个数据库,这个数据库可以完整把实时数据和历史数据拼接起来,在上面既做高速查询又能做迭代分析,这是比较理想的,这样可以省去维护两套架构的麻烦,而且既能对实时数据进行分析,又能对历史数据进行分析,这是比较理想的架构,现在大家还在想有什么实现的方法。我们做了一个尝试,这是我们在应用大数据技术到国内各个行业的时候发现的普遍问题,这个驱动力来自于交通流的实时分析,如果我们部署整个集群的时候,他们希望看到早高峰晚高峰任何一个时刻每个路口的实时状况,一旦发生交通事故,某个地方产生拥堵会有连锁反应,产生连锁反应后需要快速分析这种情况的影响,这种情况用刚才的Lambda架构也不能很好实现。我们开发了分布式的缓存holodesk,存在内存或者是SSD上的,当实时数据流到里面去的时候,我们先用Spark Streaming进行实时检测和告警处理,这是一个批处理系统,可以短到一百毫秒,再小的延时现在还不能实现,Spark本身框架延时比较长。进入Spark内存以后同时我们在上面可以做非常多的实时的检测甚至是实时的挖掘,同时这个结果以及原有数据我们映射成二维关系表,做一个SQL转化,转化成一个历史存储。过去我们可以放在内存里,但是内存容量不够我们把全量数据放到SSD上,我们的holodesk支持快速插入,这样我可以把所有实时数据包括历史数据可以全部缓存到SSD上,这个集群可能是10个节点20个节点,你可以存放几年交通数据,这样可以对历史数据和实时数据进行很完整的分析。这个转化也是非常快的,我们支持高速的数据插入,数据持久性也得到保证,因为数据在SSD上,即使掉线也没有问题。这种方案解决了三个问题,第一个是可以有一个统一的视图,不管是历史还是实时都有,第二是可以通过标准SQL或者R语言做任意复杂的分析,第三是数据持久化问题也解决了。还有一个问题没有解决,如果把这个数据给在线用户访问,这个并发度还不够。改进的方法是一方面我们尽量降低查询的延时,另外我们也需要扩大集群规模来提高并发度。这个方案很好地解决了交通行业面临的问题。这个问题蛮普遍的,不光是交通行业,还有网站点击日志,我们也可以用这个方式做分析,我们可以对传感器的数据,例如工厂里传感器的数据进行快速的分析,而且传感器的数据可以全部在一张表里面。

第四随着虚拟化技术快速演进,我们说云计算和大数据终于可以融合起来了。

虚拟机帮助快速部署已经得到了时间的验证,这种方式把一台机器拆分到很多小机器,每台机器给用户使用。大数据觉得一台机器不够,我需要上千台、几百台机器组成一台机器处理。这个怎么融合起来,是不是我把虚拟机替代物理机做成了一个集群?这个尝试基本上都是失败的,因为IO的瓶颈是非常严重的,特别是在虚拟机跑大数据应用,CPU利用往往达到99%,很少有人在虚拟机上把CPU用到99%,这样对hypervisor是很大的考验,稳定性成为一个大问题。最近一两年虚拟化技术在快速发展,不亚于一场新的技术革命。首先轻量级的Linux container技术出现,container之间可以做资源隔离,这使得虚拟机变得非常轻量级。很快一家公司叫做Docker发现应用打包迁移安装还是不方便,所以做了一个工具,使得你做应用打包迁移非常容易。大家发现还不大够,因为我要创立单个container或者单个应用比较容易,但是多个container应用就很麻烦。谷歌开发一个开源项目叫做Kubernetes, 简化了创建container集群的任务,你可以非常方便的创建Hadoop集群,也可以创建传统的应用,提供多container集群的部署同时也提供一些基础服务,比如说一些调度服务,这开始具备分布式操作系统的雏形。另外一个方向像大数据领域去年推出Hadoop2.0资源管理的框架YARN,这个确实是革命性的,因为把资源管理放在最底层,在上面可以跑多种计算框架,我们觉得可以一统天下了。随后大家发现YARN资源隔离做得不够好,内存/磁盘/IO没有管好。因此Hortonworks尝试把Google Kubernetes作为YARN的一个Application Manager, 内部用Docker进行资源调度。而另一家公司mesosphere异军突起,以mesos为资源调度核心,以docker作为container的管理基础工具,开发了一套分布式资源管理的框架,提出了数据中心操作系统的概念。这家公司最近融资了数千万美元。尽管底层技术在快速变化,但不妨碍一些公司已经提供Hadoop as a Service的服务,例如AltiScale,BlueData,Xplenty等。