我试图使用SDK for Java在EMR上运行Spark,但我在使用存储在S3上的JAR时遇到了一些问题。以下是相关代码:
public String launchCluster() throws Exception {
StepFactory stepFactory = new StepFactory();
// Creates a cluster flow step for debugging
StepConfig enableDebugging = new StepConfig().withName("Enable debugging")
.withActionOnFailure("TERMINATE_JOB_FLOW")
.withHadoopJarStep(stepFactory.newEnableDebuggingStep());
// Here is the original code before I tried command-runner.jar.
// When using this, I get a ClassNotFoundException for
// org.apache.spark.SparkConf. This is because for some reason,
// the super-jar that I'm generating doesn't include apache spark.
// Even so, I believe EMR should already have Spark installed if
// I configure this correctly...
// HadoopJarStepConfig runExampleConfig = new HadoopJarStepConfig()
// .withJar(JAR_LOCATION)
// .withMainClass(MAIN_CLASS);
HadoopJarStepConfig runExampleConfig = new HadoopJarStepConfig()
.withJar("command-runner.jar")
.withArgs(
"spark-submit",
"--master", "yarn",
"--deploy-mode", "cluster",
"--class", SOME_MAIN_CLASS,
SOME_S3_PATH_TO_SUPERJAR,
"-useSparkLocal", "false"
);
StepConfig customExampleStep = new StepConfig().withName("Example Step")
.withActionOnFailure("TERMINATE_JOB_FLOW")
.withHadoopJarStep(runExampleConfig);
// Create Applications so that the request knows to launch
// the cluster with support for Hadoop and Spark.
// Unsure if Hadoop is necessary...
Application hadoopApp = new Application().withName("Hadoop");
Application sparkApp = new Application().withName("Spark");
RunJobFlowRequest request = new RunJobFlowRequest().withName("spark-cluster")
.withReleaseLabel("emr-5.15.0")
.withSteps(enableDebugging, customExampleStep)
.withApplications(hadoopApp, sparkApp)
.withLogUri(LOG_URI)
.withServiceRole("EMR_DefaultRole")
.withJobFlowRole("EMR_EC2_DefaultRole")
.withVisibleToAllUsers(true)
.withInstances(new JobFlowInstancesConfig()
.withInstanceCount(3)
.withKeepJobFlowAliveWhenNoSteps(true)
.withMasterInstanceType("m3.xlarge")
.withSlaveInstanceType("m3.xlarge")
);
return result.getJobFlowId();
}
步骤完成后没有出错,但实际上并没有输出任何内容。...当我检查日志时,stderr
包含以下警告:Skip remote jar s3://somebucket/myservice-1.0-super.jar.
和18/07/17 22:08:31警告客户端:既没有设置spark.yarn.jars也没有设置spark.yarn.archive,回到spark_home下的上载库。
我不确定基于日志的问题是什么。我相信我正在集群上正确地安装Spark。另外,为了提供一些上下文--当我直接使用存储在S3上的超级JAR而不是命令运行器使用withjar
时(没有使用withargs
),它会正确地获取JAR,但随后它没有安装Spark--我为SparkConf获得了一个ClassNotFoundException(和JavaSparkContextion,这取决于Spark作业代码首先尝试创建的内容)。
任何指示将非常感谢!
我认为,如果您使用的是最近的EMR版本(例如EMR-5.17.0),那么--master
参数应该是yarn-cluster
而不是runexampleConfig
语句中的yarn
。我也有同样的问题,在这次改变后,它对我来说很好。
我试图在AWS EMR上运行一个Spark应用程序。我遵循http://blogs.aws.amazon.com/bigdata/post/tx15ay5c50k70rv/installing-apache-spark-on-an-amazon-emr-cluster的说明 我从S3中加载fat-jar(通过执行“SBT Assembly”获得)和应用程序所需的输入文件。我在Spark-1.1.0
连接到Spark:pyspark_driver_python=/usr/local/bin/jupyter pyspark_driver_python_opts=“notebook--no-browser--port=7777”pyspark--packages com.databricks:spark-csv2.10:1.1.0--master spark://127.0.0.1:7077--e
每当我使用Eclipse对代码运行JUnit测试时,它似乎只运行非@Nested的测试,我不知道为什么。 有人知道为什么会这样吗?
我通过阅读和练习来学习。 在皮查姆一世 当我运行代码时,Pycharm错误地 但是PIL安装在Ubuntu 22.04.1LTS上@ /usr/lib/python3/dist-packages。 Pycharm不喜欢什么?
我已经安装了火花图表在我的k8s集群掌舵,我有3个豆荚运行1个主和2个执行,但仍然能够提交火花作业...在“提交应用程序”一节https://github.com/bitnami/charts/tree/master/bitnami/spark中提到我们可以使用。/bin/spark-submit--class org.apache.spark.examples.sparkpi--master s
配置 大部分为Spark on YARN模式提供的配置与其它部署模式提供的配置相同。下面这些是为Spark on YARN模式提供的配置。 Spark属性 Property Name Default Meaning spark.yarn.applicationMaster.waitTries 10 ApplicationMaster等待Spark master的次数以及SparkContext初始