본문 바로가기
프로그래밍/Elasticserach

zeppelin, Elasticsearch 와 spark

by W.C. 2019. 2. 28.

테스트 Poc를 수행하기 위해 CDH6.1을 설치 하였다.


거기서 분석 툴로서 Zeppelin을 간만에 올려 보기로 하고 진행 하던 중 발 생한 문제 정리


Zeppelin 버젼은 0.8.0 

CDH 버젼은 6.1

Elasticsearch 버젼은 6.6


CDH 설치는 무리 없이 진행.

Elasticsearch도 별 무리 없이 진행.


zeppelin 설이 진행 시 많은 문제가 있었다.


-> 최초 zeppelin 홈페이지에서 package 파일을 다운 받아 실행

1. 에러 메시지

  common-lang 버젼 충돌 오류

  ---------------------------------

  CDH spark2.4에서는 common-lang-2.6을 사용하고 있는데 zeppelin 에서는 common-lang3-3.5를 사용 중

  => 그래서 CDH의 common-lang을 zeppelin lib로 옮겨주고 기존 common-lang3을 삭제 

  같은 오류 반복적으로 발생


  결국 zeppelin source를 받아서 재컴파일 하기로 했음

  git에서 source를 받음

 

  

  


 <commons.lang.version>2.6</common.lang.version> 으로 변경하여 

maven을 이용하여 컴파일


maven은 업그레이드를 해야 함


https://linuxize.com/post/how-to-install-apache-maven-on-centos-7/ <-따라하면 됨


하지만 compile 시 수많은 에러 들이 발생 


화가 남


CDH6.1에 맞는 버젼을 설치 하기 힘듬


mvn clean package -Pbuild-distr -Pspark-2.4 -Phadoop-3.0 -Pscala-2.11 -DskipTests


위 명령 후 필요 한 interfreter 만 설치 하면 됨



beam 설치 시 오류 다음 위와 같은 모듈만 설치


설치 후 잘 동작하나


ElasticSearch와 Spark 연동이 이루어 지지 않음



Previous exception in task: org/apache/commons/httpclient/Credentials
        org.elasticsearch.hadoop.rest.commonshttp.CommonsHttpTransportFactory.create(CommonsHttpTransportFactory.java:40)
        org.elasticsearch.hadoop.rest.NetworkClient.selectNextNode(NetworkClient.java:102)
        org.elasticsearch.hadoop.rest.NetworkClient.<init>(NetworkClient.java:85)
        org.elasticsearch.hadoop.rest.NetworkClient.<init>(NetworkClient.java:61)
        org.elasticsearch.hadoop.rest.RestClient.<init>(RestClient.java:94)
        org.elasticsearch.hadoop.rest.RestRepository.<init>(RestRepository.java:129)
        org.elasticsearch.hadoop.rest.RestService.createReader(RestService.java:419)
        org.elasticsearch.spark.rdd.AbstractEsRDDIterator.reader$lzycompute(AbstractEsRDDIterator.scala:49)
        org.elasticsearch.spark.rdd.AbstractEsRDDIterator.reader(AbstractEsRDDIterator.scala:42)
        org.elasticsearch.spark.rdd.AbstractEsRDDIterator.hasNext(AbstractEsRDDIterator.scala:61)
        org.apache.spark.util.Utils$.getIteratorSize(Utils.scala:1817)
        org.apache.spark.rdd.RDD$$anonfun$count$1.apply(RDD.scala:1168)
        org.apache.spark.rdd.RDD$$anonfun$count$1.apply(RDD.scala:1168)
        org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2113)
        org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2113)
        org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)
        org.apache.spark.scheduler.Task.run(Task.scala:121)
        org.apache.spark.executor.Executor$TaskRunner$$anonfun$11.apply(Executor.scala:407)
        org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360)
        org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:413)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        java.lang.Thread.run(Thread.java:748)
        at org.apache.spark.TaskContextImpl.invokeListeners(TaskContextImpl.scala:138)
        at org.apache.spark.TaskContextImpl.markTaskCompleted(TaskContextImpl.scala:116)
        at org.apache.spark.scheduler.Task.run(Task.scala:131)
        at org.apache.spark.executor.Executor$TaskRunner$$anonfun$11.apply(Executor.scala:407)
        at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360)
        at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:413)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)


위와 같은 에러가 발생함 여러 모로 고민하고 찾아 본 결과


결국은 commons-httpclient  파일이 CDH6.1 버젼에 존재하지 않아서 발생하는 문제 였음


spark홈페이지에서 제공하느 2.4 버젼에는 해당 파일이 있으나 CDH6.1의 spark 2.4 lib에는 파일이 없음


결국 심볼릭 링크 걸고 제실해하면 잘 동작함