2014-06-28 11 views
8

Questa combinazione di versioni di Hbase/Spark sembra essere piuttosto tossica. Ho passato ore a cercare di trovare varie MergeStrategy che funzionerebbero ma inutilmente.Hbase 0.96 con Spark v 1.0+

Ecco il nucleo della presente build.sbt:

val sparkVersion = "1.0.0" 
// val sparkVersion = "1.1.0-SNAPSHOT" 

val hbaseVersion = "0.96.1.1-cdh5.0.2" 

libraryDependencies ++= Seq(
    "org.apache.hbase" % "hbase-client" % hbaseVersion, 
    "org.apache.hbase" % "hbase-common" % hbaseVersion, 
    "org.apache.hbase" % "hbase-server" % hbaseVersion, 
    "org.apache.hbase" % "hbase-protocol" % hbaseVersion, 
    "org.apache.hbase" % "hbase-examples" % hbaseVersion, 
    ("org.apache.spark" % "spark-core_2.10" % sparkVersion withSources()).excludeAll(ExclusionRule("org.mortbay.jetty")), 
    "org.apache.spark" % "spark-sql_2.10" % sparkVersion withSources() 
) 

Il seguente è il messaggio di errore che riemerge inevitabilmente:

14/06/27 19:49:24 INFO HttpServer: Starting HTTP Server 
[error] (run-main-0) java.lang.SecurityException: class "javax.servlet.FilterRegistration"'s signer information does not match signer information of other classes in the same package 
java.lang.SecurityException: class "javax.servlet.FilterRegistration"'s signer information does not match signer information of other classes in the same package 
     at java.lang.ClassLoader.checkCerts(ClassLoader.java:952) 
     at java.lang.ClassLoader.preDefineClass(ClassLoader.java:666) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:794) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
     at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
     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 java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
     at org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:136) 
     at org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:129) 
     at org.eclipse.jetty.servlet.ServletContextHandler.<init>(ServletContextHandler.java:98) 
     at org.apache.spark.ui.JettyUtils$.createServletHandler(JettyUtils.scala:98) 
     at org.apache.spark.ui.JettyUtils$.createServletHandler(JettyUtils.scala:89) 
     at org.apache.spark.ui.WebUI.attachPage(WebUI.scala:65) 
     at org.apache.spark.ui.WebUI$$anonfun$attachTab$1.apply(WebUI.scala:58) 
     at org.apache.spark.ui.WebUI$$anonfun$attachTab$1.apply(WebUI.scala:58) 
     at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) 
     at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) 
     at org.apache.spark.ui.WebUI.attachTab(WebUI.scala:58) 
     at org.apache.spark.ui.SparkUI.initialize(SparkUI.scala:66) 
     at org.apache.spark.ui.SparkUI.<init>(SparkUI.scala:60) 
     at org.apache.spark.ui.SparkUI.<init>(SparkUI.scala:42) 
     at org.apache.spark.SparkContext.<init>(SparkContext.scala:222) 
     at org.apache.spark.SparkContext.<init>(SparkContext.scala:117) 
     at com.huawei.swlab.sparkpoc.hbase.HBasePop$.main(HBasePop.scala:31) 
     at com.huawei.swlab.sparkpoc.hbase.HBasePop.main(HBasePop.scala) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
[trace] Stack trace suppressed: run last *:runMain for the full output. 
14/06/27 19:49:44 INFO ConnectionManager: Selector thread was interrupted! 
java.lang.RuntimeException: Nonzero exit code: 1 
+0

odio davvero problemi di dipendenza! * Specialmente * con hbase - hadoop - spark come gli ST sono super criptici. Ad ogni modo, solo suppongo di aver provato a provare a mettere le scintille sopra i deps di hbase. Se ciò non funziona prova a creare un JIRA per le persone scintilla, possono spesso essere molto utili: https://issues.apache.org/jira/browse/SPARK/ – samthebest

+0

@samthebest Grazie per la ricerca! Sean Owen ha commentato la mailing list delle scintille. Ma sì, potrei aver bisogno di seguire il tuo consiglio e inviare una JIRA. – javadba

risposta

17

mi è stato sempre la stessa eccezione con il mio Spark/Applicazione HBase. Ho risolto spostando la regola org.mortbay.jetty esclusione alla mia dipendenza HBase-server:

libraryDependencies += "org.apache.hbase" % "hbase-server" % "0.98.6-cdh5.2.0" excludeAll ExclusionRule(organization = "org.mortbay.jetty") 

Se si dispone di hadoop-common come una delle tue dipendenze dirette, poi ho anche trovato necessario creare una regola di esclusione per javax.servlet dipendenze fra:

libraryDependencies += "org.apache.hadoop" % "hadoop-common" % "2.5.0-cdh5.2.0" excludeAll ExclusionRule(organization = "javax.servlet") 

ho lasciato il mio dipendenze Spark intatta:

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.1.0-cdh5.2.0" 

libraryDependencies += "org.apache.spark" %% "spark-streaming" % "1.1.0-cdh5.2.0" 

libraryDependencies += "org.apache.spark" %% "spark-streaming-kafka" % "1.1.0-cdh5.2.0"