Programming/Java

Spark on HBase 컴파일 시 의존성 문제

라우드니스 2015. 11. 23. 14:14

참조: http://www.abcn.net/2014/07/lighting-spark-with-hbase-full-edition.html


Spark의 공식 예제 의 경우 빌드를 Maven으로 하기 때문에 SBT로 이용하기 위해 검색하던 중 의존성에 대한 문제가 생겼다. 여러 가지의 문서중에서 Spark의 예제 중 HBaseTest.scala 파일의 컴파일 하기 위한 의존성은 윗 링크와 같았다:


libraryDependencies ++= Seq(
        "org.apache.spark" % "spark-core_2.10" % "1.0.1",
        "org.apache.hbase" % "hbase" % "0.98.2-hadoop2",
        "org.apache.hbase" % "hbase-client" % "0.98.2-hadoop2",
        "org.apache.hbase" % "hbase-common" % "0.98.2-hadoop2",
        "org.apache.hbase" % "hbase-server" % "0.98.2-hadoop2"
)


이 중 Spark만 최신 저장소인 "org.apache.spark" %% "spark-core" % "1.5.1" 로 사용하였다.


그 외에 spark을 실행하기 위해 driver-class-path로는 hbase-* 로 시작하는 lib만 제공할 때에는 google 쪽 library에서 문제가 나 현재는 모든 library 파일들을 같이 전송하는 형식으로 테스트 해보고 있다. 



name := "HBase Test"


version := "1.0"


scalaVersion := "2.11.7"


libraryDependencies ++= Seq(

        "org.apache.spark" %% "spark-core" % "1.5.1",

        "org.apache.hadoop" % "hadoop-common" % "2.6.0",

        "org.apache.hadoop" % "hadoop-client" % "2.6.0",

        "org.apache.hbase" % "hbase" % "1.1.2",

        "org.apache.hbase" % "hbase-client" % "1.1.2",

        "org.apache.hbase" % "hbase-common" % "1.1.2",

        "org.apache.hbase" % "hbase-server" % "1.1.2"

)


+) 현재는 scala compiler만을 이용해서 컴파일 하고 있다. 이 때 사용한 command는 다음과 같다:


scalac -bootclasspath /home/tkyoo/spark/lib/spark-assembly-1.5.1-hadoop2.6.0.jar:/home/tkyoo/hbase/lib/hbase-client-1.1.2.jar:/home/tkyoo/hbase/lib/hbase-hadoop2-compat-1.1.2.jar:/home/tkyoo/hbase/lib/hbase-common-1.1.2.jar:/home/hadoop/tkyoo/lib/hbase-hadoop-compat-1.1.2.jar:/home/tkyoo/hbase/lib/hadoop-common-2.5.1.jar:/home/tkyoo/hbase/lib/hadoop-mapreduce-client-common-2.5.1.jar:/home/tkyoo/hbase/lib/hadoop-mapreduce-client-core-2.5.1.jar:/home/tkyoo/hbase/lib/hbase-protocol-1.1.2.jar:/home/tkyoo/hbase/lib/hbase-annotations-1.1.2.jar


library 이름들만 적으면 이렇다.


1. spark-assembly-1.5.1-hadoop2.6.0.jar

2. hbase-client-1.1.2.jar

3. hbase-hadoop2-compat-1.1.2.jar

4. hbase-common-1.1.2.jar

5. hbase-hadoop-compat-1.1.2.jar

6. hadoop-common-2.5.1.jar

7. hadoop-mapreduce-client-common-2.5.1.jar

8. hadoop-mapreduce-client-core-2.5.1.jar

9. hbase-protocol-1.1.2.jar

10. hbase-annotations-1.1.2.jar


추린다고 추리긴 했는데 실제로 사용되지 않는 library가 존재할 수 도 있다.




반응형