CDH 6.3.1整合Zeppelin 0.8.2

目錄

一、安裝Zeppelin

二、配置Zeppelin的用戶名密碼

三、使用Zeppelin查詢CDH的hive表

四、定義Hive解釋器

五、定義MySQL解釋器


        Zeppelin是一個基於Web的筆記本,可以直接在瀏覽器中編寫代碼,對數據進行查詢分析並生成報表或圖表,做出數據驅動的、交互、協作的文檔,並且可以共享筆記。Zeppelin提供了內置的Apache Spark集成,提供的功能有:

  • 自動引入SparkContext 和 SQLContext 
  • 從本地文件系統或maven庫載入運行時依賴的jar包。 
  • 可取消Spark作業和展示作業進度。

        在數據可視化方面,Zeppelin已經包含一些基本的圖表,如柱狀圖、餅圖、線形圖、散點圖等。可視化並不只限於Spark查詢,任何支持的後端語言輸出都可以被圖形化表示。

        Zeppelin中最核心的概念是解釋器,它是一個插件式的體系結構,允許任何語言或後端數據處理程序以插件的形式添加到Zeppelin中。解釋器允許用戶使用一個指定的語言或數據處理器。每一個解釋器都屬於換一個解釋器組,同一個解釋器組中的解釋器可以相互引用,例如SparkSql解釋器可以引用Spark解釋器以獲取Spark上下文,因爲它們屬於同一個解釋器組。當前的Zeppelin已經支持很多解釋器,如cassandra、file、hbase、kylin、phoenix、elasticsearch、flink、hive、jdbc、psql等等。插件式架構允許用戶在Zeppelin中使用自己熟悉的程序語言處理數據。例如,通過使用%spark解釋器,可以在Zeppelin中使用Scala語言代碼。

一、安裝Zeppelin

        CDH中沒有集成Zeppelin服務,因此需要手工安裝。下面是在CDH 6.3.1中安裝Zeppelin 0.8.2的主要步驟。

1. 下載Zeppelin安裝包
        Zeppelin提供源碼和二進制兩種安裝包,源碼需要用戶自己進行編譯,二進制包解壓後即可直接運行。爲簡單起見選擇安裝二進制包。

下載地址:
http://www.apache.org/dyn/closer.cgi/zeppelin/zeppelin-0.8.2/zeppelin-0.8.2-bin-all.tgz
安裝指南:
http://zeppelin.apache.org/docs/0.8.2/quickstart/install.html
https://datacouch.io/install-apache-zeppelin-on-cdh/

2. 解壓縮Zeppelin安裝包

mkdir /opt/zeppelin
tar -xvf zeppelin-0.8.2-bin-all.tgz -C /opt/zeppelin

3. 配置Zeppelin
        在Zeppelin配置文件目錄中,創建名爲zeppelin-env.sh的環境文件,在其中配置Hadoop配置目錄、hive的配置文件的classpath目錄、Zeppelin服務器的IP地址和端口號。

cd /opt/zeppelin/zeppelin-0.8.2-bin-all/conf
vi zeppelin-env.sh

export HADOOP_CONF_DIR=/etc/hadoop/conf
export ZEPPELIN_INTP_CLASSPATH_OVERRIDES=/etc/hive/conf
export ZEPPELIN_ADDR=172.16.1.126
export ZEPPELIN_PORT=9091

4. 修改權限
        將Zeppelin安裝目錄的權限設置爲777。

chmod -R 777 /opt/zeppelin

5. 啓動Zeppelin

cd /opt/zeppelin/zeppelin-0.8.2-bin-all
./bin/zeppelin-daemon.sh start

        至此已經完成Zeppelin在CDH上的安裝,從瀏覽器可以打開Zeppelin:http://172.16.1.126:9091

二、配置Zeppelin的用戶名密碼

        缺省Zeppelin使用匿名用戶訪問,不需要用戶名密碼,但可以通過簡單的配置爲Zeppelin增加鑑權功能。shiro.ini文件用來多用戶登錄和權限管理,可以編輯此文件,根據自己的需要設置登錄zeppelin的用戶名和密碼。

cd /opt/zeppelin/zeppelin-0.8.2-bin-all/conf
cp shiro.ini.template shiro.ini
vi shiro.ini
...
[users]
# List of users with their password allowed to access Zeppelin.
# To use a different strategy (LDAP / Database / ...) check the shiro doc at http://shiro.apache.org/configuration.html#Configuration-INISections
# To enable admin user, uncomment the following line and set an appropriate password.
#admin = password1, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2
...

        將admin這行的註釋刪掉。等號兩邊分別爲用戶名和密碼,逗號後面設置的是權限,這裏都設置爲admin。保存配置後重啓zeppelin:

/opt/zeppelin/zeppelin-0.8.2-bin-all/bin/zeppelin-daemon.sh start

然後重新登錄zeppelin,首頁會變成了歡迎頁面,要想使用Zeppelin需要先登錄,如圖1所示。

圖1

三、使用Zeppelin查詢CDH的hive表

        完成前面的步驟後,就可以新建note,執行SparkSQL查詢hive表,不在需要任何額外配置,如圖2所示。

圖2

        需要說明的一點是,我們安裝的Zeppelin 0.8.2與CDH 6.3.1的Spark有版本兼容性問題。因此這裏使用的spark是Zeppelin自帶的,spark master爲缺省的本地,如圖3所示。

圖3

四、定義Hive解釋器

        雖然不能直接使用CDH集羣中的Spark直接查詢hive表,但是可以自定義一個JDBC的hive解釋器,將Zeppelin作爲客戶端連接到Hive服務器。只要將Hive的執行引擎配置爲Spark,就可以間接使用CDH的Spark查詢hive。順便說一句,當CDH 6.3.1中同時啓動了Hive和Spark服務,Hive的執行引擎就會自動配置爲Spark。

        在Interpreters頁面點擊“+Create”新建一個解釋器,Interpreter Name輸入hive,Interpreter group選擇jdbc,必須修改的屬性只有default.driver和default.url兩項,如圖4所示。

圖4

然後是添加依賴包,如圖5所示。

圖5

        我這裏需要添加以下jar包,才能正常執行hive查詢:

/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hive/lib/hive-jdbc-2.1.1-cdh6.3.1.jar
/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hadoop/hadoop-common-3.0.0-cdh6.3.1.jar
/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hive/lib/hive-service-2.1.1-cdh6.3.1.jar
/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hive/lib/hive-service-rpc-2.1.1-cdh6.3.1.jar
/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hive/lib/hive-common-2.1.1-cdh6.3.1.jar
/opt/cloudera/parcels/CDH-6.3.1-1.cdh6.3.1.p0.1470567/lib/hive/lib/hive-serde-2.1.1-cdh6.3.1.jar

        所有修改完成後,點擊save保存配置。下面就可以新建note執行hive查詢了,如圖6所示。

圖6

五、定義MySQL解釋器

        數據可視化的需求很普遍,如果常用的如MySQL這樣的關係數據庫也能使用Zeppelin查詢,並將結果圖形化顯示,那麼就可以用一套統一的數據可視化方案處理大多數常用查詢。Zeppelin本身不帶MySQL翻譯器,但它支持JDBC解釋器組,通常只要有相應的JDBC驅動JAR包,就可以輕鬆創建一個新的解釋器。

        在Interpreters頁面點擊“+Create”新建一個解釋器,Interpreter Name輸入mysql,Interpreter group選擇jdbc,然後配置相關屬性。最簡單情況下只需要設置default.driver、default.user、default.password、default.url四個屬性值,分別表示驅動程序、連接MySQL的用戶名、密碼和URL,如圖7所示。

圖7

然後在依賴關係的artifact中輸入MySQL連接器JAR包,格式爲“mysql:驅動名稱:版本號”,如圖8所示。

圖8

點擊save保存配置。此時在interpreter頁面中會看到mysql解釋器。下面創建一個note,使用MySQL作爲解釋器,查詢information_schema.tables表,如圖9所示。

圖9

        如果解釋器出現類似以下錯誤:

Cannot fetch dependencies for mysql:mysql-connector-java:5.1.38

可能是因爲Zeppelin的repository中心庫無法連接,有兩種解決辦法。一是在artifact中填寫本地jar包路徑,如:

/usr/share/java/mysql-connector-java.jar

第二個辦法是在zeppelin-env.sh文件中設置ZEPPELIN_INTERPRETER_DEP_MVNREPO環境變量,添加一個可訪問的repository地址,如:

export ZEPPELIN_INTERPRETER_DEP_MVNREPO=http://insecure.repo1.maven.org/maven2/

        關於這一問題的說明參見:https://stackoverflow.com/questions/59964426/zepplin-mysql-interpreter-error-cannot-fetch-dependencies-for-mysqlmysql-conne

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章