Apache Zeppelin使用入門指南:安裝
Apache Zeppelin使用入門指南:程式設計
Apache Zeppelin使用入門指南:添加外部依賴
Apache Zeppelin是一款基于web的notebook(類似于ipython的notebook),支援互動式地資料分析。原生就支援Spark、Scala、SQL 、shell, markdown等。而且它是完全開源的,目前還處于Apache孵化階段。本文所有的操作都是基于Apache Zeppelin 0.6.0-incubating-SNAPSHOT,spark 1.5.2的。
本文将介紹如何編譯、安裝以及使用Apache Zeppelin。
編譯和安裝Apache Zeppelin
Apache Zeppelin官方提供了Source包和二進制包,我們可以根據需要下載下傳相關的包進行安裝。這裡我通過編譯源碼的方式來安裝Apache Zeppelin,通過源碼編譯Zeppelin非常地簡單,我這裡從Zeppelin的git庫裡面下載下傳最新的源碼進行編譯,步驟如下:
01 | [[email protected] ~]$ git clone https://github.com/apache/incubator-zeppelin.git |
02 | [[email protected] ~]$ cd incubator-zeppelin |
03 | [[email protected] ~]$ mvn package -Pspark-1.5 -Dhadoop.version=2.2.0 -Phadoop-2.2 -DskipTests |
04 | [INFO] Reactor Summary: |
06 | [INFO] Zeppelin ........................................... SUCCESS [ 4.336 s] |
07 | [INFO] Zeppelin: Interpreter .............................. SUCCESS [ 4.525 s] |
08 | [INFO] Zeppelin: Zengine .................................. SUCCESS [ 2.465 s] |
09 | [INFO] Zeppelin: S park dependencies ...................... SUCCESS [ 30.643 s] |
10 | [INFO] Zeppelin: S park ................................... SUCCESS [ 2.220 s] |
11 | [INFO] Zeppelin: Markdown interpreter ..................... SUCCESS [ 0.223 s] |
12 | [INFO] Zeppelin: Angular interpreter ...................... SUCCESS [ 0.495 s] |
13 | [INFO] Zeppelin: Shell interpreter ........................ SUCCESS [ 0.203 s] |
14 | [INFO] Zeppelin: Hive interpreter ......................... SUCCESS [ 1.590 s] |
15 | [INFO] Zeppelin: Apache Phoenix Interpreter ............... SUCCESS [ 2.196 s] |
16 | [INFO] Zeppelin: PostgreSQL interpreter ................... SUCCESS [ 0.202 s] |
17 | [INFO] Zeppelin: JDBC interpreter ......................... SUCCESS [ 0.171 s] |
18 | [INFO] Zeppelin: Tajo interpreter ......................... SUCCESS [ 0.436 s] |
19 | [INFO] Zeppelin: Flink .................................... SUCCESS [ 0.864 s] |
20 | [INFO] Zeppelin: Apache Ignite interpreter ................ SUCCESS [ 0.219 s] |
21 | [INFO] Zeppelin: Kylin interpreter ........................ SUCCESS [ 0.223 s] |
22 | [INFO] Zeppelin: Lens interpreter ......................... SUCCESS [ 1.030 s] |
23 | [INFO] Zeppelin: Cassandra ................................ SUCCESS [ 2.954 s] |
24 | [INFO] Zeppelin: Elasticsearch interpreter ................ SUCCESS [ 1.601 s] |
25 | [INFO] Zeppelin: web Application .......................... SUCCESS [01:19 min] |
26 | [INFO] Zeppelin: Server ................................... SUCCESS [ 54.665 s] |
27 | [INFO] Zeppelin: Packaging distribution ................... SUCCESS [ 0.991 s] |
28 | [INFO] ------------------------------------------------------------------------ |
30 | [INFO] ------------------------------------------------------------------------ |
31 | [INFO] Total time : 03:12 min |
32 | [INFO] Finished at: 2016-01-20T16:35:33+08:00 |
33 | [INFO] Final Memory: 97M/1298M |
34 | [INFO] ------------------------------------------------------------------------ |
在編譯Zeppelin的時候,會安裝npm和node等,是以安裝的進度有時會很慢。目前Zeppelin支援Spark 1.1到Spark 1.6和Hadoop 0.23到Hadoop 2.6等版本,我們可以分别通過下面選項指定相應的Spark和Hadoop版本:
如果你需要使用到YARN,你必須在編譯Zeppelin的時候指定
-Pyarn
選項,具體可以參見本部落格的 《在Yarn上運作Apache Zeppelin & Spark》 。
如果你需要使用到PySpark,編譯的時候需要使用
-Ppyspark
。
編譯完Zeppelin之後,我們就可以啟動Zeppelin:
1 | [[email protected] ~]$ bin/zeppelin-daemon.sh start |
停止Zeppelin可以使用:
1 | [[email protected] ~]$ bin/zeppelin-daemon.sh stop |
所有運作的日志會輸入到
logs
目錄下,如果遇到錯誤可以到裡面去查找相關的日志。
需要注意的是,Zeppelin預設是在8080端口上啟動相關的web服務的,在你伺服器上,如果這個端口已經被占用了,那麼會導緻Zeppelin啟動失敗,并在日志裡面抛出以下的異常:
01 | WARN [2016-01-20 16:36:44,830] ({main} AbstractLifeCycle.java[setFailed]:204) - |
02 | FAILED SelectChannel[email protected]:8080: java.net.BindException: Address already in use |
03 | java.net.BindException: Address already in use |
04 | at sun.nio.ch.Net.bind0(Native Method) |
05 | at sun.nio.ch.Net.bind(Net.java:444) |
06 | at sun.nio.ch.Net.bind(Net.java:436) |
07 | at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214) |
08 | at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) |
09 | at org.eclipse.jetty.server.nio.SelectChannelConnector. open (SelectChannelConnector.java:187) |
10 | at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316) |
11 | at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:265) |
12 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) |
13 | at org.eclipse.jetty.server.Server.doStart(Server.java:293) |
14 | at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) |
15 | at org.apache.zeppelin.server.ZeppelinServer.main(ZeppelinServer.java:114) |
我們可以到
conf/zeppelin-site.xml
檔案裡面進行配置,并修改
zeppelin.server.port
屬性的值為其他不被占用的端口,如下:
2 | < name >zeppelin.server.port</ name > |
3 | < value >8090</ value > |
4 | < description >Server port.</ description > |
然後我們需要重新開機Zeppelin:
1 | [[email protected] ~]$ bin/zeppelin-daemon restart |
一切順利的話,我們就可以在http://www.iteblog.com:8080上面看到下面頁面資訊: