dataproc 上的抢占式工作线程
Preemptible workers on dataproc
我在 dataproc 文档中看到,不应该将可抢占的工作程序用于存储。这就是为什么他们的启动盘保持较小的原因吗?也就是说,我应该保证长期工作人员在处理过程中有足够的存储空间来存储我的数据吗?任何关于如何最好地使用可抢占工人的详细指导将不胜感激。
这是一个很好的参考:https://cloud.google.com/dataproc/docs/concepts/compute/preemptible-vms. Also consider reading more about Preemptible VMs here: https://cloud.google.com/compute/docs/instances/preemptible
1) 抢占式 VM 不 用于 HDFS 存储。可抢占的 VM 每 24 小时被抢占一次(通常同时有多个),并且不保证会回来。如果 HDFS 块保留在 PVM 上,很可能您的数据将不可用。
也就是说,如果您使用 GCS 进行存储,则无需担心集群上的 HDFS。
2) 是的,这就是 PVM 启动盘默认较小的原因。正如文档所说,您可以覆盖默认值并使其更大。 Persistent Disk 的性能随大小而变化(我承认这令人困惑),因此如果您是 运行 大量随机播放的作业(如 SQL 类型的查询),您可能需要增加它。如果你是 运行 CPU 的工作(比如机器学习),那可能没什么大不了的。您只需要尝试使用磁盘大小即可了解适合您的方法。
3) 是的,你应该保证主要工作人员有足够的 space 用于所有 HDFS 数据。
4) 我会联系我们的 PM/docs 作者,为 PVM 添加更好的指导。据我所知,一个好的经验法则是确保您的集群中 PVM 的比例不超过 50%。
如果 PVM 在作业 运行 时被抢占,作业进度将被推迟。不仅正在进行的任务会失败,而且来自已完成任务的混洗数据也会丢失。同样,您必须进行试验,看看什么对您有用。
由于使用抢占式 VM 时任务很可能会失败,因此您可能需要提高任务重试次数和应用程序主重试次数。
纱线:
- yarn.resourcemanager.am.max-尝试(默认为 2)
Mapreduce:
- mapreduce.map.maxattempts(默认为 4)
- mapreduce.reduce.maxattempts(默认为 4)
火花:
- spark.task.maxFailures(默认4)
- spark.stage.maxConsecutiveAttempts(默认 4)
您可以在使用 --properties 创建集群时设置这些属性:https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/cluster-properties.
我在 dataproc 文档中看到,不应该将可抢占的工作程序用于存储。这就是为什么他们的启动盘保持较小的原因吗?也就是说,我应该保证长期工作人员在处理过程中有足够的存储空间来存储我的数据吗?任何关于如何最好地使用可抢占工人的详细指导将不胜感激。
这是一个很好的参考:https://cloud.google.com/dataproc/docs/concepts/compute/preemptible-vms. Also consider reading more about Preemptible VMs here: https://cloud.google.com/compute/docs/instances/preemptible
1) 抢占式 VM 不 用于 HDFS 存储。可抢占的 VM 每 24 小时被抢占一次(通常同时有多个),并且不保证会回来。如果 HDFS 块保留在 PVM 上,很可能您的数据将不可用。
也就是说,如果您使用 GCS 进行存储,则无需担心集群上的 HDFS。
2) 是的,这就是 PVM 启动盘默认较小的原因。正如文档所说,您可以覆盖默认值并使其更大。 Persistent Disk 的性能随大小而变化(我承认这令人困惑),因此如果您是 运行 大量随机播放的作业(如 SQL 类型的查询),您可能需要增加它。如果你是 运行 CPU 的工作(比如机器学习),那可能没什么大不了的。您只需要尝试使用磁盘大小即可了解适合您的方法。
3) 是的,你应该保证主要工作人员有足够的 space 用于所有 HDFS 数据。
4) 我会联系我们的 PM/docs 作者,为 PVM 添加更好的指导。据我所知,一个好的经验法则是确保您的集群中 PVM 的比例不超过 50%。
如果 PVM 在作业 运行 时被抢占,作业进度将被推迟。不仅正在进行的任务会失败,而且来自已完成任务的混洗数据也会丢失。同样,您必须进行试验,看看什么对您有用。
由于使用抢占式 VM 时任务很可能会失败,因此您可能需要提高任务重试次数和应用程序主重试次数。
纱线:
- yarn.resourcemanager.am.max-尝试(默认为 2)
Mapreduce:
- mapreduce.map.maxattempts(默认为 4)
- mapreduce.reduce.maxattempts(默认为 4)
火花:
- spark.task.maxFailures(默认4)
- spark.stage.maxConsecutiveAttempts(默认 4)
您可以在使用 --properties 创建集群时设置这些属性:https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/cluster-properties.