1. 程式人生 > 其它 >Zeppelin安裝及配置Hive和Spark直譯器

Zeppelin安裝及配置Hive和Spark直譯器

1. Zeppelin下載及安裝

1.1 安裝環境

  • Cent os 7.5
  • Hadoop 3.2
  • Hive-3.1.2
  • Scala
  • Spark-3.0.0-bin-hadoop3.2
  • Flink 1.13.2
  • Zeppelin 0.9.0

1.2 Zeppelin下載

Zeppelin 安裝包下載地址
http://zeppelin.apache.org/download.html

1.3 上傳並解壓

# 解壓zeppelin安裝包
tar -zxvf zeppelin-0.9.0-bin-all.tgz -C /data/soft/

注意:如果是正式生產環境,建議部署到/usr/local/目錄下。本文以學習為主,部署在/data/Soft目錄下。

1.4 修改zeppelin配置檔案

  1. 自定義zeppelin訪問埠
    修改 zeppelin-site.xml檔案。由於zeppelin預設的埠號為8080(與Spark預設埠衝突),因此有必要修改zeppelin的預設埠。此處修改為8000。
  <property>
    <name>zeppelin.server.addr</name>
    <value>192.168.21.102</value>
    <description>Server binding address</description>
  </property>
  <property>
    <name>zeppelin.server.port</name>
    <value>8000</value>
    <description>Server port.</description>
  </property>
  1. 配置zeppelin-env.sh
export JAVA_HOME=/usr/local/jdk1.8
export HADOOP_CONF_DIR=/data/soft/hadoop-3.2.0/etc/hadoop
export SPARK_MASTER_IP=192.168.21.102
export SPARK_LOCAL_IP=192.168.21.102

1.5 啟動

ZEPPELIN_HOME目錄下,進入bin目錄下,執行啟動命名

./zeppelin-daemon.sh start

如果顯示結果如下圖,則表示啟動成功。

1.6 訪問zeppelin Web頁面。

zeppelin啟動完成後,可使用瀏覽器訪問

http://ip:埠,即可看到zeppelin的web介面。

ip和埠與zeppelin-site.xml中配置保持一致。

此處顯示的登入使用者為admin,而並非預設的annoymous,是因為博主已配置shiro相關內容。預設不配置shiro,無須登入,顯示賬戶為annoymous.

1.7 zeppelin 許可權配置

zeppelin預設執行匿名使用者訪問,即沒有使用者許可權相關要求。如果想實現許可權控制,則需要修改shiro配置檔案。(有些博主基於0.8.0可能還需要配置修改zeppelin-site.xml中相關內容,在此一併都貼出來)。
修改 zeppelin-site.xml

<property>
  <name>zeppelin.anonymous.allowed</name>
  <value>false</value>
  <description>Anonymous user allowed by default</description>
</property>

拷貝conf目錄下的shiro.ini.template,改為shiro.ini,修改shiro.ini中的內容

cp shiro.ini.template shiro.ini

使用vim工具修改的內容如下

[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 = admin, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2

注意:逗號前面是使用者名稱,逗號後面是登入密碼

2. 配置Hive直譯器

2.1 前提條件(啟動HiverServer2)

要在zeppelin中使用Hive,必須啟動hiverserver2服務 以後臺方式啟動hiveserver2

nohup hive --service hiveserver2 &

2.2 修改配置檔案

複製hive-site.xml到zeppline中

cp /data/soft/hive-3.1.2/conf/hive-site.xml /data/soft/zeppelin-0.9.0-bin-all/conf

2.3 配置Hive直譯器

新建一個繼承jdbc的直譯器,命名為hive,如下圖所示

屬性名稱 屬性值
default.url jdbc:hive2://192.168.21.102:10000
default.driver org.apache.hive.jdbc.HiveDriver

屬性配置完成夠,將以下依賴新增到hive直譯器依賴庫中。

Artifate Exclude
org.apache.hive:hive-jdbc:3.1.2
org.apache.hadoop:hadoop-common:3.2.0
mysql:mysql-connector-java:5.1.38

測試Hive直譯器

新建筆記

在筆記中輸入以下測試筆記

%hive
show databases;

3. 配置Spark直譯器

Zeppelin預設的spark直譯器包括%spark , %sql , %dep , %pyspark , %ipyspark , %r等子直譯器,在實際應用中根據spark叢集的引數修改具體的屬性 進入直譯器配置介面,預設為local[*],Spark採用何種執行模式,引數配置資訊如下。

local模式:使用local[*],[]中為執行緒數,*代表執行緒數與計算機的CPU核心數一致。
standalone模式: 使用spark://master:7077
yarn模式:使用yarn-client或yarn-cluster
mesos模式:使用mesos://zk://zk1:2181,zk2:2182,zk3:2181/mesos或mesos://host:5050

測試 執行Zeppelin自帶的Basic Feature(Spark)案例。

import org.apache.commons.io.IOUtils
import java.net.URL
import java.nio.charset.Charset

// Zeppelin creates and injects sc (SparkContext) and sqlContext (HiveContext or SqlContext)
// So you don't need create them manually

// load bank data
val bankText = sc.parallelize(
    IOUtils.toString(
        new URL("https://s3.amazonaws.com/apache-zeppelin/tutorial/bank/bank.csv"),
        Charset.forName("utf8")).split("\n"))

case class Bank(age: Integer, job: String, marital: String, education: String, balance: Integer)

val bank = bankText.map(s => s.split(";")).filter(s => s(0) != "\"age\"").map(
    s => Bank(s(0).toInt, 
            s(1).replaceAll("\"", ""),
            s(2).replaceAll("\"", ""),
            s(3).replaceAll("\"", ""),
            s(5).replaceAll("\"", "").toInt
        )
).toDF()
bank.registerTempTable("bank")