欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

Apache Zeppelin使用入门指南:安装

  Apache Zeppelin是一款基于web的notebook(类似于ipython的notebook),支持交互式地数据分析。原生就支持Spark、Scala、SQL 、shell, markdown等。而且它是完全开源的,目前还处于Apache孵化阶段。本文所有的操作都是基于Apache Zeppelin 0.6.0-incubating-SNAPSHOT,spark 1.5.2的。
  本文将介绍如何编译、安装以及使用Apache Zeppelin。

编译和安装Apache Zeppelin

  Apache Zeppelin官方提供了Source包和二进制包,我们可以根据需要下载相关的包进行安装。这里我通过编译源码的方式来安装Apache Zeppelin,通过源码编译Zeppelin非常地简单,我这里从Zeppelin的git库里面下载最新的源码进行编译,步骤如下:

[iteblog@www.iteblog.com ~]$ git clone https://github.com/apache/incubator-zeppelin.git
[iteblog@www.iteblog.com ~]$ cd incubator-zeppelin
[iteblog@www.iteblog.com ~]$ mvn package -Pspark-1.5 -Dhadoop.version=2.2.0 -Phadoop-2.2 -DskipTests
[INFO] Reactor Summary:
[INFO] 
[INFO] Zeppelin ........................................... SUCCESS [  4.336 s]
[INFO] Zeppelin: Interpreter .............................. SUCCESS [  4.525 s]
[INFO] Zeppelin: Zengine .................................. SUCCESS [  2.465 s]
[INFO] Zeppelin: S park dependencies ...................... SUCCESS [ 30.643 s]
[INFO] Zeppelin: S park ................................... SUCCESS [  2.220 s]
[INFO] Zeppelin: Markdown interpreter ..................... SUCCESS [  0.223 s]
[INFO] Zeppelin: Angular interpreter ...................... SUCCESS [  0.495 s]
[INFO] Zeppelin: Shell interpreter ........................ SUCCESS [  0.203 s]
[INFO] Zeppelin: Hive interpreter ......................... SUCCESS [  1.590 s]
[INFO] Zeppelin: Apache Phoenix Interpreter ............... SUCCESS [  2.196 s]
[INFO] Zeppelin: PostgreSQL interpreter ................... SUCCESS [  0.202 s]
[INFO] Zeppelin: JDBC interpreter ......................... SUCCESS [  0.171 s]
[INFO] Zeppelin: Tajo interpreter ......................... SUCCESS [  0.436 s]
[INFO] Zeppelin: Flink .................................... SUCCESS [  0.864 s]
[INFO] Zeppelin: Apache Ignite interpreter ................ SUCCESS [  0.219 s]
[INFO] Zeppelin: Kylin interpreter ........................ SUCCESS [  0.223 s]
[INFO] Zeppelin: Lens interpreter ......................... SUCCESS [  1.030 s]
[INFO] Zeppelin: Cassandra ................................ SUCCESS [  2.954 s]
[INFO] Zeppelin: Elasticsearch interpreter ................ SUCCESS [  1.601 s]
[INFO] Zeppelin: web Application .......................... SUCCESS [01:19 min]
[INFO] Zeppelin: Server ................................... SUCCESS [ 54.665 s]
[INFO] Zeppelin: Packaging distribution ................... SUCCESS [  0.991 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:12 min
[INFO] Finished at: 2016-01-20T16:35:33+08:00
[INFO] Final Memory: 97M/1298M
[INFO] ------------------------------------------------------------------------

  在编译Zeppelin的时候,会安装npm和node等,所以安装的进度有时会很慢。目前Zeppelin支持Spark 1.1到Spark 1.6和Hadoop 0.23到Hadoop 2.6等版本,我们可以分别通过下面选项指定相应的Spark和Hadoop版本:

-Pspark-1.6
-Pspark-1.5
-Pspark-1.4
-Pspark-1.3
-Pspark-1.2
-Pspark-1.1
-Pcassandra-spark-1.5
-Pcassandra-spark-1.4
-Pcassandra-spark-1.3
-Pcassandra-spark-1.2
-Pcassandra-spark-1.1

-Phadoop-0.23
-Phadoop-1
-Phadoop-2.2
-Phadoop-2.3
-Phadoop-2.4
-Phadoop-2.6
  如果你需要使用到YARN,你必须在编译Zeppelin的时候指定-Pyarn选项,具体可以参见本博客的《在Yarn上运行Apache Zeppelin & Spark》

  如果你需要使用到PySpark,编译的时候需要使用-Ppyspark

  编译完Zeppelin之后,我们就可以启动Zeppelin:

[iteblog@www.iteblog.com ~]$ bin/zeppelin-daemon.sh start

停止Zeppelin可以使用:

[iteblog@www.iteblog.com ~]$ bin/zeppelin-daemon.sh stop

所有运行的日志会输入到logs目录下,如果遇到错误可以到里面去查找相关的日志。

  需要注意的是,Zeppelin默认是在8080端口上启动相关的web服务的,在你服务器上,如果这个端口已经被占用了,那么会导致Zeppelin启动失败,并在日志里面抛出以下的异常:

 WARN [2016-01-20 16:36:44,830] ({main} AbstractLifeCycle.java[setFailed]:204) - 
FAILED SelectChannelConnector@0.0.0.0:8080: java.net.BindException: Address already in use
java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:444)
    at sun.nio.ch.Net.bind(Net.java:436)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:187)
    at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:316)
    at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:265)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
    at org.eclipse.jetty.server.Server.doStart(Server.java:293)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
    at org.apache.zeppelin.server.ZeppelinServer.main(ZeppelinServer.java:114)

我们可以到conf/zeppelin-site.xml文件里面进行配置,并修改zeppelin.server.port属性的值为其他不被占用的端口,如下:

<property>
  <name>zeppelin.server.port</name>
  <value>8090</value>
  <description>Server port.</description>
</property>

然后我们需要重启Zeppelin:

[iteblog@www.iteblog.com ~]$ bin/zeppelin-daemon restart

一切顺利的话,我们就可以在https://www.iteblog.com:8080上面看到下面页面信息:

本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Apache Zeppelin使用入门指南:安装】(https://www.iteblog.com/archives/1573.html)
喜欢 (20)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!
(9)个小伙伴在吐槽
  1. 使用Ambari装Zeppelin Notebook时,出现这种错误,求大神解决
    ERROR [2016-12-27 15:03:17,247] ({main} ZeppelinServer.java[main]:114) - Error while running jettyServer
    javax.servlet.ServletException: Resource class org.apache.zeppelin.server.ZeppelinServer can not be instantiated due to InvocationTargetException

    岁月静好ゅ2016-12-28 17:34 回复
    • 这个看不出什么问题啊,能提供更详细的信息吗?

      w3970907702016-12-28 18:33 回复
      • 这是zeppelin下的日志报的错,更详细的信息是在哪看啊?

        岁月静好ゅ2016-12-28 18:36 回复
  2. 楼主好,我编译 后 ,创建 和 使用notebook 有异常
    另外 编译的1.6 的 jdbc和 livy intecepter 都用不了
    谢谢 帮助

    lidl2016-06-23 09:42 回复
  3. 请教一下,我编译的版本是0.6.0
    安装,部署完成以后,页面能访问
    但是我执行
    sc.version
    报错
    java.lang.ClassNotFoundException: org.apache.spark.repl.SparkCommandLine
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.apache.zeppelin.spark.SparkInterpreter.open(SparkInterpreter.java:418)
    at org.apache.zeppelin.interpreter.ClassloaderInterpreter.open(ClassloaderInterpreter.java:74)
    at org.apache.zeppelin.interpreter.LazyOpenInterpreter.open(LazyOpenInterpreter.java:68)
    at org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:92)
    at org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:345)

    漫步2016-05-06 17:31 回复
    • 你编译的时候是否加入了-Pspark-1.x属性呢?

      w3970907702016-05-09 11:46 回复
      • 太感谢了
        这是是在pom.xml文件里面加入吗?
        我编译的指令是:
        mvn clean package -Pspark-1.5 -Dspark.version=1.5.2 -Dhadoop.version=2.6.0 -Phadoop-2.6 -Pyarn -DskipTests -Dtar -Pdist
        最后:编译成功了,
        不过,我添加了-Dtar -Pdist 但是没有打成tar包
        整个zeppelin-0.6.0目录有1.3G

        漫步2016-05-09 11:53 回复
    • 你编译的时候加了-Pspark-1.x属性,我看你是想打包编译好的文件,建议使用
      mvn package -Pspark-1.5 -Dhadoop.version=2.2.0 -Phadoop-2.2 -DskipTests -Pbuild-distr
      命令,这条命令会在$ZEPPELIN_SRC/zeppelin-distribution/target目录下生成zeppelin-0.6.0-incubating-SNAPSHOT.tar.gz文件。祝你成功。

      w3970907702016-05-09 13:22 回复
      • 您好,按照您的方法,编译通过了,也配置了
        这是我的配置文件zeppelin-env.sh
        export JAVA_HOME=/usr/local/jdk1.8
        export MASTER=yarn-client
        export HADOOP_HOME=/usr/local/hadoop-2.6.0
        export HADOOP_CONF_DIR=/usr/local/hadoop-2.6.0/etc/hadoop/
        export SPARK_HOME=/usr/local/spark-1.5.2

        但是启动,执行报错
        sc.version
        java.lang.ClassNotFoundException: org.apache.spark.repl.SparkCommandLine

        漫步2016-06-15 11:00 回复