1. 程式人生 > >Spark互動式分析平臺Apache Zeppelin的安裝

Spark互動式分析平臺Apache Zeppelin的安裝

Zeppelin介紹

Apache Zeppelin提供了web版的類似ipython的notebook,用於做資料分析和視覺化。背後可以接入不同的資料處理引擎,包括spark, hive, tajo等,原生支援scala, java, shell, markdown等。它的整體展現和使用形式和Databricks Cloud是一樣的,就是來自於當時的demo。

Zeppelin可實現你所需要的:
- 資料採集
- 資料發現
- 資料分析
- 資料視覺化和協作

支援多種語言,預設是scala(背後是spark shell),SparkSQL, Markdown 和 Shell。


甚至可以新增自己的語言支援。如何寫一個zeppelin直譯器

Zeppelin特性

Apache Spark 整合

Zeppelin 提供了內建的 Apache Spark 整合。你不需要單獨構建一個模組、外掛或者庫。
Zeppelin的Spark整合提供了:
- 自動引入SparkContext 和 SQLContext
- 從本地檔案系統或maven庫載入執行時依賴的jar包。更多關於依賴載入器
- 可取消job 和 展示job進度

資料視覺化

一些基本的圖表已經包含在Zeppelin中。視覺化並不只限於SparkSQL查詢,後端的任何語言的輸出都可以被識別並可視化。
Bank


動態表格
Zeppelin 可以在你的筆記本中動態地建立一些輸入格式。

協作
Notebook 的 URL 可以在協作者間分享。 Zeppelin 然後可以實時廣播任何變化,就像在 Google docs 中一樣。

釋出
Zeppelin提供了一個URL用來僅僅展示結果,那個頁面不包括Zeppelin的選單和按鈕。這樣,你可以輕易地將其作為一個iframe整合到你的網站。

Zeppelin的安裝部署

由於Zeppelin目前不提供binary安裝包,所以這裡Zeppelin的安裝需要自己編譯。
這裡可以參考Zeppelin GithubInstall Zeppelin

準備工作

需要
Java 1.7
Tested on Mac OSX, Ubuntu 14.X, CentOS 6.X
Maven (if you want to build from the source code)
Node.js Package Manager

在Ubuntu環境下可以這樣安裝:

sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo apt-get install git
sudo apt-get install maven
sudo apt-get install npm

注意:這裡的maven工具如果不是最新的源的話,可能只是maven2,zeppelin的編譯需要maven3,不然一些工具的下載會受到影響,可以從maven官網下載二進位制壓縮包,直接使用。
這裡還需要node命令,apt-get安裝npm時候會自動安裝nodejs命令,這裡只需要建立一個連結就可以:sudo ln -s /usr/bin/nodejs /usr/bin/node

zeppelin-web專案的安裝配置

我在之前對zeppelin整個專案進行maven部署的時候總是出現zeppelin-web專案的失敗,不得其解,參照網上的方法,對zeppelin-web專案進行單獨的安裝配置。
這裡每一步都很關鍵,我在這裡的配置安裝摺騰了很多次,最終才能正常的完成安裝,下面一一道來。

刪除zeppelin-web專案的pom.xml下面給出的內容,換做手動安裝:

<plugin>
        <groupId>com.github.eirslett</groupId>
        <artifactId>frontend-maven-plugin</artifactId>
        <version>0.0.23</version>
        <executions>

          <execution>
            <id>install node and npm</id>
            <goals>
              <goal>install-node-and-npm</goal>
            </goals>
            <configuration>
              <nodeVersion>v0.10.18</nodeVersion>
              <npmVersion>1.3.8</npmVersion>
            </configuration>
          </execution>
          <execution>
            <id>npm install</id>
            <goals>
              <goal>npm</goal>
            </goals>
          </execution>

          <execution>
            <id>bower install</id>
            <goals>
                <goal>bower</goal>
            </goals>
            <configuration>
              <arguments>--allow-root install</arguments>
            </configuration>
          </execution>

          <execution>
            <id>grunt build</id>
            <goals>
                <goal>grunt</goal>
            </goals>
            <configuration>
              <arguments>--no-color --force</arguments>
            </configuration>
          </execution>
        </executions>
      </plugin>

手動安裝步驟:
1. 安裝好npm和node
2. 進入zeppelin-web目錄下,執行npm install。它會根據package.json的描述安裝一些grunt的元件,安裝bower,然後再目錄下生產一個node_modules目錄。
3. 執行bower –-allow-root install,會根據bower.json安裝前段庫依賴,有點類似於java的mvn。
4. 執行grunt --no-color –-force,會根據Gruntfile.js整理web檔案。
第3、4步要注意,本來給定的bower和grunt檔案中使用的"node/node"命令,因為使用maven自動安裝時,會在當前目錄下生成node目錄,其中包含node命令。我們之前已經安裝了nodejs命令,並新連結了命令node,所以這裡需要將其修改為"node"
5. 執行mvn install -DskipTests,把web專案打包,在target目錄下會生成war
pom.xml在生成war包的時候,要參照dist\WEB-INF\web.xml檔案,所以在執行該步驟之前,要明確zeppelin-web目錄下由dist目錄,才能最終生成正確的war包。

其他zeppelin專案的編譯

根據自己的方式進行編譯:
Local mode:
mvn install -DskipTests
Cluster mode:
mvn install -DskipTests -Dspark.version=1.1.0 -Dhadoop.version=2.2.0

配置

配置檔案為環境變數檔案(conf/zeppelin-env.sh)和Java屬性檔案(conf/zeppelin-site.xml)。根據自己的要求進行配置。

啟動、關閉

啟動、關閉Zeppelin程序命令為:
bin/zeppelin-daemon.sh start
bin/zeppelin-daemon.sh stop

參考資料