빅데이터

Spark 개발환경 구축 - Zeppelin Spark Interpreter에 HBase 연결하기

CyberI 2017. 6. 23. 10:25

 지난 시간에는 Intellij를 이용한 개발환경을 구축하였습니다. 자동완성 등을 이용하기 위하여 여전히 IDE툴로써 사용중에 있고, 실제 실행 테스트는 편리하게 Zeppelin을 사용하고 있습니다. 

 현재 개발환경에서 HBase에서 데이터를 가져와서 다루는 일이 필요하게 되었습니다. Zeppelin에 HBase Interpreter를 제공하는 것 같지만, 저는 Intellij에서 컴파일 한 결과를 Jar로 묶어서 활용도 할 것이기에 Spark Interpreter에 붙여보려고 시도하였습니다. 그런데 역시 알수없는 에러들과 함께 저의 진행을 막아섰던 경험을 했기에, 저같은 피해자가 없도록 그 내용을 공유하려 합니다.

 

 먼저 Zeppelin을 사용하려면 설치부터 해야 하는데, 너무나 간단하기 때문에 패스하겠습니다. (압축풀고 실행만 하면 됩니다.)

 실행을 하고 Zeppelin 페이지를 열어보면 아래와 같은 화면이 나오는데, 가장 우측에 "anonymous"를 클릭하고 하단에 "Interpreter"를 선택합니다. 

 

 Spark가 내재되어 있는 Zeppelin을 다운 받아서 Interpreter에 Spark밖에 존재하지 않습니다. 

우측에 "edit"버튼을 클릭해서 내용을 수정합니다. 

 

Dependencies 부분이 우리가 HBase를 사용하겠다고 선언해야 하는 부분입니다.

 

 HBase에서 제공하는 jar 파일들을 추가해 보도록 하겠습니다. 

 총 3개의 jar 파일로 아래와 같습니다. ( 버전은 최신버전이 아닐 수 있습니다.)

"org.apache.hbase:hbase-common:jar:1.3.1"

"org.apache.hbase:hbase-client:jar:1.3.1"

"org.apache.hbase:hbase-server:jar:1.3.1"

그리고 Save 버튼을 누르고 Interpreter를 재시작 합니다.

 

 

그다음 간단한 Hbase 테스트 소스를 만들고, 

 

Job을 실행해 보겠습니다. 

어찌된 영문인지, 저상태에서 더이상 반응이 없습니다.... 

 

Log를 확인해 보겠습니다. 

 에러가 났습니다. 에러의 내용은 netty 라이브러리가 충돌이 난 것 같은 내용입니다. 

다시 Spark Interpreter 세팅에 가서,  Dependencies에 exclude 부분에 netty만을 추가해서 돌리면, 또 다시 에러를 만나게 됩니다. 제가 만난 케이스는 

1. Spark UI 페이지가 안열리고, 

2. Job이 정상종료가 아닌 에러 종료가 되는 문제가 발생하였습니다. 

 그래서 library들을 하나하나 제거하여서 결국 최종적으로 아래의 library들을 exclude 시키게 되었습니다. 

 

"javax.servlet:servlet-api, io.netty:netty-all, org.mortbay.jetty:jetty, org.mortbay.jetty:jetty-util, org.mortbay.jetty:servlet-api, commons-logging:commons-logging, org.apache.velocity:velocity, asm:asm, org.ow2.asm:asm, org.jboss.netty:netty, com.sun.jersey:jersey-core, com.sun.jersey:jersey-server, org.apache.hadoop:hadoop-yarn-common,org.apache.hadoop:hadoop-yarn,org.apache.hadoop:hadoop-auth,org.apache.hadoop:hadoop-annotations,org.apache.hadoop:hadoop-mapreduce-client-core"

 

이 내용들을 hbase-common, hbase-client, hbase-server의 exclude부분에 넣어 줍니다.

 

 그리고 Itnerpreter를 재시작 시켜야 하는데, Job 안에서 바로 재시작하는 방법이 있습니다. 우측에 설정버튼 같은 것을 누르면, Interpreter들이 나오는데, Spark 앞에 화살표 부분을 클릭하면 편리하게 재시작 할 수 있습니다.

 

 자 이제 준비는 되었고, 다시 한번 Job을 실행시킵니다.

 

성공적으로 완료 되었습니다. Spark UI 페이지도 확인해 보겠습니다.

 

 성공적으로 페이지도 열리고, 작업이 정상적으로 끝났습니다. 

 이제 더이상의 삽질 없이 Zeppelin에서 Spark을 이용하여 HBase의 내용을 조회하고, 데이터를 넣을 수 있습니다. 

 

시리즈 내용은 아래 링크를 통해 확인해주세요.

 

Spark 개발환경 구축 - Scala, Intellij, Maven

 

 

'빅데이터' 카테고리의 다른 글

docker 이해  (0) 2017.07.07
스마트의 시작, Ontology_3  (0) 2017.06.30
[세번째 이야기] Hadoop Cluster 설치하기  (1) 2017.06.14
데이터 수집 – flume [2/2]  (0) 2017.06.09
스마트의 시작, Ontology_2  (0) 2017.06.02