DataTorrent是一个实时的流式处理和分析平台,它每秒可以处理超过10亿个实时事件。

Twitter平均每秒大约6000条微博相比,最近发布的DataTorrent 1.0似乎已经超出了需求,它每秒可以处理超过10亿个实时事件。他们在一个包含37个节点的集群上进行了测试,每个节点256GB内存、12核超线程CPU。在CPU达到饱和之前,DataTorrent声称已经实现了线性扩展,而CPU达到饱和时处理速度为每秒16亿个事件。Phu Hoang是DataTorrent的联合创始人和CEO,他告诉InfoQ,在同样的硬件上,他们的解决方案在性能上比Apache Spark要高“好几个数量级”。

DataTorrent基于Hadoop 2.x构建,是一个实时的、有容错能力的数据流式处理和分析平台,它使用本地Hadoop应用程序,而这些应用程序可以与执行其它任务,如批处理,的应用程序共存。该平台的架构如下图所示:

StrAM(Streaming Application Master)是一个本地的YARN Application Master,负责管理将要在Hadoop集群上执行的逻辑DAG(Directed Acyclic Graph),包括资源分配、分区、扩展、调度、Web服务、运行时更改、统计、SLA执行、安全等等。

在架构示意图的上层,用户应用程序作为已连接的算子和/或应用程序模板存在。算子的示例有InputReceiver(模拟接收输入数据)、Average(针对指定维度的键计算数据平均值)、RedisAverageOutput(将计算好的平均值写入Redis数据存储)、SmtpAvgOperator(发送电子邮件警报)。这些算子是Malhar库的一部分,该库包含了超过400个这样的算子,并在GitHub上开源。用户可以根据需要编写其它算子。

我们问Hoang,是什么使DataTorrent比Spark更快:

PHDataTorrent侧重于使企业能够通过流式处理实时采取行动,而Spark希望使Spark引擎适用于处理连续事件流,这就在架构上产生了两个重要的区别。性能和有状态的容错能力是两个重点关注的方面。

  1. 性能——作为一个本地Hadoop 2.0产品,DataTorrent RTS从头开始设计和构建,它关注性能和高可用性,并最终实现了以亚秒级延时逐个处理事件。DataTorrent RTS在启动时就将应用程序调度到Hadoop容器中,如果应用程序不需要更改,映射就固定不变,这样就不会引入任何调度开销。另一方面,Spark基于Hadoop 2.0之前的版本构建,它利用Spark引擎以小批量或“迷你批量”高效地运行许多“map reduce”作业。这种设计策略要求现在的Spark(通过Application Master)必须将每个最小批调度到集群上,这意味着巨大的开销,降低了系统速度。
  2. 有状态的容错能力——按照设计,DataTorrent RTS能够进行复杂的、有状态的高性能计算,并具有容错能力。这是企业的一项关键需求,在不丢失任何数据、任何状态的情况下从故障中恢复,这是一项必备的能力。这里,DataTorrent RTS的设计中心是使用Java编程以及为企业开发人员/ISV解除容错能力设计的“负担”(也就是说,由DataTorrent RTS为开发人员处理)。Spark确实也提供了容错能力,但只针对无状态处理。Spark的设计中心是使用函数式语言Scala,处理连续事件流的算子是无状态的。如果企业想向Spark添加有状态的处理,他们需要将那部分代码作为应用程序的一部分进行编写,这很难,而且会影响性能。

据Hoang说,经验证,DataTorrent适用于“所有主要的Hadoop分发,既包括本地部署,也包括基于云的部署(前者如Cloudera、Hortonworks、MapR,后者如Amazon AWS和Google Cloud),这赋予了企业灵活性,使他们既可以更换Hadoop供应商,也可以无障碍地更改部署选项。”

虽然DataTorrent是一款商业应用程序,但它也带来了一个包含所有功能的免费层级,可以用于中小型应用程序。

转 DataTorrent 1.0每秒处理超过10亿个实时事件的更多相关文章

  1. 看好腾讯,鄙视百度(腾讯的核心竞争力,不是超过10亿的QQ的注册用户,也不是某一项产品、技术方面优势,而是“耐心”:懂得在合适的时间推出合适的产品。”)

    百度,自始至终只是一个低劣的模仿者,且一切向前看,完全违背了一个搜索引擎所应该遵循的基本原则.谁给的钱多就能搜着谁,这跟贩毒有什么区别? 腾讯也在模仿别人,但是,它是模仿然后超越.在中国互联网发展历史 ...

  2. 云计算之路-阿里云上:基于Xen的IO模型进一步分析“黑色0.1秒”问题

    在发现云服务器读取OCS缓存的“黑色0.1秒”是发生在socket读取数据时,而且是发生在读取开始的字节,甚至在socket写数据时(比如写入缓存key)也会出现超过50ms的情况,我们的好奇心被激发 ...

  3. 云计算之路-阿里云上:原来“黑色0.1秒”发生在socket读取数据时

    在昨天的博文(云计算之路-阿里云上:读取缓存时的“黑色0.1秒”)中我们犯了一个很低级的错误——把13ms算成了130ms(感谢陈硕发现这个错误!),从而对问题的原因作出了错误的推断,望大家谅解! 从 ...

  4. PL/SQL 0.几秒出结果,SQL效率一定高吗?

    今天开发问我一个问题,PL/SQL很快出结果了,为什么应用还是很慢 create index F_AGT_SAVB_ACCTINFO_H_idx4 on F_AGT_SAVB_ACCTINFO_H ( ...

  5. 天了噜,我国4G用户超过2亿了!

    近期,看到工信部一组统计数据,小编整个人都不好了,数据显示,2015年5月我国4G用户净增2281.6万,总数超过2亿户. 没错,卡是换成了4G卡,还是那句话,然并卵,用的还是3G手机.开的还是2G网 ...

  6. oralce 超过1亿条数据的数据库表清理实践

    2018-08-18 16:58 无腿鸟 阅读(331) 评论(0) 编辑 收藏 问题:当一个表的数据量超过一亿条,要删除其中的5000w条,如何处理. 如果直接使用delete语句,会涉及到到大量的 ...

  7. 屏蔽每分钟SSH尝试登录超过10次的IP

    屏蔽每分钟SSH尝试登录超过10次的IP 方法1:通过lastb获取登录状态: #!/bin/bash DATE=$(date +"%a %b %e %H:%M") #星期月天时分 ...

  8. C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)

    题目内容: 利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号.姓名和三门课(高数.物理和英语 )的成绩和平均分(整型). 编写程序,从键盘输入学生的人数,然后依次输入每个学生的学号. ...

  9. 每秒高达1.6亿次操作的并发键值存储库 FASTER 诞生

    FASTER 在过去十年中,云中的数据密集型应用程序和服务有了巨大的增长.数据在各种边设施(例如,设备,浏览器和服务器)上创建,并由云应用程序处理用来获得数据价值或做出决策.应用程序和服务可以处理收集 ...

随机推荐

  1. Python解析Wav文件并绘制波形的方法

    资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在 ...

  2. Hibernate中的HQL的基本常用小例子,单表查询与多表查询

    <span style="font-size:24px;color:#3366ff;">本文章实现HQL的以下功能:</span> /** * hql语法: ...

  3. Cookie/Session机制详解(非原创)

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  4. 计时(.NET)

    using System.Diagnostics; // 开始计时 Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); // 要计时的操 ...

  5. Hibernate---介绍

    Hibernate---介绍 框架体系结构: 2hibernate入门 1.1 ORM框架 Hibernate是一个数据持久化层的ORM框架. Object:对象,java对象,此处特指JavaBea ...

  6. 深入理解MyBatis中的一级缓存与二级缓存

    http://blog.csdn.net/weixin_36380516/article/details/73194758   先说缓存,合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓 ...

  7. Vysor安装图解

    Vysor安装图解   11 准备东西       路径 C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default   ...

  8. PHP打开空白的解决办法

    先打开错误提示,再查找原因 找到php.ini # 显示错误:On开启,Off关闭 display_errors = On 也可在php文件中加入以下任意一行代码 # 禁用错误报告 error_rep ...

  9. bzoj4001

    题解: 答案就是n*(n+1)/2/(2*n-1) 代码: #include<bits/stdc++.h> double n; int main() { scanf("%lf&q ...

  10. Pycharm(四)常用快捷键

    Ctrl + Alt +S 进入设置Ctrl + Alt + L 代码格式化Ctrl + Alt + I 自动缩进Ctrl + D 复制当前行 Ctrl + / 注释(取消注释)当前行 再有什么用的多 ...