apache zepplin은 ipython notebook(https://ipython.org/ipython-doc/3/notebook/)와 비슷한 툴이지만, 언어에 국한되지 않은 interactive 툴이다. 


hive와 python을 연동하기 위해 0.6.2를 설치한 내용을 공유한다. 



$ wget http://apache.tt.co.kr/zeppelin/zeppelin-0.6.2/zeppelin-0.6.2-bin-all.tgz

$ cp zeppelin-env.sh.template zeppelin-env.sh

$ cp zeppelin-site.xml.template zeppelin-site.xml


$ vi zeppelin-env.sh

// 포트를 따로 지정한다.

export ZEPPELIN_PORT=8888

 

 

$ vi zeppelin-site.xml

 

 <property>

  <name>zeppelin.server.port</name>

  <value>8888</value>

  <description>Server port.</description>

</property>

 


 

여기서 그냥 실행하면 anoymous만 뜨기 때문에 인증을 사용할 수 있도록 수정한다.

자세한 내용은 https://zeppelin.apache.org/docs/0.6.2/security/shiroauthentication.html#2-secure-the-websocket-channel 에 있다. 


$ vi conf/shiro.ini
#/api/version = anon
#/** = anon
/** = authc

shiro.ini 파일에 인증 정보가 있는데 수정한다.

admin = samuel
#admin = password1
#user1 = password2, role1, role2
#user2 = password3, role3
#user3 = password4, role2


$ ./bin/zeppelin-daemon.sh start
(재시작은 restart 커맨드를 사용한다)



웹에서 http://xxx:8888/과 같이 서버에 접근한다. 

create note 해서 하나 샘플로 만들고, python 되는지 확인해본다. 

%python
print "hello world"


apazhe zepplin에는 기본 interpreter가 제공된다. 



그런데, hive Interpreter는 0.6.0과 조금 바뀌었다. hive jdbc url 대신, apache pheonix driver로 교체되었다. 



문서는 쉽게 설명되어 있지만, hive 관련 의존성 라이브러리도 몽땅 가져와야 하기 때문에 일이 크다. 


$ cd interpreter/jdbc
$ cp ~/zeppelin-0.6.0-incubating-SNAPSHOT/interpreter/hive/hive* ~/zeppelin-0.6.2/interpreter/jdbc/



conf/interpreter.json 을 잘 살펴봐야 한다. 

hive 설정은 다음과 같다. 

"2C14JFBSH": {
      "id": "2C14JFBSH",
      "name": "jdbc",
      "group": "jdbc",
      "properties": {
        "phoenix.user": "phoenixuser",
        "hive.url": "jdbc:hive2://localhost:10000",
        "default.driver": "org.postgresql.Driver",
        "phoenix.driver": "org.apache.phoenix.jdbc.PhoenixDriver",
        "hive.user": "hive",
        "psql.password": "",
        "psql.user": "phoenixuser",
        "psql.url": "jdbc:postgresql://localhost:5432/",
        "default.user": "gpadmin",
        "phoenix.hbase.client.retries.number": "1",
        "phoenix.url": "jdbc:phoenix:localhost:2181:/hbase-unsecure",
        "tajo.url": "jdbc:tajo://localhost:26002/default",
        "tajo.driver": "org.apache.tajo.jdbc.TajoDriver",
        "psql.driver": "org.postgresql.Driver",
        "default.password": "",
        "zeppelin.jdbc.concurrent.use": "true",
        "hive.password": "",
        "hive.driver": "org.apache.hive.jdbc.HiveDriver",
        "common.max_count": "1000",
        "phoenix.password": "",
        "zeppelin.jdbc.concurrent.max_connection": "10",
        "default.url": "jdbc:postgresql://localhost:5432/"
      },
      
      
여기서 "hive.url": "jdbc:hive2://localhost:10000" 을 원하는 url로 바꾸고, 
hive.user와 hive.password도 변경하다.


그리고 재시작한다. 
        
$ ./bin/zeppelin-daemon.sh reload


웹에서 http://xxx:8888/과 같이 서버에 접근한다.

노트 하나를 만들어서 테스트해본다. use db스키마 이름 없이  full table을 써야 한다. 

%hive

select * from stat.profile where logdate = 20161016 order by count desc limit 5



Posted by '김용환'
,