- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个 4 nodes
的集群每个都有1 core
。我有一个600 Petabytes
我想通过 Spark
处理的大小大文件。文件可以存储在 HDFS
.
我觉得这样判断不行。分区数是文件大小/总数。集群中的核心数。如果确实如此,我将有 4 partitions
(600/4) 所以每个分区的大小都是 125 PB
尺寸。
但我认为125 PB
对于分区来说太大了,所以我的想法与推导否有关是否正确。分区数。
PS:我刚刚开始使用Apache Spark
。所以,如果这是一个天真的问题,我深表歉意。
最佳答案
当您将数据存储在 HDFS 上时,它将根据您的 HDFS 配置以 64 MB 或 128 MB 的 block 进行分区。 (假设 128 MB block 。)
因此 600 PB 将产生 4687500000 个 block ,每个 block 大小为 128 MB。 (600 PB/128 MB)
现在,当您运行 Spark 作业时,每个执行器将读取几个数据 block ( block 数将等于执行器中的核心数)并并行处理它们。
基本上,每个核心将处理 1 个分区。因此,为执行器提供的核心越多,它可以处理的数据就越多,但同时您需要为执行器分配更多内存来处理内存中加载的数据大小。
建议使用中等规模的执行器。太多的小执行器会导致大量的数据shuffle。
现在来看您的场景,如果您有一个 4 节点集群,每个集群有 1 个核心。您最多将有 3 个执行程序在其上运行,因为 Spark 驱动程序将占用 1 个核心。因此,要处理数据,您将能够并行处理 3 个分区。因此,您的工作需要 4687500000/3 = 1562500000 次迭代才能处理整个数据。
希望有帮助!
干杯!
关于apache-spark - Apache Spark 如何对大文件的数据进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51561890/
我是一名优秀的程序员,十分优秀!