我个别理解每一个是什么,但我很难在用例的差异上解决问题。
是否可以简要描述每个内容以及何时可以选择其他内容的用例示例。
我的理解是Spark和Cassandra甚至不具有可比性,但我的同事认为它们是同一物种。
作为大数据的新手,如果这是严格的意见/首选依据,我会提前道歉。如果有,请告诉我,我会把问题记下来。
答案 0 :(得分:5)
在列出的那些中,Cassandra是唯一的数据库。 Hive是Hadoop上的SQL执行引擎。 SparkSQL提供相同的查询语言,但Spark更适用于其他用例,如流媒体和机器学习。 Storm是一个实时的流处理框架; Spark做微批,Storm立即处理消息。 (顺便说一句,我觉得Storm是一个古老的框架。我被告知Flink比Storm有更好的工作.Heron的目标是成为下一代Storm。)
Spark在具有大量内存的系统上效果最佳。 Hive可以通过使用SQL优化(如分区修剪,谓词下推以及操作ORC或Parquet的柱状格式)来批量处理比Spark或Cassandra更多的原始数据。
Spark和Cassandra一样和Hive一样,但是,更多的实时用例会想要使用Cassandra,因为Hive查询必须启动MapReduce / Tez执行,这需要花费几秒钟,相比之下,使用正确的Cassandra数据模型需要几毫秒。
Cassandra非常关注数据模型......没有理由不能将数据转储到Hadoop / Hive中,然后导出到Cassandra模型。或者,您可以使用Hbase而不是Cassandra并使用类似的模型,并且可以获得可用性(参见CAP定理)。
如果您对Spark和Cassandra用例感兴趣,那么SMACK堆栈是一种流行的安装设置。
答案 1 :(得分:-1)
Storm确实是一个古老的框架。只是为了突出一些关于苍鹭的事情。 (完全披露,我是苍鹭的共同创造者之一)。苍鹭在几个方面超越了风暴 -
Heron引入了许多新的想法,例如背压,模块化概念,类似于微内核(用于不断变化的大数据格局),隔离,本机容器化,基于流程而不是基于线程的故障排除等。
虽然由于需要在Twitter(开源的Storm)上向后兼容,Heron开始使用Storm API,但已经添加了几个新的API。 Streamlet是已经引入的新功能API - 转换为用于物理执行的运算符。
为Python添加了类似于Storm API的低级api。 Streamlet功能API也可以在Python中使用。关键优势是基于Python API的拓扑在本机python解释器中运行并直接接收数据 - 与Storm不同,它使用基于stdin / stdout的多语言协议,这会产生几个额外的进程并且非常慢。
已支持基于YAML的拓扑支持。对C ++,Scala和Go等语言的其他原生支持即将推出。
Heron可以在单个部署中支持不同的工作负载 - 延迟敏感与吞吐量敏感,并且每个拓扑结构都可以进行简单的配置更改。
Heron附带一个名为Apache BookKeeper的可选存储层,它提供分布式复制日志。这为分发作业jar提供了无缝体验,并且只为一次处理提供了有状态存储。
Heron可以原生支持多个调度程序部署,例如Kubernetes,DC / OS,Nomad和standalone,从而利用这些调度程序功能。
Heron根据其经历的运行经验开创了自我调节系统的工作 - 自动缩放和拓扑自我修复。
此外,它已在多家公司大规模生产超过3年。