Apache Zeppelin安装及介绍

Posted 张包峰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Zeppelin安装及介绍相关的知识,希望对你有一定的参考价值。

背景

Apache Zeppelin提供了web版的类似ipython的notebook,用于做数据分析和可视化。背后可以接入不同的数据处理引擎,包括spark, hive, tajo等,原生支持scala, java, shell, markdown等。它的整体展现和使用形式和Databricks Cloud是一样的,就是来自于当时的demo。

Mac OS上安装

目前github上,zeppelin版本是0.5.0,没用预先编译好的包提供下载。安装文档:http://zeppelin.incubator.apache.org/docs/install/install.html

其他组件都是好安装的,直接mvn install是没问题的。
我安装的时候唯一不太熟悉的就是zeppelin-web项目,里面使用了node, grunt, bower这些前段的工具。

我的经验是,修改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。 brew install npm和npm install -g node。
2. 进入zeppelin-web目录下,执行 npm install。它会根据package.json的描述安装一些grunt的组件,安装bower,然后再目录下生产一个node_modules目录。
3. 执行 bower –alow-root install,会根据bower.json安装前段库依赖,有点类似于java的mvn。见http://bower.io/
4. 执行 grunt –force,会根据Gruntfile.js整理web文件。
5. 最好执行 mvn install -DskipTests,把web项目打包,在target目录下会生成war。

mvn可能会出错,因为web.xml不在默认路径下,需要在pom.xml里添加:

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <webXml>app\\WEB-INF\\web.xml</webXml>
        </configuration>
</plugin>

启动

安装完之后,在zeppelin parent目录下,修改conf文件夹里的zeppelin-env.sh和zeppelin-site.xml,可以是默认配置,但要把两个文件原本的无效后缀去掉。

在zeppelin parent目录下执行

bin/zeppelin-daemon.sh start

就可以在localhost:8080 访问到zepplin主页了。如果没有出主页,可以看浏览器console,是缺少了什么文件,八成是web项目打包的时候漏了,很可能是bower和grunt命令执行的时候缺少依赖出错的。

主界面为

zeppelin parent目录下会看到一个notebook文件夹,按notebook的名字命名区分了多个子目录。目录下是一个note.json文件,记录了每个notebook里输入的代码和执行结果,启动的时候会加载起来。

功能

进入页面上的notebook,可以直接写scala代码,

通过标识%md, %sh, %sql, %spark, %hive, %tajo来区分要执行的是什么,默认不写的话,执行环境是scala。在 http://127.0.0.1:8080/#/interpreter 页面里有详细的参数说明。

我还随手试了几个:

非常酷。

此外,zeppelin为spark sql做了可视化工作,进入tutorial notebook,它里面已经写好了例子。由于本地编译没有指定spark 版本,1.3之前版本没用toDF方法,而是toSchemaRDD,改下面这段:

import sys.process._
// sc is an existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

val zeppelinHome = ("pwd" !!).replace("\\n", "")
val bankText = sc.textFile(s"$zeppelinHome/data/bank-full.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
        )
).toSchemaRDD
bank.registerTempTable("bank")

生成bank表之后,可以做查询,效果如下:

有直方图,饼状图,散点图,折线图等等。

注意

这里$maxAge=的写法和databricks cloud里的demo一样。当时那个例子是输入soccer,然后下方会实时训练并输出与足球有关的tweets(值FIFA比赛时期)。
这种表示方法,Zeppelin称之为Dynamic Form
http://zeppelin.incubator.apache.org/docs/dynamicform.html

总结

apache zeppelin应该会很吸引分布式计算、数据分析从业者,代码量少,模块很清楚,可以尝试接入不同计算引擎,试试任务运行、可视化效果,是个值得把玩的算比较前卫的项目。

没有过多复杂的操作,只是区分了多个notebook,每个notebook里做单独的分析处理工作,流程和结果会被保存下来。此外,为spark做了更好的支持,比如默认是scala环境,默认sc已经创建好,即spark local可跑,默认spark sql有可视化效果。

全文完 :)

以上是关于Apache Zeppelin安装及介绍的主要内容,如果未能解决你的问题,请参考以下文章

Zeppelin部署 01Zeppelin最新版本zeppelin-0.10.1下载安装配置启动及问题处理(一篇学会部署Zeppelin)

在 Apache Zeppelin 上安装 R

apache zeppelin入门

安装 Apache Zeppelin 的构建错误

如何在现有的 Apache Spark 独立集群上安装 Apache Zeppelin

Apache - Zeppelin 在 Ubuntu 上构建失败