Apache spark spark在集群模式下运行时是否必须使用分布式文件存储(HDFS/Cassandra/S3等)?若有,原因为何?

Apache spark spark在集群模式下运行时是否必须使用分布式文件存储(HDFS/Cassandra/S3等)?若有,原因为何?,apache-spark,hadoop,hdfs,Apache Spark,Hadoop,Hdfs,spark在集群模式下运行时是否必须使用分布式文件存储(HDFS/Cassandra/S3等)?若有,原因为何 Spark是用于计算海量数据的分布式数据处理引擎。假设我在mysql中存储了大量数据,我想对这些数据进行处理。Spark从mysql读取数据,并在集群节点本身上执行内存(或磁盘)计算。我仍然无法理解为什么分布式文件存储需要在集群模式下运行spark spark在集群模式下运行时是否必须使用分布式文件存储(HDFS/Cassandra/S3等) 差不多 若有,原因为何 因为spark W

spark在集群模式下运行时是否必须使用分布式文件存储(HDFS/Cassandra/S3等)?若有,原因为何

Spark是用于计算海量数据的分布式数据处理引擎。假设我在mysql中存储了大量数据,我想对这些数据进行处理。Spark从mysql读取数据,并在集群节点本身上执行内存(或磁盘)计算。我仍然无法理解为什么分布式文件存储需要在集群模式下运行spark

spark在集群模式下运行时是否必须使用分布式文件存储(HDFS/Cassandra/S3等)

差不多

若有,原因为何

因为spark Worker从共享表中获取输入,在它们之间分配计算,然后由spark驱动程序进行编排,将数据写回另一个共享表


如果您试图以独占方式使用mysql,则可以使用本地文件系统(“file://”)作为群集FS。但是,如果spark查询中的任何RDD或stage确实尝试使用共享文件系统作为提交工作的方式,则输出不会从工作程序传播(工作程序将写入其本地文件系统)和spark驱动程序(只能读取其本地文件系统)

如果您想要分布式SQL处理,您可以尝试Presto而不是Spark。您的意思是,为了执行计算,Spark需要将一些中间结果存储在某些存储器中,以便群集中的其他节点可以从共享文件系统中读取。否则,Spark需要将这些中间数据发送给可能需要它的所有节点这将需要大量的网络IO,并会降低处理速度。我的理解正确吗?请阅读RDD论文:。节点会缓存所有数据,并将其传递给“随机播放”,但经典的文件系统I/O确实需要一个共享的分布式FS。纯MySQL IO?你得试试看谢谢你分享这篇论文。。我读过了,很抱歉我的回复太晚了。。让我和你分享一下我目前的情况。。我有一些数据存储在cassandra表中。。我的spark工作是从cassandra那里读取数据。。对其执行一些计算,然后将数据存储回cassandra(不同的表中)。。。我的spark作业将在单独的群集上运行。。现在在这个场景中。。我真的需要像HDFS/S3这样的分布式FS吗。?根据你分享的论文中提到的细节,我无法理解为什么在这种情况下需要分布式FS。你应该能够直接与cassandra合作,但你需要检查以确定。询问Apache cassandra或Apache spark用户组以获得最新答案。所以答案很陈旧,因为没有人会随着世界的变化而更新