EMR 设置配置 json 导致未创建 conf 文件
EMR setting config json results in conf file not being created
通常情况下,我在 EMR 上创建 spark 集群后,spark-defaults.conf
文件位于 /etc/spark/conf
。
如果我不提供自定义配置,您会发现 spark-defaults.conf
愉快地坐在 conf 目录中:
[hadoop@ip-x-x-x-x ~]$ 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
按照 http://docs.aws.amazon.com//ElasticMapReduce/latest/ReleaseGuide/emr-configure-apps.html 的说明,我正在尝试将 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
文件从未出现。
这里的 ls
显示文件系统中不存在该文件:
[hadoop@ip-x-x-x-x ~]$ 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
我做错了什么?
所以我刚刚在 EMR 上测试了这个,问题是你的类路径规范前面有一个 :
:
"spark.driver.extraClassPath": ":/usr/lib/hadoop-lzo/...
需要
"spark.driver.extraClassPath": "/usr/lib/hadoop-lzo/....
请注意,AWS 还通过设置 extraClassPath
将内容放在类路径中,您在 extraClassPath
中指定的内容将 覆盖 而不是附加到它。换句话说,您应该确保您的 spark.xxx.extraClassPath
包含 AWS 默认放置的内容。
通常情况下,我在 EMR 上创建 spark 集群后,spark-defaults.conf
文件位于 /etc/spark/conf
。
如果我不提供自定义配置,您会发现 spark-defaults.conf
愉快地坐在 conf 目录中:
[hadoop@ip-x-x-x-x ~]$ 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
按照 http://docs.aws.amazon.com//ElasticMapReduce/latest/ReleaseGuide/emr-configure-apps.html 的说明,我正在尝试将 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
文件从未出现。
这里的 ls
显示文件系统中不存在该文件:
[hadoop@ip-x-x-x-x ~]$ 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
我做错了什么?
所以我刚刚在 EMR 上测试了这个,问题是你的类路径规范前面有一个 :
:
"spark.driver.extraClassPath": ":/usr/lib/hadoop-lzo/...
需要
"spark.driver.extraClassPath": "/usr/lib/hadoop-lzo/....
请注意,AWS 还通过设置 extraClassPath
将内容放在类路径中,您在 extraClassPath
中指定的内容将 覆盖 而不是附加到它。换句话说,您应该确保您的 spark.xxx.extraClassPath
包含 AWS 默认放置的内容。