2016-10-04 27 views
0

通常,在EMR上创建一个spark集群后,有一个spark-defaults.conf文件位于/etc/spark/conf中。EMR设置配置json导致conf文件未被创建

如果我没有提供自定义的CONFIGS,你会发现spark-defaults.conf高兴地坐在在conf目录:从http://docs.aws.amazon.com//ElasticMapReduce/latest/ReleaseGuide/emr-configure-apps.html

[[email protected] ~]$ ls -la /etc/spark/conf/ 
total 64 
drwxr-xr-x 2 root root 4096 Oct 4 08:08 . 
drwxr-xr-x 3 root root 4096 Oct 4 07:41 .. 
-rw-r--r-- 1 root root 987 Jul 26 21:56 docker.properties.template 
-rw-r--r-- 1 root root 1105 Jul 26 21:56 fairscheduler.xml.template 
-rw-r--r-- 1 root root 2373 Oct 4 07:42 hive-site.xml 
-rw-r--r-- 1 root root 2024 Oct 4 07:42 log4j.properties 
-rw-r--r-- 1 root root 2025 Jul 26 21:56 log4j.properties.template 
-rw-r--r-- 1 root root 7239 Oct 4 07:42 metrics.properties 
-rw-r--r-- 1 root root 7239 Jul 26 21:56 metrics.properties.template 
-rw-r--r-- 1 root root 865 Jul 26 21:56 slaves.template 
-rw-r--r-- 1 root root 2680 Oct 4 08:08 spark-defaults.conf 
-rw-r--r-- 1 root root 1292 Jul 26 21:56 spark-defaults.conf.template 
-rwxr-xr-x 1 root root 1563 Oct 4 07:42 spark-env.sh 
-rwxr-xr-x 1 root root 3861 Jul 26 21:56 spark-env.sh.template 

依照指示操作,我想要一个JAR文件添加到驱动程序和执行extraClassPath属性。

[ 
    { 
    "Classification": "spark-defaults", 
    "Properties": { 
     "spark.driver.extraClassPath": ":/usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/*:/home/hadoop/mysql-connector-java-5.1.39-bin.jar", 
     "spark.executor.extraClassPath": ":/usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/*:/home/hadoop/mysql-connector-java-5.1.39-bin.jar" 
    }, 
    "Configurations":[ 

    ] 
    } 
] 

我没有看到在创建集群的任何错误,但是当我添加此配置永远不会出现在spark-defaults.conf文件。

enter image description here

,这里是一个ls显示该文件中不存在的文件系统:

[[email protected] ~]$ ls -la /etc/spark/conf/ 
total 64 
drwxr-xr-x 2 root root 4096 Oct 4 08:08 . 
drwxr-xr-x 3 root root 4096 Oct 4 07:41 .. 
-rw-r--r-- 1 root root 987 Jul 26 21:56 docker.properties.template 
-rw-r--r-- 1 root root 1105 Jul 26 21:56 fairscheduler.xml.template 
-rw-r--r-- 1 root root 2373 Oct 4 07:42 hive-site.xml 
-rw-r--r-- 1 root root 2024 Oct 4 07:42 log4j.properties 
-rw-r--r-- 1 root root 2025 Jul 26 21:56 log4j.properties.template 
-rw-r--r-- 1 root root 7239 Oct 4 07:42 metrics.properties 
-rw-r--r-- 1 root root 7239 Jul 26 21:56 metrics.properties.template 
-rw-r--r-- 1 root root 865 Jul 26 21:56 slaves.template 
-rw-r--r-- 1 root root 1292 Jul 26 21:56 spark-defaults.conf.template 
-rwxr-xr-x 1 root root 1563 Oct 4 07:42 spark-env.sh 
-rwxr-xr-x 1 root root 3861 Jul 26 21:56 spark-env.sh.template 

我在做什么错?

回答

1

所以我只是测试这种电子病历,问题是,你有一个:在classpath规范的面前:

"spark.driver.extraClassPath": ":/usr/lib/hadoop-lzo/... 

需求是

"spark.driver.extraClassPath": "/usr/lib/hadoop-lzo/.... 

注意,AWS也使事情在类路径上设置extraClassPath,你在extraClassPath中指定的内容将会覆盖而不是追加到。换句话说,您应该确保您的spark.xxx.extraClassPath包含AWS默认放置的东西。

+0

我正在经历所有这些麻烦,以配置他们现有的字符串+我的,因为设置extraClassPath被覆盖时,我提交时使用'--spark.driver.extraClassPath'。它的这样一个无赖,它不会简单地追加在首位。感谢您检查了这一点。另外..领先的冒号是EMR如何设置字符串开始时,我第一次看配置 – Kristian

+1

你真的没有做错任何事情。然而,Glennie对最初的“:”是造成问题的原因是正确的。这实际上是解析和处理客户提供的配置分类时非常奇怪的错误,并且导致文件无法创建。我认为这个问题可能会在最新的emr-4.x版本(emr-4.8.0)中修复,但尚未在EMR-5.x版本中修复。如果它在emr-4.8.0中不固定,它将在下一个emr-4.x和emr-5.x版本中修复。 –

+0

@JonathanKelly非常有见地,你是如何得到这些信息的? – Kristian