我目前正在使用具有固定数量工作线程的 Dataproc 集群。每个工作人员都有一个重要的初始化操作,需要在工作人员上安装一些特定的库。
最近,我们决定尝试使用一些可抢占式工作线程,但我们的 Spark 作业失败了,因为缺少一些库。原因似乎是可抢占工作人员没有初始化操作。事实上,我已经使用 ssh 连接到这些工作人员,并且我完全确定初始化脚本不会在这些可抢占工作人员上执行,因为预期的库不存在,并且我们的初始化脚本留下了其执行日志,该日志丢失了。
这是正常情况吗?如何确保我的抢占式工作线程已运行我的自定义初始化操作脚本?
最佳答案
这绝对不正常。 Dataproc 应确保节点在完全初始化之前不会加入集群 ( along with other guarantees )。
我最好的猜测是,存储库可能不稳定或过载,并且安装库的实际步骤失败,但整个脚本没有失败。您可以尝试在 init 操作的顶部添加 set -e
吗?
您还可以通过 SSH 连接到节点并检查 /var/log/dataproc-startup-script*
中的 init 操作日志。
关于google-cloud-dataproc - Google Dataproc 抢占式工作线程的初始化操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48210905/