Zeppelin开发指南

介绍

Zeppelin是一个Web笔记形式的交互式数据查询分析工具,可以在线用多种语言和工具对数据进行查询分析并生成报表。

其默认对数据执行引擎是Spark,同时提供了Hive、HBase、Markdown等多种解释器来支持更多数据源的分析处理,官方支持的解释器如下:

在Zeppelin中以笔记本(notebook)的形式组织和管理交互式数据探索任务,执行引擎的作用就是执行笔记中的与引擎相对应的代码,以进行交互式数据分析和展现。

安装及登陆

目前在uhadoop集群中,zeppelin服务安装在master1节点的/home/hadoop/zeppelin目录,可通过uhadoop-xxxxx-master1:29090访问Zeppelin服务界面。

  • 启动: service Zeppelin start 
  • 重启: service Zeppelin restart 
  • 服务关闭: service Zeppelin stop
  • 状态检查: service Zeppelin status

uhadoop zeppelin不允许匿名用户使用,使用Shiro进行用户权限控制。所有可使用用户和密码信息均存放在/home/hadop/zeppelin/conf/shiro.ini中. 默认配置了一个管理员用户和3个普通用户,管理员可以进行全部操作,普通用户只能基于现有解释器创建notebook, 进行数据查询,无法创建或修改解释器。

用户名 密码 角色
admin password1 管理员
user1 password2 普通用户
user2 password3 普通用户
user3 password4 普通用户

用户打开zeppelin web页面后,点击右上角button进行登陆,需要先用管理员用户登陆,进行解释器相关配置:

管理员配置interpreter:

使用admin用户登陆后,点击右上角的下拉框,选择"Interpreter",可以看的默认的解释器列表,管理员可以根据已有解释器创建新的解释器(后面在测试hive,mysql等数据源时,需要基于jdbc解释器创建新的解释器)。

Hive 解释器测试

Hive 解释器配置

zeppelin-0.8.1不再提供默认的Hive解释器,只提供了jdbc解释器,用户可以基于jdbc解释器创建专门的Hive解释器。

并修改option为如下的配置:

主要修改的配置为如下几项:

default.driver: org.apache.hive.jdbc.HiveDriver

default.url: jdbc:hive2://uhadoop-xxxxxx-master2:10000   (为集群hive-server2 jdbc地址)

default.user: hive

zeppelin.jdbc.auth.type:  simple

Dependencies的artifact增加如下两个(这里选择从集群本地文件读取):

/home/hadoop/hive/jdbc/hive-jdbc-2.3.3-standalone.jar

/home/hadoop/lib/lib/hadoop-common-2.6.0-cdh5.13.3.jar

Hive notebook创建

hive notebooke中创建查询

hive详细使用请参考:https://doc.ucloud.cn/analysis/uhadoop/developer/hivedev

点击打开上一步创建的/test/hive notebook, 在notebook中创建一个paragraph,输入如下:

%hive show tables

点击右侧的run三角按钮即可执行,并在下方看到输出结果。

一个notebook中可以创建很多个paragraph,将鼠标悬浮在每个paragraph的下端,点击弹出的“Add Paragraph"就可以创建新的paragraph:

这里依次创建了三个paragraph,演示一个table从创建、插入数据、查询数据的过程。

sql:

     1. create table test_hive (id int, name string)

     2. insert into test_hive values (1,'test_ucloud'),(2,'test_hive')

     3. select * from test_hive
     
 ```

![](https://github.com/AutoAIDocs/uhadoop/raw/master/images/hive-note-paragraph.png)

![](https://github.com/AutoAIDocs/uhadoop/raw/master/images/hive-sql-2.png)



### hbase解释器测试


参考文档:https://zeppelin.apache.org/docs/latest/interpreter/hbase.html


hbase解释器为Zeppelin自带的解释器,不需要再进行解释器的配置,只需在使用时带上"%hbase"便可以进行hbase语句解析

可以为hbase测试建立新的notebook,方法同上,然后创建如下paragraph并执行


paragraph1:

%hbase create 'test_hbase', 'cf'

paragraph2:

%hbase list

paragraph3:

%hbase

put 'test_hbase', 'row1', 'cf:a', 'value1'

paragraph4:

%hbase scan 'test_hbase'

执行结果如下:

![](https://github.com/AutoAIDocs/uhadoop/raw/master/images/hbase-sql.png)


### spark解释器使用


#### 概述:


参考文档:https://zeppelin.apache.org/docs/latest/interpreter/spark.html



Zeppelin spark解释器组支持如下几种解释器:



| Name       |  Class     | Description     |
| %spark	| SparkInterpreter	| Creates a SparkContext and provides a Scala environment |
| %spark.pyspark |	PySparkInterpreter | Provides a Python environment |
| %spark.r |	SparkRInterpreter |	Provides an R environment with SparkR support |
| %spark.sql | SparkSQLInterpreter |	Provides a SQL environment |
| %spark.dep | DepInterpreter |	Dependency loader |



#### 解释器配置修改

spark解释器配置的默认部署类型是local mode, uhadoop中spark 是on yarn模式,修改配置的master属性为yarn-client或yarn-cluster:

![](https://github.com/AutoAIDocs/uhadoop/raw/master/images/spark-interpreter.png)


####  使用测试

下载测试数据,放入hdfs:

``` sh

wget http://mirrors.ucloud.cn/ucloud/udata/bank.csv

hadoop fs -put bank.csv  /

创建名为/test/spark的notebook,并在其中创建如下几个paragraph:

paragraph1:

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

val bankText = sc.textFile("/bank.csv")
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")
bank.show(10)

paragraph2:

%sql
select age, count(1) value
from bank
where age < 30
group by age
order by age

paragraph3:

%sql
show tables

执行预期结果如下图: