環境: hadoop2.7.4 spark2.1.0
配置完spark-historyserver和yarn-timelineserver後,啟動的時候沒有報錯,但是在spark用
./spark-submit –class org.apache.spark.examples.SparkPi
–master yarn
–num-executors 3
–driver-memory 1g
–executor-cores 1
/opt/spark-2.1.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.0.jar 20
命令提交application的時候,報了如下錯誤
[root@node-2 bin]# ./spark-submit --class org.apache.spark.examples.SparkPi --master yarn --num-executors 3 --driver-memory 1g --executor-cores 1 /opt/spark-2.1.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.0.jar 2017/12/08 02:01:37 INFO SparkContext: Running Spark version 2.1.017/12/08 02:01:38 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable17/12/08 02:01:38 INFO SecurityManager: Changing view acls to: root17/12/08 02:01:38 INFO SecurityManager: Changing modify acls to: root17/12/08 02:01:38 INFO SecurityManager: Changing view acls groups to: 17/12/08 02:01:38 INFO SecurityManager: Changing modify acls groups to: 17/12/08 02:01:38 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(root); groups with view permissions: Set(); users with modify permissions: Set(root); groups with modify permissions: Set()17/12/08 02:01:38 INFO Utils: Successfully started service 'sparkDriver' on port 40685.17/12/08 02:01:39 INFO SparkEnv: Registering MapOutputTracker17/12/08 02:01:39 INFO SparkEnv: Registering BlockManagerMaster17/12/08 02:01:39 INFO BlockManagerMasterEndpoint: Using org.apache.spark.storage.DefaultTopologyMapper for getting topology information17/12/08 02:01:39 INFO BlockManagerMasterEndpoint: BlockManagerMasterEndpoint up17/12/08 02:01:39 INFO DiskBlockManager: Created local directory at /tmp/spark/blockmgr-5041ec61-5aa3-48ec-86ec-692db6efcce317/12/08 02:01:39 INFO MemoryStore: MemoryStore started with capacity 413.9 MB17/12/08 02:01:39 INFO SparkEnv: Registering OutputCommitCoordinator17/12/08 02:01:39 INFO Utils: Successfully started service 'SparkUI' on port 4040.17/12/08 02:01:39 INFO SparkUI: Bound SparkUI to 0.0.0.0, and started at http://192.168.1.82:404017/12/08 02:01:39 INFO SparkContext: Added JAR file:/opt/spark-2.1.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.0.jar at spark://192.168.1.82:40685/jars/spark-examples_2.11-2.1.0.jar with timestamp 1512698499980Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig at org.apache.hadoop.yarn.client.api.TimelineClient.createTimelineClient(TimelineClient.java:55) at org.apache.hadoop.yarn.client.api.impl.YarnClientImpl.createTimelineClient(YarnClientImpl.java:181) at org.apache.hadoop.yarn.client.api.impl.YarnClientImpl.serviceInit(YarnClientImpl.java:168) at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163) at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:151) at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:56) at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:156) at org.apache.spark.SparkContext.<init>(SparkContext.scala:509) at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2313) at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:868) at org.apache.spark.sql.SparkSession$Builder$$anonfun$6.apply(SparkSession.scala:860) at scala.Option.getOrElse(Option.scala:121) at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:860) at org.apache.spark.examples.SparkPi$.main(SparkPi.scala:31) at org.apache.spark.examples.SparkPi.main(SparkPi.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:738) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)Caused by: java.lang.ClassNotFoundException: com.sun.jersey.api.client.config.ClientConfig at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 24 more17/12/08 02:01:43 INFO DiskBlockManager: Shutdown hook called17/12/08 02:01:43 INFO ShutdownHookManager: Shutdown hook called17/12/08 02:01:43 INFO ShutdownHookManager: Deleting directory /tmp/spark/spark-c9cb41bd-2a3e-4519-92a8-dd3cf232458f17/12/08 02:01:43 INFO ShutdownHookManager: Deleting directory /tmp/spark/spark-c9cb41bd-2a3e-4519-92a8-dd3cf232458f/userFiles-0d69f3fd-fd19-4b50-ac77-b52dcc686c78
意思是找不到com.sun.jersey.api.client.config.ClientConfig這個類.尋找答案說是缺少jersey-core.jar包
我cd到SPARK_HOME/jars路徑下,發現存在的jersey包為以下
確實沒有這個jar包,而且jersey版本為2.22.2,然後我去官方API中查證,發現jersey2.22.2版本中並沒有jersey-core這個jar包,更沒有com.sun.jersey.api.client.config.ClientConfig這個類,我又去查看jersey1.9的API,成功發現了缺失的類,看來是jersey在以後的版本中去掉了這個類.