Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop Lambda体系结构-为什么选择批处理层_Hadoop_Lambda_Architecture_Bigdata - Fatal编程技术网

Hadoop Lambda体系结构-为什么选择批处理层

Hadoop Lambda体系结构-为什么选择批处理层,hadoop,lambda,architecture,bigdata,Hadoop,Lambda,Architecture,Bigdata,我正在学习lambda体系结构,并了解如何将其用于构建容错大数据系统 我想知道当一切都可以存储在实时视图中并从中生成结果时,批处理层是如何有用的?是否因为实时存储不能用于存储所有数据,那么它就不会是实时的,因为检索数据所需的时间取决于存储数据所需的空间 为什么选择批处理层 节省时间和金钱 它基本上有两个功能, 管理主数据集(假定为不可变) 为特殊查询预计算批处理视图 所有内容都可以存储在实时视图中,并从中生成结果-不正确 上述方法当然是可能的,但不可行,因为数据可能是100..1000 PB

我正在学习lambda体系结构,并了解如何将其用于构建容错大数据系统

我想知道当一切都可以存储在实时视图中并从中生成结果时,批处理层是如何有用的?是否因为实时存储不能用于存储所有数据,那么它就不会是实时的,因为检索数据所需的时间取决于存储数据所需的空间

为什么选择批处理层

节省时间和金钱

它基本上有两个功能,

  • 管理主数据集(假定为不可变)
  • 为特殊查询预计算批处理视图
所有内容都可以存储在实时视图中,并从中生成结果-不正确

上述方法当然是可能的,但不可行,因为数据可能是100..1000 PB,生成结果可能需要时间。。很多时间

这里的关键是在大型数据集上实现低延迟查询。批处理层用于创建批处理视图(提供低延迟的查询),实时层用于最近/更新的数据,这些数据通常很小。现在,任何特殊查询都可以通过将批处理视图和实时视图中的结果合并来回答,而不是在所有主数据集上进行计算


另外,考虑一个查询(相同的查询?)在巨大的数据集上反复运行。。时间和金钱的损失

根据所提供的答案,数据处理可以通过三种方式进行-批处理、交互式和实时/流式处理

我相信,您对实时的引用更多的是交互式响应,而不是流式处理,因为并非所有用例都与流式处理相关

交互式响应是指响应可以在任何地方进行,从亚秒到几秒到几分钟不等,具体取决于用例。这里的关键是要理解,处理是在静止的数据上完成的,即已经存储在存储介质上的数据。用户在处理过程中与系统交互,因此等待响应。Hive对Tez、Impala、Spark core等的所有努力都是为了解决这个问题,并尽快做出响应

另一方面,流式处理是指数据流实时流入系统的地方,例如twitter提要、点击流等,并且需要在生成数据后立即进行处理。像Storm、Spark流媒体这样的框架解决了这个问题

批处理的情况是为了解决一些场景,在这些场景中,需要在一个巨大的数据集上完成一些繁重的工作,以便用户相信他看到的响应是实时的。例如,将大量文档集合索引到ApacheSolr中是一项批处理工作,根据数据集的不同,索引将运行数分钟甚至数小时。然而,查询Solr索引的用户将在亚秒的延迟内得到响应。如您所见,索引无法实时实现,因为可能存在大量数据。谷歌搜索也是如此,索引将以批处理模式进行,结果以交互模式显示


所有这三种数据处理模式都可能涉及任何应对数据挑战的组织Lambda体系结构有效地解决了这一难题,为多个数据处理需求使用相同的数据源

您可以查看没有单独批处理层的Kappa体系结构。 在流层中分析所有内容。您可以在正确的配置中使用Kafka作为主数据集存储,并将计算数据保存在数据库中作为视图

如果要重新计算,可以启动新的流处理作业,将视图从Kafka重新计算到数据库中,并替换旧视图。 可以仅使用实时视图作为临时查询的主存储,但正如其他答案中所述,如果有大量数据要分别进行批处理和流处理,而不是将批处理作业作为流作业,则速度会更快。这取决于数据的大小。 此外,使用hdfs之类的存储而不是用于批处理计算的数据库更便宜

最后一点,在很多情况下,批处理和流处理有不同的算法,所以需要分开进行。但基本上,也可以只使用“实时视图”作为批处理和流层,而不使用Kafka作为主集。这取决于你的用例