对互联网海量数据实时计算的理解

2019-03-02 23:44|来源: 网路

1. 实时计算的概念

互联网领域的实时计算一般都是针对海量数据进行的,除了像非实时计算的需求(如计算结果准确)以外,实时计算最重要的一个需求是能够实时响应计算结果,一般要求为秒级。个人理解,互联网行业的实时计算可以分为以下两种应用场景:

1)  数据源是实时的不间断的,要求对用户的响应时间也是实时的。

主要用于互联网流式数据处理。所谓流式数据是指将数据看作是数据流的形式来处理。数据流则是在时间分布和数量上无限的一系列数据记录的集合体;数据记录是数据流的最小组成单元。举个例子,对于大型网站,活跃的流式数据非常常见,这些数据包括网站的访问PV/UV、用户访问了什么内容,搜索了什么内容等。实时的数据计算和分析可以动态实时地刷新用户访问数据,展示网站实时流量的变化情况,分析每天各小时的流量和用户分布情况,这对于大型网站来说具有重要的实际意义。

2)  数据量大且无法或没必要预算,但要求对用户的响应时间是实时的。

主要用于特定场合下的数据分析处理。当数据量很大,同时发现无法穷举所有可能条件的查询组合或者大量穷举出来的条件组合无用的时候,实时计算就可以发挥作用,将计算过程推迟到查询阶段进行,但需要为用户提供实时响应[参考链接]。

2. 实时计算相关技术

互联网上海量数据(一般为日志流)的实时计算过程可以被划分为以下三个阶段:数据的产生与收集阶段、传输与分析处理阶段、存储对对外提供服务阶段。下面分别进行简单的介绍:

2.1 数据实时采集

需求:功能上保证可以完整的收集到所有日志数据,为实时应用提供实时数据;响应时间上要保证实时性、低延迟在1秒左右;配置简单,部署容易;系统稳定可靠等。

目前,互联网企业的海量数据采集工具,有Facebook开源的Scribe、LinkedIn开源的Kafka、Cloudera开源的Flume,淘宝开源的TimeTunnel、Hadoop的Chukwa等,均可以满足每秒数百MB的日志数据采集和传输需求。

2.2 数据实时计算

传统的数据操作,首先将数据采集并存储在DBMS中,然后通过query和DBMS进行交互,得到用户想要的答案。整个过程中,用户是主动的,而DBMS系统是被动的。

但是,对于现在大量存在的实时数据,比如股票交易的数据,这类数据实时性强,数据量大,没有止境,传统的架构并不合适。流计算就是专门针对这种数据类型准备的。在流数据不断变化的运动过程中实时地进行分析,捕捉到可能对用户有用的信息,并把结果发送出去。整个过程中,数据分析处理系统是主动的,而用户却是处于被动接收的状态。

需求:适应流式数据、不间断查询;系统稳定可靠、可扩展性好、可维护性好等。

实时流计算框架:Yahoo开源的S4、Twitter开源的Storm,还有EsperStreambaseHStreaming等。

有关计算的一些注意点:分布式计算,并行计算(节点间的并行、节点内的并行),热点数据的缓存策略,服务端计算。

2.3 实时查询服务

全内存:直接提供数据读取服务,定期dump到磁盘或数据库进行持久化。

半内存:使用Redis、Memcache、MongoDB、BerkeleyDB等内存数据库提供数据实时查询服务,由这些系统进行持久化操作。

全磁盘:使用HBase等以分布式文件系统(HDFS)为基础的NoSQL数据库,对于key-value引擎,关键是设计好key的分布。

3. 应用举例

对于电子商务网站上的店铺:

1)实时展示一个店铺的到访顾客流水信息,包括访问时间、访客姓名、访客地理位置、访客IP、访客正在访问的页面等信息;

2)显示某个到访顾客的所有历史来访记录,同时实时跟踪显示某个访客在一个店铺正在访问的页面等信息;

3)支持根据访客地理位置、访问页面、访问时间等多种维度下的实时查询与分析。

更详细的内容,以后再进一步展开介绍。

4. 总结的话

1)并不是任何应用都做到实时计算才是最好的。

2)使用哪些技术和框架来搭建实时计算系统,需要根据实际业务需求进行选择。

3)对于分布式系统来说,系统的可配置性、可维护性、可扩展性十分重要,系统调优永无止境。

5. 参考链接

1)Scribe:https://github.com/facebook/scribe

2)Kafka:http://sna-projects.com/kafka/

3)Flume:https://github.com/cloudera/flume/

4)Chukwa:http://incubator.apache.org/chukwa/

5)TimeTunnel:http://code.taobao.org/p/TimeTunnel/

6)S4:http://s4.io

7)StreamBase:http://www.streambase.com

8)HStreaming:http://www.hstreaming.com/

9)Esper:http://esper.codehaus.org/

10)Storm:http://engineering.twitter.com/2011/08/storm-is-coming-more-details-and-plans.html


转自:http://www.cnblogs.com/panfeng412/archive/2011/10/28/realtime-computing-of-big-data

相关问答

更多
  • 如果有意愿加入的话 可以通过拨打该公司的招聘热线 进行相关资讯即可
  • 中国移动的信令平台也用了Hadoop技术。目前已经在江苏省上线的Mc+Abis口信令共享平台,就是由珠海世纪鼎利承建的基于Hadoop框架的云平台。 事实上,只要满足:海量数据、一次写入多次读取、非高实时性要求的场景,都适合用hadoop处理。
  • UBUNTU,宽带:如果用vmware的话首先要在虚拟机里选择桥接才可以,之后应该是右上角的网络图标,点击一下应该会出来提示。(如果虚拟机选择是nat联网,只要主机拨号就可以了) 建议你先把ubuntu的中文补丁打完。 VMware Network Adapter VMnet 的IP选择自动获取比较好。 想要虚拟机时间同步的话,需要在vmware-tools里面勾选与主题时间同步。 VM5.0好像不支持usb设备,建议你用新版的(中文有5.5.3,英文有5.5.9,你也可以选择6系列) VM有捕捉屏幕的功能 ...
  • 这是我早些时候做过的东西; 也许它会有所帮助: public class NetworkStateMonitor extends BroadcastReceiver { public interface Listener { void onNetworkStateChange(boolean up); } Context mContext; boolean mIsUp; public NetworkStateMonitor(C ...
  • 这些站点通过跟踪用户的数据收集行为来收集原始数据,并执行一些统计捏造以获得流量估算。 在Alexa的案例中,它收集了Alexa工具栏用户的数据 。 Compete也做同样的事情,但是有一个更大,更广泛定义的“面板”用户 。 These sites gather raw data by tracking behavior of their users for data-collection, and performing some statistical fudging to get traffic esti ...
  • 如果服务器确定发送图像的速度,这就是它的外观, 服务器推送式解决方案是有意义的。 大多数浏览器(甚至非浏览器)最近解决的是WebSockets 。 除了成为广泛采用的标准外,WebSockets对大多数专有协议的主要优势在于它们运行在HTTP之上,因此可以渗透(大多数)代理和防火墙等。 在服务器端,您可以集成node.js ,它允许您轻松实现WebSockets,并附带许多其他库。 它是用C ++编写的,可通过C ++和JavaScript进行扩展,node.js为其托管VM。 node.js的主要特性是在 ...
  • 您可以使用Firebase Cloud Message for android,请查看此页面: https://firebase.google.com/docs/ 和此链接: https : //firebase.google.com/docs/samples/ 你应该对实时数据库感兴趣 you can use Firebase Cloud Message for android, check this page: https://firebase.google.com/docs/ and this lin ...