我在 AWS 中有一个带有 YARN 的 Hadoop 集群,我向其提交了 Spark 应用程序。我通过 REST 请求工作,提交本文档中指定的 XML:YARN REST API。它适用于常规集群。
我目前正在做一个 POC 来使用 EMR 集群而不是通常的 POC,我使用现有的 REST 命令并简单地通过 SSH 与 EMR 的内部 YARN 通信,如下所示:内部 EMR 服务的 Web 访问。它适用于大多数 REST 命令,例如POST http://<rm http address:port>/ws/v1/cluster/apps/new-application
,但是当我提交一个新应用程序时,它立即失败并报告它找不到 ApplicationMaster。
日志类型:stderr
日志上传时间:2019年2月3日星期日17:18:35 +0000
日志长度:88
错误:无法找到或加载主类 org.apache.spark.deploy.yarn.ApplicationMaster
我怀疑这以某种方式连接到类路径,当我将类路径标志添加到 REST 提交应用程序节点时,带有所有 jar 的 EMR FS 位置(/usr/lib/spark/jars/*),它找到了 ApplicationMaster 但然后无法在核心实例中找到 Jars,并带有以下奇怪的错误日志:
日志类型:stderr
日志上传时间:2019年1月31日星期四15:11:21 +0000
日志长度:89
错误:无法找到或加载主类 .usr.lib.spark.jars.datanucleus-core-3.2.10.jar
最不寻常的是它试图描述它找不到的 jar 的方式,而不是类。经过进一步调查,我找到了原因:当Java命令发送到Core实例时,它将类路径解析为它的三个文件:java -server -classpath /usr/lib/spark/jars/datanucleus-api-jdo-3.2.6.jar /usr/lib/spark/jars/datanucleus-core-3.2.10.jar /usr/lib/spark/jars/datanucleus-rdbms-3.2.9.jar ...
因此尝试执行“/usr/lib/spark/jars/datanucleus-core-3.2. 10.jar”就好像它是一个可运行的。问题是,如果我尝试将类路径更改为更具体,或者如果我尝试删除它,应用程序会因为找不到 ApplicationMaster 而再次失败。
qq_笑_17
相关分类