spark的SPARK_CLASSPATH问题
本帖最后由 chyeers 于 2015-9-14 21:38 编辑在spark-submit提交job的时候,会有一些依赖包,通过 SPARK_CLASSPATH配置指明依赖包位置可以方便很多,但是在 standalone cluster提交过程中报错
org.apache.spark.SparkException: Found both spark.driver.extraClassPath and SPARK_CLASSPATH. Use only the former.
但是提交命令中没有指定spark.driver.extraClassPath,spark-env.sh,spark-defaults.conf也没有指定spark.driver.extraClassPathspark-submit --master spark://hdpb-005:6066 \
--class FromKafkaToPhoenix \
--deploy-mode cluster \
--supervise \
--executor-memory 4G \
--total-executor-cores 16 \
hdfs://h005:9000/spark/lib/test.jar 192.168.10.1:9092 testkafka
是不是重了,两个地方都有
jixianqiuxue 发表于 2015-9-14 23:25
是不是重了,两个地方都有
关键是没有重啊,而且怪异的是,有的时候是运行成功的,不报错。但大部分是运行不成功报这个错误。
chyeers 发表于 2015-9-15 09:15
关键是没有重啊,而且怪异的是,有的时候是运行成功的,不报错。但大部分是运行不成功报这个错误。
看看配置文件,还有Linux环境变量。肯定有重的,只不过可能没有找到对应位置
先把 SPARK_CLASSPATH注释掉,在运行。
Alkaloid0515 发表于 2015-9-15 10:38
看看配置文件,还有Linux环境变量。肯定有重的,只不过可能没有找到对应位置
先把 SPARK_CLASSPATH注释 ...
问题排查出来了,我是做的一个 spark streaming 程序,启动后设置了checkpoint,刚开始 checkpoint dir 没有生成的时候执行程序没有问题,然后在执行的过程中spark会将SPARK_CLASSPATH中的jar包路径分别传递给 spark.driver.extraClassPath 和spark.executor.extraClassPath ,并且将环境变量保存在 checkpoint dir 中,所以当你停掉 该程序,第二次启动程序的时候,spark streaming 会从 checkpoint dir 中获取环境路径spark.driver.extraClassPath和spark.executor.extraClassPath,然后与 SPARK_CLASSPATH 冲突,然后报错。这种处理机制很麻烦,使得 程序必须一直运行,不能停止,停止后重启就必须删除 checkpoint ,但是checkpoint中有恢复机制,删了我怎么恢复原先执行状态 ?这是个BUG!
本帖最后由 pt1688 于 2015-9-16 13:53 编辑
chyeers 发表于 2015-9-15 11:50
问题排查出来了,我是做的一个 spark streaming 程序,启动后设置了checkpoint,刚开始 checkpoint dir 没 ...
解决方法:
1 在spark-env.sh中注释spark_classpath, spark streaming 使用checkpoint没有问题,但是同集群下spark 程序不能正常运行
2 不使用checkpoint恢复StreamingContext,参见 官方手册中必须使用checkpoint的俩条原则。
pt1688 发表于 2015-9-16 11:44
解决方法:
1 在spark-env.sh中注释spark_classpath, spark streaming 使用checkpoint没有问题,但是同 ...
"spark streaming 使用checkpoint没有问题,但是同集群下spark 程序不能正常运行" why?
页:
[1]