【发布时间】:2017-01-28 02:54:41
【问题描述】:
我正在运行一个简单的代码来在 hdfs 上创建一个文件并将内容写入其中并关闭该文件。我能够在本地模式以及纱线客户端模式下运行此代码。但是当我使用 yarn-cluster 模式运行相同的代码时,我得到了
作为Error initializing SparkContext。
我用过的Scala代码如下:
object Main {
def main(args: Array[String]): Unit = {
val conf= new SparkConf()
var sparkContext =new SparkContext("yarn-cluster","testHdfsWrite",conf)
val uri = URI.create (hdfslocation); // hdfs location of my home directory
val confi = new Configuration();
val file = FileSystem.get(uri, confi);
val os = file.create(new Path(uri))
os.write("Hello World".getBytes("UTF-8"))
os.close()
}
}
当我使用 local 模式和 yarn-client 模式时,此代码成功创建了一个文件并向其写入内容“Hello World”。但是当我使用 yarn-cluster 模式时,我得到了以下异常。
ERROR SparkContext: Error initializing SparkContext.
org.apache.spark.SparkException: Detected yarn-cluster mode, but isn't running on a cluster. Deployment to YARN is not supported directly by SparkContext. Please use spark-submit.
at org.apache.spark.SparkContext.<init>(SparkContext.scala:411)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:147)
at Main$.main(Main.scala:17)
at Main.main(Main.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
INFO SparkContext: Successfully stopped SparkContext
我已经看过this 和大部分相关链接。但这与我所期望的不同。如果您有正确的链接,请分享,或者如果您知道如何解决此问题,请告诉我。
谢谢
【问题讨论】:
-
向我们展示您是如何提交申请的?是通过IDE还是你提交runnable?
标签: scala hadoop apache-spark hadoop-yarn