Apache Spark 与 Hive 的部署问题(集群模式)
Apache Spark's deployment issue (cluster-mode) with Hive
编辑:
我正在开发一个 Spark 应用程序,它从多个结构化模式中读取数据,并且我正在尝试从这些模式中聚合信息。当我在本地 运行 时,我的应用程序 运行 运行良好。但是当我 运行 它在集群上时,我在配置(很可能是 hive-site.xml)或提交命令参数方面遇到了问题。我已经查找了其他相关帖子,但找不到适合我的场景的解决方案。我已经在下面详细提到了我尝试过的命令以及遇到的错误。我是 Spark 的新手,我可能遗漏了一些微不足道的东西,但可以提供更多信息来支持我的问题。
原题:
我一直在尝试 运行 我的 spark 应用程序在与 HDP2.3 组件捆绑在一起的 6 节点 Hadoop 集群中。
以下是可能对你们提出解决方案有用的组件信息:
集群信息:6节点集群:
128GB 内存
24芯
8TB 硬盘
应用程序中使用的组件
HDP - 2.3
Spark - 1.3.1
$ hadoop 版本:
Hadoop 2.7.1.2.3.0.0-2557
Subversion git@github.com:hortonworks/hadoop.git -r 9f17d40a0f2046d217b2bff90ad6e2fc7e41f5e1
Compiled by jenkins on 2015-07-14T13:08Z
Compiled with protoc 2.5.0
From source with checksum 54f9bbb4492f92975e84e390599b881d
场景:
我正在尝试以某种方式使用 SparkContext 和 HiveContext 以充分利用 spark 对其数据结构(如数据框)的实时查询。我的应用程序中使用的依赖项是:
<dependency> <!-- Spark dependency -->
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.10</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>com.databricks</groupId>
<artifactId>spark-csv_2.10</artifactId>
<version>1.4.0</version>
</dependency>
以下是我收到的提交命令和对应的错误日志:
提交命令1:
spark-submit --class working.path.to.Main \
--master yarn \
--deploy-mode cluster \
--num-executors 17 \
--executor-cores 8 \
--executor-memory 25g \
--driver-memory 25g \
--num-executors 5 \
application-with-all-dependencies.jar
错误日志 1:
User class threw exception: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
提交命令2:
spark-submit --class working.path.to.Main \
--master yarn \
--deploy-mode cluster \
--num-executors 17 \
--executor-cores 8 \
--executor-memory 25g \
--driver-memory 25g \
--num-executors 5 \
--files /etc/hive/conf/hive-site.xml \
application-with-all-dependencies.jar
错误日志 2:
User class threw exception: java.lang.NumberFormatException: For input string: "5s"
由于我没有管理权限,我无法修改配置。好吧,我可以联系 IT 工程师进行更改,但我正在寻找
如果可能的话,涉及较少更改配置文件的解决方案!
建议更改配置 here。
然后我尝试按照其他论坛中的建议将各种 jar 文件作为参数传递。
提交命令 3:
spark-submit --class working.path.to.Main \
--master yarn \
--deploy-mode cluster \
--num-executors 17 \
--executor-cores 8 \
--executor-memory 25g \
--driver-memory 25g \
--num-executors 5 \
--jars /usr/hdp/2.3.0.0-2557/spark/lib/datanucleus-api-jdo-3.2.6.jar,/usr/hdp/2.3.0.0-2557/spark/lib/datanucleus-core-3.2.10.jar,/usr/hdp/2.3.0.0-2557/spark/lib/datanucleus-rdbms-3.2.9.jar \
--files /etc/hive/conf/hive-site.xml \
application-with-all-dependencies.jar
错误日志 3:
User class threw exception: java.lang.NumberFormatException: For input string: "5s"
我不明白以下命令发生了什么,无法分析错误日志。
提交命令4:
spark-submit --class working.path.to.Main \
--master yarn \
--deploy-mode cluster \
--num-executors 17 \
--executor-cores 8 \
--executor-memory 25g \
--driver-memory 25g \
--num-executors 5 \
--jars /usr/hdp/2.3.0.0-2557/spark/lib/*.jar \
--files /etc/hive/conf/hive-site.xml \
application-with-all-dependencies.jar
提交日志4:
Application application_1461686223085_0014 failed 2 times due to AM Container for appattempt_1461686223085_0014_000002 exited with exitCode: 10
For more detailed output, check application tracking page:http://cluster-host:XXXX/cluster/app/application_1461686223085_0014Then, click on links to logs of each attempt.
Diagnostics: Exception from container-launch.
Container id: container_e10_1461686223085_0014_02_000001
Exit code: 10
Stack trace: ExitCodeException exitCode=10:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:545)
at org.apache.hadoop.util.Shell.run(Shell.java:456)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:722)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:211)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Container exited with a non-zero exit code 10
Failing this attempt. Failing the application.
还有其他可能的选择吗?任何形式的帮助将不胜感激。如果您需要任何其他信息,请告诉我。
谢谢。
here 中解释的解决方案适用于我的案例。 hive-site.xml 所在的两个位置可能会造成混淆。使用 --files /usr/hdp/current/spark-client/conf/hive-site.xml
而不是 --files /etc/hive/conf/hive-site.xml
。我不必为我的配置添加罐子。希望这能帮助遇到类似问题的人。谢谢
编辑:
我正在开发一个 Spark 应用程序,它从多个结构化模式中读取数据,并且我正在尝试从这些模式中聚合信息。当我在本地 运行 时,我的应用程序 运行 运行良好。但是当我 运行 它在集群上时,我在配置(很可能是 hive-site.xml)或提交命令参数方面遇到了问题。我已经查找了其他相关帖子,但找不到适合我的场景的解决方案。我已经在下面详细提到了我尝试过的命令以及遇到的错误。我是 Spark 的新手,我可能遗漏了一些微不足道的东西,但可以提供更多信息来支持我的问题。
原题:
我一直在尝试 运行 我的 spark 应用程序在与 HDP2.3 组件捆绑在一起的 6 节点 Hadoop 集群中。
以下是可能对你们提出解决方案有用的组件信息:
集群信息:6节点集群:
128GB 内存 24芯 8TB 硬盘
应用程序中使用的组件
HDP - 2.3
Spark - 1.3.1
$ hadoop 版本:
Hadoop 2.7.1.2.3.0.0-2557
Subversion git@github.com:hortonworks/hadoop.git -r 9f17d40a0f2046d217b2bff90ad6e2fc7e41f5e1
Compiled by jenkins on 2015-07-14T13:08Z
Compiled with protoc 2.5.0
From source with checksum 54f9bbb4492f92975e84e390599b881d
场景:
我正在尝试以某种方式使用 SparkContext 和 HiveContext 以充分利用 spark 对其数据结构(如数据框)的实时查询。我的应用程序中使用的依赖项是:
<dependency> <!-- Spark dependency -->
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.10</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>com.databricks</groupId>
<artifactId>spark-csv_2.10</artifactId>
<version>1.4.0</version>
</dependency>
以下是我收到的提交命令和对应的错误日志:
提交命令1:
spark-submit --class working.path.to.Main \
--master yarn \
--deploy-mode cluster \
--num-executors 17 \
--executor-cores 8 \
--executor-memory 25g \
--driver-memory 25g \
--num-executors 5 \
application-with-all-dependencies.jar
错误日志 1:
User class threw exception: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
提交命令2:
spark-submit --class working.path.to.Main \
--master yarn \
--deploy-mode cluster \
--num-executors 17 \
--executor-cores 8 \
--executor-memory 25g \
--driver-memory 25g \
--num-executors 5 \
--files /etc/hive/conf/hive-site.xml \
application-with-all-dependencies.jar
错误日志 2:
User class threw exception: java.lang.NumberFormatException: For input string: "5s"
由于我没有管理权限,我无法修改配置。好吧,我可以联系 IT 工程师进行更改,但我正在寻找 如果可能的话,涉及较少更改配置文件的解决方案!
建议更改配置 here。
然后我尝试按照其他论坛中的建议将各种 jar 文件作为参数传递。
提交命令 3:
spark-submit --class working.path.to.Main \
--master yarn \
--deploy-mode cluster \
--num-executors 17 \
--executor-cores 8 \
--executor-memory 25g \
--driver-memory 25g \
--num-executors 5 \
--jars /usr/hdp/2.3.0.0-2557/spark/lib/datanucleus-api-jdo-3.2.6.jar,/usr/hdp/2.3.0.0-2557/spark/lib/datanucleus-core-3.2.10.jar,/usr/hdp/2.3.0.0-2557/spark/lib/datanucleus-rdbms-3.2.9.jar \
--files /etc/hive/conf/hive-site.xml \
application-with-all-dependencies.jar
错误日志 3:
User class threw exception: java.lang.NumberFormatException: For input string: "5s"
我不明白以下命令发生了什么,无法分析错误日志。
提交命令4:
spark-submit --class working.path.to.Main \
--master yarn \
--deploy-mode cluster \
--num-executors 17 \
--executor-cores 8 \
--executor-memory 25g \
--driver-memory 25g \
--num-executors 5 \
--jars /usr/hdp/2.3.0.0-2557/spark/lib/*.jar \
--files /etc/hive/conf/hive-site.xml \
application-with-all-dependencies.jar
提交日志4:
Application application_1461686223085_0014 failed 2 times due to AM Container for appattempt_1461686223085_0014_000002 exited with exitCode: 10
For more detailed output, check application tracking page:http://cluster-host:XXXX/cluster/app/application_1461686223085_0014Then, click on links to logs of each attempt.
Diagnostics: Exception from container-launch.
Container id: container_e10_1461686223085_0014_02_000001
Exit code: 10
Stack trace: ExitCodeException exitCode=10:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:545)
at org.apache.hadoop.util.Shell.run(Shell.java:456)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:722)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:211)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Container exited with a non-zero exit code 10
Failing this attempt. Failing the application.
还有其他可能的选择吗?任何形式的帮助将不胜感激。如果您需要任何其他信息,请告诉我。
谢谢。
here 中解释的解决方案适用于我的案例。 hive-site.xml 所在的两个位置可能会造成混淆。使用 --files /usr/hdp/current/spark-client/conf/hive-site.xml
而不是 --files /etc/hive/conf/hive-site.xml
。我不必为我的配置添加罐子。希望这能帮助遇到类似问题的人。谢谢