gpt4 book ai didi

hadoop - 将 LD_PRELOAD 与 Apache Spark(或 YARN)结合使用

转载 作者:可可西里 更新时间:2023-11-01 15:52:44 27 4
gpt4 key购买 nike

我们在 Apache Hadoop YARN 上运行 Spark 作业。我特别需要在这些作业上使用“LD_PRELOAD 技巧”。 (在任何人 panic 之前,它不是用于生产运行;这是自动化作业测试的一部分)。

我知道如何在作业中提交额外的文件,我知道如何在节点上设置环境变量,所以将这些设置添加到 spark-defaults.conf 几乎提供了一个解决方案:

spark.files=/home/todd/pwn_connect.so
spark.yarn.appMasterEnv.LD_PRELOAD=pwn_connect.so
spark.executorEnv.LD_PRELOAD=pwn_connect.so

但我在容器日志中收到此错误:

ERROR: ld.so: object 'pwn_connect.so' from LD_PRELOAD cannot be preloaded: ignored.

问题似乎是 LD_PRELOAD 不接受我提供的相对路径。但我不知道如何提供绝对路径——我不知道这些文件在节点的本地文件系统中的位置。

最佳答案

首先,spark.files在YARN上运行时没有用到,应该是spark.yarn.dist.files。请注意,如果将 --files 参数提供给 spark-submit,这将被覆盖。

对于 LD_PRELOAD,有两种解决方案可行:

  1. 可以使用相对路径;它们需要以 ./ 为前缀:

    spark.yarn.dist.files=/home/todd/pwn_connect.so
    spark.yarn.appMasterEnv.LD_PRELOAD=./pwn_connect.so
    spark.executorEnv.LD_PRELOAD=./pwn_connect.so

    (在 LD_LIBRARY_PATH 中搜索不带 ./ 的相对路径,而不是当前工作目录)。

  2. 如果首选绝对路径,检查 Spark source code表明包括环境变量赋值在内的整个命令行都受到 shell 的扩展,因此表达式 $PWD 将被扩展到当前工作目录:

    spark.yarn.dist.files=/home/todd/pwn_connect.so
    spark.yarn.appMasterEnv.LD_PRELOAD=$PWD/pwn_connect.so
    spark.executorEnv.LD_PRELOAD=$PWD/pwn_connect.so

关于hadoop - 将 LD_PRELOAD 与 Apache Spark(或 YARN)结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47203127/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com