spark yarn-cluster mode hdfs io文件路径配置

时间:2016-07-04 06:51:26

标签: scala apache-spark configuration yarn hadoop2

我尝试使用psuedo-dist模式在名称节点服务器上运行下面的基本spark wordcount示例:hadoop 2.6.0

import org.apache.spark.{SparkConf, SparkContext}

object WordCount {
  def main(args: Array[String]){

    //args(0): input file name, args(1): output dir name
    //e.g. hello.txt hello
    val conf = new SparkConf().setAppName("WordCount")
    val sc = new SparkContext(conf)

    val input = sc.textFile(args(0))
    val words = input.flatMap(_.split(" "))
    val counts = words.map((_, 1)).reduceByKey(_ + _)

    counts.saveAsTextFile(args(1))
  }
}

使用像这样的start.sh文件......

$SPARK_HOME/bin/spark-submit \
--master yarn-cluster \
--class com.gmail.hancury.hdfsio.WordCount \
./target/scala-2.10/sparktest_2.10-1.0.jar hello.txt server_hello

当我写输入文件路径时

hdfs://master:port/path/to/input/hello.txt
hdfs:/master:port/path/to/input/hello.txt
/path/to/input/hello.txt

自动附加一些神秘的附加路径

/user/${user.name}/input/

所以,如果我写了/user/curycu/input/hello.txt之类的路径,那么应用这样的路径:/user/curycu/input/user/curycu/input/hello.txt

所以会出现fileNotFound异常。

我想知道这条神奇的道路来自哪里......

我检查了名称 - 节点服务器的core-site.xml,yarn-site.xml,hdfs-site.xml,mapred-site.xml,spark_env.sh,spark-defaults.conf但是没有任何线索/user/${user.name}/input

1 个答案:

答案 0 :(得分:0)

当您不使用装配罐(超级罐)时会发生以上错误...

不是sbt package
使用sbt assembly