2015-12-19 47 views
3

我正在通过lambda架构并了解如何使用它来构建容错大数据系统。Lambda架构 - 为什么批次图层

我想知道如何在实时视图中存储所有内容并从中生成结果时如何批处理图层有用?是因为实时存储不能被用来存储所有的数据,那么它不会是实时的,因为检索数据所花费的时间取决于数据存储的空间。

回答

3

为什么料层

为了节省时间和金钱!

它主要有两个功能,

  • 来管理主数据集(假定为不可变)
  • 预先计算的特设的批处理视图查询

一切都可以实时存储并生成结果 - 非真

以上当然是可能的,但不是可行的,因为数据可能是PB的100's..1000的和产生的结果可能需要一些时间..大量的时间!

这里的关键是要在大数据集上获得低延迟查询。批处理层用于创建批处理视图(低延迟查询),实时层用于通常较小的最近/更新数据。现在,任何即席查询都可以通过合并来自批量视图和实时视图的结果而不是通过所有主数据集计算来应答。

此外,想想一个查询(同一个查询?)一次又一次地在巨大的数据集上运行..浪费时间和金钱!

2

为了进一步推动@karthik manchala提供的答案,数据处理可以通过三种方式来处理 - 批次,互动,实时/流

我相信,你的参考实时更比流媒体,因为不是所有用例流相关的交互响应。

交互式响应是其中该响应可从亚秒的任何地方预期数秒至数分钟,这取决于使用情况。这里的关键是理解处理是在静止的数据上完成的,即已经存储在存储介质上。用户在处理时与系统交互,因此等待响应。 Hive对Tez,Impala,Spark核心等的所有努力都是为了解决这个问题并尽可能快地做出回应。

流的另一边就是数据流进入系统实时 - 比如推特馈送,点击流等,并需要处理,以尽快生成的数据来完成。像Storm,Spark Streaming这样的框架可以解决这个问题。

批处理的情况是为了解决需要在大型数据集上完成一些繁重工作的情况,以便使用户相信他所看到的响应是实时的。例如,将大量文档索引到Apache Solr中是一项批量作业,其中索引将根据数据集运行几分钟或几小时。但是,查询Solr索引的用户将得到亚秒等待时间的响应。正如您所看到的那样,索引不能实时实现,因为可能会有大量数据。 Google搜索的情况也是如此,其中索引将以批处理模式完成,结果以交互模式显示。

所有这三种数据处理模式都可能涉及任何组织应对数据挑战。 Lambda架构有效应对这一挑战,使用相同的数据源满足多种数据处理需求

0

您可以查看没有单独批处理层的Kappa架构。 一切都在流层分析。您可以在正确的配置中使用Kafka作为master-datasetstorage,并将计算的数据作为视图保存在数据库中。

如果您想重新计算,您可以开始一个新的流处理作业,并将您的视图从Kafka重新计算到您的数据库并替换旧视图。 只能使用实时视图作为临时查询的主存储器,但正如其他答案中已经提到的那样,如果您有大量数据需要执行批处理和流处理分离而不是批量处理,作为流工作的工作。这取决于你的数据的大小。 另外,使用hdfs而不是批量计算数据库的存储更便宜。

最后一点在许多情况下,您有不同的批处理和流处理算法,因此您需要单独进行处理。但基本上可以仅使用“实时视图”作为批处理和流层,而不使用Kafka作为主服务器。这取决于你的用例。