在 EC2 上设置 spark 类路径:spark.driver.extraClassPath 和 spark.executor.extraClassPath
Setting spark classpaths on EC2: spark.driver.extraClassPath and spark.executor.extraClassPath
通过提供 spark- classmaven 依赖项路径来减小应用程序 jar 的大小:
我的集群有 3 个 ec2 实例,hadoop 和 spark 在上面 running.If 我用 maven 依赖构建 jar,它变得太大(大约 100 MB),我想避免这种情况,因为 Jar 正在复制在所有节点上,每次我 运行 作业。
为了避免这种情况,我构建了一个 maven 包 "maven package"。为了解决依赖关系,我已经在每个节点上下载了所有 maven 依赖关系,然后仅在 jar 路径下方提供:
我在 "spark-defaults.conf" 中的每个节点上添加了 class 路径作为
spark.driver.extraClassPath /home/spark/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar:/home/spark/.m2/repository/com/datastax/cassandra/cassandra-driver-core/2.1.5/cassandra-driver-core-2.1.5.jar:/home/spark/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar:/home/spark/.m2/repository/com/google/collections/google-collections/1.0/google-collections-1.0.jar:/home/spark/.m2/repository/com/datastax/spark/spark-cassandra-connector-java_2.10/1.2.0-rc1/spark-cassandra-connector-java_2.10-1.2.0-rc1.jar:/home/spark/.m2/repository/com/datastax/spark/spark-cassandra-connector_2.10/1.2.0-rc1/spark-cassandra-connector_2.10-1.2.0-rc1.jar:/home/spark/.m2/repository/org/apache/cassandra/cassandra-thrift/2.1.3/cassandra-thrift-2.1.3.jar:/home/spark/.m2/repository/org/joda/joda-convert/1.2/joda-convert-1.2.jar
它在单个节点上本地工作。
我仍然得到这个 error.Any 帮助,我们将不胜感激。
您不需要放入所有 jars 文件。只需放入您的应用程序 jar 文件即可。
如果你再次遇到错误而不是将所有需要的 jar 文件放入。
您必须通过 setJars() 方法放入 jars 文件。
终于,我解决了这个问题。我已经使用 "mvn package" 而不是 "mvn clean compile assembly:single " 创建了应用程序 jar,因此它不会在创建时下载 Maven 依赖项jar(但需要提供这些 jar/dependencies 运行-时间)导致 Jar 尺寸较小(因为只有依赖项的引用)。
然后,我在每个节点的 spark-defaults.conf 中添加了 两个参数 作为:
spark.driver.extraClassPath /home/spark/.m2/repository/com/datastax/cassandra/cassandra-driver-core/2.1.7/cassandra-driver-core-2.1.7.jar:/home/spark/.m2/repository/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.jar:/home/spark/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar:/home/spark/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar
spark.executor.extraClassPath /home/spark/.m2/repository/com/datastax/cassandra/cassandra-driver-core/2.1.7/cassandra-driver-core-2.1.7.jar:/home/spark/.m2/repository/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.jar:/home/spark/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar:/home/spark/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar
所以问题出现了,应用程序 JAR 如何获得 Maven 依赖项(需要 jar 的)运行-时间?
为此,我提前使用 mvn clean compile assembly:single 在每个节点上下载了所有必需的依赖项。
通过提供 spark- classmaven 依赖项路径来减小应用程序 jar 的大小:
我的集群有 3 个 ec2 实例,hadoop 和 spark 在上面 running.If 我用 maven 依赖构建 jar,它变得太大(大约 100 MB),我想避免这种情况,因为 Jar 正在复制在所有节点上,每次我 运行 作业。
为了避免这种情况,我构建了一个 maven 包 "maven package"。为了解决依赖关系,我已经在每个节点上下载了所有 maven 依赖关系,然后仅在 jar 路径下方提供:
我在 "spark-defaults.conf" 中的每个节点上添加了 class 路径作为
spark.driver.extraClassPath /home/spark/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar:/home/spark/.m2/repository/com/datastax/cassandra/cassandra-driver-core/2.1.5/cassandra-driver-core-2.1.5.jar:/home/spark/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar:/home/spark/.m2/repository/com/google/collections/google-collections/1.0/google-collections-1.0.jar:/home/spark/.m2/repository/com/datastax/spark/spark-cassandra-connector-java_2.10/1.2.0-rc1/spark-cassandra-connector-java_2.10-1.2.0-rc1.jar:/home/spark/.m2/repository/com/datastax/spark/spark-cassandra-connector_2.10/1.2.0-rc1/spark-cassandra-connector_2.10-1.2.0-rc1.jar:/home/spark/.m2/repository/org/apache/cassandra/cassandra-thrift/2.1.3/cassandra-thrift-2.1.3.jar:/home/spark/.m2/repository/org/joda/joda-convert/1.2/joda-convert-1.2.jar
它在单个节点上本地工作。 我仍然得到这个 error.Any 帮助,我们将不胜感激。
您不需要放入所有 jars 文件。只需放入您的应用程序 jar 文件即可。 如果你再次遇到错误而不是将所有需要的 jar 文件放入。
您必须通过 setJars() 方法放入 jars 文件。
终于,我解决了这个问题。我已经使用 "mvn package" 而不是 "mvn clean compile assembly:single " 创建了应用程序 jar,因此它不会在创建时下载 Maven 依赖项jar(但需要提供这些 jar/dependencies 运行-时间)导致 Jar 尺寸较小(因为只有依赖项的引用)。
然后,我在每个节点的 spark-defaults.conf 中添加了 两个参数 作为:
spark.driver.extraClassPath /home/spark/.m2/repository/com/datastax/cassandra/cassandra-driver-core/2.1.7/cassandra-driver-core-2.1.7.jar:/home/spark/.m2/repository/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.jar:/home/spark/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar:/home/spark/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar
spark.executor.extraClassPath /home/spark/.m2/repository/com/datastax/cassandra/cassandra-driver-core/2.1.7/cassandra-driver-core-2.1.7.jar:/home/spark/.m2/repository/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.jar:/home/spark/.m2/repository/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar:/home/spark/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar
所以问题出现了,应用程序 JAR 如何获得 Maven 依赖项(需要 jar 的)运行-时间?
为此,我提前使用 mvn clean compile assembly:single 在每个节点上下载了所有必需的依赖项。