I look into the "Environment" in both modes. yarn-client: spark.jars local:/opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core-3.1.0-incubating.jar,file:/home/xxx/my-app.jar yarn-cluster: spark.yarn.secondary.jars local:/opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core-3.1.0-incubating.jar I wonder why htrace exists in "spark.yarn.secondary.jars" but still not found in URLClassLoader.
I tried both "local" and "file" mode for the jar, still the same error. 2015-05-14 11:37 GMT+08:00 Fengyun RAO <raofeng...@gmail.com>: > Hadoop version: CDH 5.4. > > We need to connect to HBase, thus need extra > "/opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core-3.1.0-incubating.jar" > dependency. > > It works in yarn-client mode: > "spark-submit --class xxx.xxx.MyApp --master yarn-client --num-executors > 10 --executor-memory 10g --jars > /opt/cloudera/parcels/CDH/lib/hbase/lib/htrace-core-3.1.0-incubating.jar > my-app.jar /input /output" > > However, if we change "yarn-client" to "yarn-cluster', it throws an > ClassNotFoundException (actually the class exists in > htrace-core-3.1.0-incubating.jar): > > Caused by: java.lang.NoClassDefFoundError: org/apache/htrace/Trace > at > org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:218) > at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:481) > at > org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65) > at > org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:86) > at > org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:850) > at > org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:635) > ... 21 more > Caused by: java.lang.ClassNotFoundException: org.apache.htrace.Trace > at java.net.URLClassLoader$1.run(URLClassLoader.java:366) > at java.net.URLClassLoader$1.run(URLClassLoader.java:355) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:354) > at java.lang.ClassLoader.loadClass(ClassLoader.java:425) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) > at java.lang.ClassLoader.loadClass(ClassLoader.java:358) > > > Why --jars doesn't work in yarn-cluster mode? How to add extra dependency in > "yarn-cluster" mode? > > >