大数据流式处理一个不能忽视的问题

我的上一篇BLOG《大数据处理的两种模式》,谈了大数据基于内存的流式处理和基于硬盘的存储处理。比较这两种处理模式,因为内存的处理性能是硬盘的N个量级,所以流式处理效率要远远高于存储处理,但是流式处理本身有一个缺点,或者说是隐忧,上次没有提到,今天来说一下。

这要从数据处理的基本面:内存、存储、数据谈起。

大家都知道,一个大数据集群是由很多台计算机连上网络组成的。计算机里面都有CPU、内存、硬盘,计算机通过网络交换数据执行分布计算工作。集群会按照规则,同时运行着一批执行不同工作的分布计算任务,每次分布计算任务处理的数据容量也不尽相同,少的几十几百M,多的几十几百G,更大的有时候会达到TB的规模(我们在各地部署的Laxcus集群时常处理TB级的数据)。如果当集群中某个时刻迸发出一个超大数据容量的计算任务,这些数据要分散到不同的计算机上去执行计算工作,这个总的数据容量超过集群的内存容量的时候,怎么办?

在存储模式下,这个问题很容易解决:拿硬盘来做缓存过渡。数据进来,检查一下它的尺寸,如果太大,或者一时半会儿处理过不来,就先放到硬盘保存起来。毕竟现在硬盘都已经做到TB级,不差钱的话,一台计算机还可以多配几个。能够利用的存储空间比内存大得多。

放到了流式处理模式下,这个问题就纠结了。如果数据进入后硬盘再处理,就和存储模式没啥区别了。如果不是这样,数据就会太多而内存不足,内存就要溢出,数据就要丢失。集群里任何一台计算机出现这样的故障,整个分布计算任务就是失败。

缓解这个问题的一个办法是升级计算机,CPU换成64位的,然后装更多的内存。原因是32位计算机内存上限是4G,一个集群里,如果都是32位计算机,同时出现几个TB计算任务,那得要多少台计算机?64位计算机可以装更多内存,这样计算机数量可以少些。还顺带提醒一下,虽然内存的价格现在比以前是大大便宜了,但是和硬盘相比,单位容量还是贵得多!这样的成本问题一般运营商会比较在意。另外,这只是暂时的解决办法,谁也不知道下一次的超大数据计算任务啥时候发生,和同时会有几个这样的超大计算任务发生。

比较靠谱的解决办法是在任务计算前,在数据量和集群内存之间做一个评估。当计算任务进来的时候,判断一下它携带数据的最大尺寸,如果集群的内存足够,就把这些内存"预分配"给这个计算任务(这个工作要细划到每一台计算机)。如果不够,就让它等着,直到其它计算任务完成工作,内存被回收,新的内存足够时,才放它执行工作。第二种办法和存储模式差不多,数据先放在硬盘里存着,然后也是等到内存足够了,再执行它的工作。当然,这两种办法都会降低流式处理的计算效率,但也是没有办法的办法,总比出现内存溢出、计算任务失败这样的故障好吧。

综上所述,流式处理是一种成本和效费比都高的计算模式。如果你是土豪,像BAT一样,有足够的银子,只关注数据处理的高性能,不在乎往基础设施上多撒几个钱,尽可以配上强劲的CPU、超大的内存和硬盘或者固态盘,万兆的光纤网络,这时候加上流式处理是上选。如果你是一穷人,缺银子,计算机的性能差,手上一把的32位老式计算机(我们有一个Laxcus集群现在还在用PentiumIII图拉丁芯片,就因为这家伙省电,老而弥坚!),内存有限,网络也不咋的,掏不起太多的电费,不计较数据计算的快和慢,那么凑合凑合,还是考虑存储模式吧。

时间: 2024-10-07 01:11:35

大数据流式处理一个不能忽视的问题的相关文章

大数据流式计算:关键技术及系统实例

孙大为1, 张广艳1,2, 郑纬民1 摘要:大数据计算主要有批量计算和流式计算两种形态,目前,关于大数据批量计算系统的研究和讨论相对充分,而如何构建低延迟.高吞吐且持续可靠运行的大数据流式计算系统是当前亟待解决的问题且研究成果和实践经验相对较少.总结了典型应用领域中流式大数据所呈现出的实时性.易失性.突发性.无序性.无限性等特征,给出了理想的大数据流式计算系统在系统结构.数据传输.应用接口.高可用技术等方面应该具有的关键技术特征,论述并对比了已有的大数据流式计算系统的典型实例,最后阐述了大数据流

大数据流式处理的利与弊

Laxcus大数据管理系统2.0版本推出有两个多月了,最近做了一次使用情况调查,发现最受欢迎的竟是流式处理.这大大出乎我们推出新版本时的预料.因为当时新版本推出时,流式处理只是做为磁盘数据处理的一项辅助功能而附带提供的,而且最初设计流式处理时,技术上也并没有花太多心思,因为它很容易实现,只是改变一下数据处理流经的路线而已.不过现在想想,再看看当下SPARK火热的情况,流式处理大热也就不奇怪了,毕竟更多更快更强的大数据处理效果是大家共同追求的目标.举一个例子,我们一个合作伙伴,原来做一次大数据计算

实时数据流式分析改变商业游戏规则

近些年,大数据流式处理的讨论热了起来,就在去年,阿里巴巴向apache基金会贡献了java语言版的Jstorm,国内的厂商或个人,随着技术的积累,正在逐步的加入这场世界变革当中.那么,为什么现在企业会越来越关注大数据的流式处理呢?仅仅对大容量的离线数据分析挖掘,已经逐渐满足不了企业不断增长的需求,新的技术和理论必将应运而生. 大容量的数据必须能够被极快速的处理,从而让企业的决策者能够迅速的根据市场变化而改变战略,这将成为未来商业,在满足客户不断延伸的需求,提供差异化服务的阿喀琉斯之踵.类似的需求

处理大数据流常用的三种Apache框架:Storm、Spark和Samza。(主要介绍Storm)

处理实时的大数据流最常用的就是分布式计算系统,下面分别介绍Apache中处理大数据流的三大框架: Apache Storm     这是一个分布式实时大数据处理系统.Storm设计用于在容错和水平可扩展方法中处理大量数据.他是一个流数据框架,具有最高的社区率.虽然Storm是无状态的,它通过ApacheZooKeeper管理分布式环境和鸡群状态.使用起来非常简单,并且还支持并行地对实时数据执行各种操作. Apache Storm继续成为实时数据分析的领导者是因为它的易于操作和设置,并且它保证每个

JSP页面以及JSP九大隐式对象

?JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. ?JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据. ?Jsp快速入门:在jsp页面中输出当前时间. ?JSP模版元素 ?JSP表达式 ?JSP脚本片断 ?JSP注释 ?JSP指令 ?JSP标签 ?JSP内置对象 ?如何查找JSP页面中的错误

JSP九大隐式对象

1.jsp的九大隐式对象 request HttpServletRequest response HttpServletResponse session HttpSession application ServletcContext config   ServletConfig exception (特殊情况下使用) page     this(本JSP页面) out       JspWriter(带缓冲的PrintWriter) pageContext (使普通Java类可访问WEB资源,自

十大响应式Web设计框架

http://www.csdn.net/article/2014-05-13/2819739-responsive-frameworks-for-web-design 对于设计师而言,网站设计中的任意一环节都不容忽视.时下,借助网上的一些资源,只需简单的几个步骤你就可创建出更具吸引力的设计,包括菜单.背景.动画.眉头.body等设计.响应式Web设计不仅能够适用于任何屏幕尺寸,还为用户带来更完美的体验,本文将分享十款最佳的响应式Web设计,助你大大简化工作流程. Gumby Framework

JSP_九大隐式对象

JSP九大隐式对象:在翻译过来的Servlet中Service方法自动帮我们前置定义的九个对象,可以在jsp页面中直接使用 page confing application response request session out exception pageContext out 相当于是response.getWriter得到PrintWriter out和response.getWriter获取到的流不同在于,在于这个out对象本身就具有一个缓冲区.利用out写出的内容,会先缓冲在out缓

JSP--JSP语法--指令---九大隐式对象--四大域对象--JSP内置标签--JavaBean的动作元素--MVC三层架构

一.JSP 原理:JSP其实就是一个servlet. Servlet负责业务逻辑处理,JSP只负责显示.开发中,JSP中不能有一行JAVA代码 二.JSP语法 1. JSP模板元素:JSP中HTML标签及文本 2. 脚本:写JAVA代码,<% %> 3. 表达式:用于输出变量及表达式,<%= %> 4. 注释:分为三种 a) <!-- --> :JSP翻译成Servlet时也将进行翻译.页面中也有. b) <% /*.......*/ %>:JSP翻译成Se