Spark工作负载是否需要HDFS?

时间:2015-09-19 14:12:04

标签: hadoop apache-spark hdfs mesos mesosphere

没有必要使用HDFS,但某些地方会出现建议。

帮助评估HDFS运行所花费的精力:

将HDFS用于Spark工作负载有什么好处?

4 个答案:

答案 0 :(得分:3)

Spark 是一个分布式处理引擎, HDFS 是一个分布式存储系统。

如果 HDFS 不是一个选项,那么Spark必须使用Apache Cassandra或Amazon S3形式的其他替代方案。

看看这个comparision

S3 - 非紧急批处理作业。当数据位置不重要时,S3适合非常具体的用例。

Cassandra - 非常适合流式数据分析和批处理作业的过度使用。

HDFS - 非常适合批处理作业,而不会影响数据的位置。

何时使用HDFS作为Spark分布式处理的存储引擎?

  1. 如果您已经拥有大型 Hadoop集群,并且正在寻找数据的实时分析,那么Spark可以使用现有的Hadoop集群。这将缩短开发时间。

  2. Spark是内存计算引擎。由于数据始终无法适应内存,因此某些操作必须将数据溢出到磁盘。在这种情况下,Spark将有利于HDFS。 Spark实现的Teragen分类记录使用HDFS存储进行分类操作。

  3. HDFS 是可扩展,可靠且容错的分布式文件系统(自Hadoop 2.x发布以来)。利用数据局部性原理,提高了处理速度。

  4. 最适合批处理作业。

答案 1 :(得分:2)

最短的答案是:"不,你不需要它"。即使没有HDFS,您也可以分析数据,但当然您需要在所有节点上复制数据。

冗长的答案非常违反直觉,我仍然试图通过帮助stackoverflow社区来理解它。

Spark local vs hdfs permormance

答案 2 :(得分:0)

HDFS(或任何分布式文件系统)使您的数据分发更加简单。使用本地文件系统,您必须手动将数据分区/复制到各个节点,并在运行作业时了解数据分布。此外,HDFS还可以处理故障节点故障。 通过Spark和HDFS之间的集成,您可以想象得知数据分布的火花,因此它会尝试将任务安排到所需数据所在的相同节点。

第二:你在指令中遇到了哪些问题?

BTW:如果您只是想在AWS上轻松设置,DCOS允许您使用单个命令安装HDFS ......

答案 3 :(得分:-1)

因此,您可以使用Cloudera或Hortenworks发行版并轻松加载整个堆栈。 CDH将与YARN一起使用,但我发现在CDH中配置mesos要困难得多。 Horten更容易定制。

HDFS非常棒,因为数据节点=数据位置(数据处理的过程),因为混洗/数据传输非常昂贵。 HDFS还自然地阻止允许Spark在块上进行分区的文件。 (128mb块,你可以改变这个)。

您可以使用S3和Redshift。

见这里: https://github.com/databricks/spark-redshift