Spark partitioning/cluster 执行
Spark partitioning/cluster enforcing
我将使用大量结构如下的文件:
/day/hour-min.txt.gz
一共 14 天。我将使用 90 个 nodes/workers.
的集群
我正在使用 wholeTextFiles()
阅读所有内容,因为这是允许我适当拆分数据的唯一方法。所有的计算都将在每分钟的基础上完成(所以基本上是每个文件),最后有几个减少步骤。大约有 20.000 个文件;如何有效地划分它们?我让火花来决定吗?
理想情况下,我认为每个节点都应该接收整个文件;默认情况下,spark 会这样做吗?我可以强制执行吗?怎么样?
I think each node should receive entire files; does spark do that by default?
是的,考虑到 WholeTextFileRDD
(您在 sc.wholeTextFiles
之后得到的内容)有自己的 WholeTextFileInputFormat
可以将整个文件作为一条记录读取,您就可以了。如果您的 Spark 执行器和数据节点位于同一位置,您还可以期望节点本地数据局部性。 (你可以在 Spark UI 中检查这个,一旦你的应用程序是 运行。)
sc.wholeTextFiles
的 Spark 文档中的注意事项:
Small files are preferred, large file is also allowable, but may cause
bad performance.
您可以使用分区的经验法则:
data = data.coalesce(total_cores * 3)
Ideally, I think each node should receive entire files; does spark do that by default? Can I enforce it? How?
这完全取决于您的 RDD,而不是您的文件。例如,如果您构建一个包含文件所有内容的 RDD,那么 Spark 将分发该 RDD,并且整个文件是否位于节点中受许多参数(#partitions、每个文件的大小等)的影响。
我不认为你可以强制执行类似的东西,所以关注分区的数量;这很关键。
关于文件的数量,我在我的 pseudosite 中写过,文件太少,会导致文件很大,而且可能太大,文件太多,你会让 HDFS 维护一个元数据量大,压力大
我将使用大量结构如下的文件:
/day/hour-min.txt.gz
一共 14 天。我将使用 90 个 nodes/workers.
的集群我正在使用 wholeTextFiles()
阅读所有内容,因为这是允许我适当拆分数据的唯一方法。所有的计算都将在每分钟的基础上完成(所以基本上是每个文件),最后有几个减少步骤。大约有 20.000 个文件;如何有效地划分它们?我让火花来决定吗?
理想情况下,我认为每个节点都应该接收整个文件;默认情况下,spark 会这样做吗?我可以强制执行吗?怎么样?
I think each node should receive entire files; does spark do that by default?
是的,考虑到 WholeTextFileRDD
(您在 sc.wholeTextFiles
之后得到的内容)有自己的 WholeTextFileInputFormat
可以将整个文件作为一条记录读取,您就可以了。如果您的 Spark 执行器和数据节点位于同一位置,您还可以期望节点本地数据局部性。 (你可以在 Spark UI 中检查这个,一旦你的应用程序是 运行。)
sc.wholeTextFiles
的 Spark 文档中的注意事项:
Small files are preferred, large file is also allowable, but may cause bad performance.
您可以使用分区的经验法则:
data = data.coalesce(total_cores * 3)
Ideally, I think each node should receive entire files; does spark do that by default? Can I enforce it? How?
这完全取决于您的 RDD,而不是您的文件。例如,如果您构建一个包含文件所有内容的 RDD,那么 Spark 将分发该 RDD,并且整个文件是否位于节点中受许多参数(#partitions、每个文件的大小等)的影响。
我不认为你可以强制执行类似的东西,所以关注分区的数量;这很关键。
关于文件的数量,我在我的 pseudosite 中写过,文件太少,会导致文件很大,而且可能太大,文件太多,你会让 HDFS 维护一个元数据量大,压力大