Zeppelin on Vagrant VM ( Zeppelin 在 Vagrant 虚拟机上 )

原文链接 : http://zeppelin.apache.org/docs/0.7.2/install/virtual_machine.html

译文链接 : http://www.apache.wiki/pages/viewpage.action?pageId=10030718

贡献者 : 小瑶 ApacheCN Apache中文网

概观

Apache Zeppelin distribution ( 分发 ) 包括一个脚本目录

scripts/vagrant/zeppelin-dev

该脚本创建一个虚拟机,启动一个可重复的已知集合,用于开发 Zeppelin 所需的核心依赖关系。如果您不打算从源代码构建,它可以用于运行现有的 Zeppelin 构建。对于 PySpark 用户,此脚本包含几个有用的 Python 。对于 SparkR 用户,此脚本包含几个有用的 R

先决条件

此脚本需要三个应用程序,分别是 AnsibleVagrantVirtual Box 。所有这些应用程序都可以免费使用,因为它们是开源项目,并且在大多数操作系统上都非常容易设置。

Create a Zeppelin Ready VM ( 创建一个 Zeppelin Ready VM )

如果您正在运行 Windows 并且尚未安装 python ,请先安装 Python 2.7.x

  1. 下载并安装 VagrantVagrant 下载
  2. 安装 AnsibleAnsible Python pip install

    1. sudo easy_install pip
    2. sudo pip install ansible
    3. ansible --version

    然后,请检查它是否报告了可接受版本 1.9.2 或者更高版本

  3. 安装 Virtual BoxVirtual Box 下载

  4. /scripts/vagrant/zeppelin-dev 目录中输入 vagrant up

这样就可以了!您现在可以运行 vagrant ssh ,这将使您进入客户机器终端提示符界面。

如果您不想从头构建 Zeppelin ,请在 guest 虚拟机中运行时运行 z-manager installer 脚本:

  1. curl -fsSL https://raw.githubusercontent.com/NFLabs/z-manager/master/zeppelin-installer.sh | bash

Building Zeppelin ( 构建 Zeppelin )

你现在可以

  1. git clone git://git.apache.org/zeppelin.git

进入主机上的目录,或直接在虚拟机中。

Zeppelin 从主机中克隆到 /scripts/vagrant/zeppelin-dev 目录中,将允许在主机和客户机之间共享该目录。

再次克隆项目可能似乎是直观的,因为这个脚本可能源于项目库。考虑将 Zeppelin 项目中的 vagrant/zeppelin-dev 脚本作为独立目录复制,然后再次克隆要构建的特定分支。

同步的文件夹使 Vagrant 能够将主机上的文件夹同步到客机,允许您继续在主机上处理项目的文件,但是使用 guest 机器上的资源来编译或运行项目。 (1)同步文件夹描述从 Vagrant Up

默认情况下,Vagrant 将共享您的项目目录 ( Vagrantfile 的目录 ) 到 /vagrant 。这意味着您应该能在您的 cd /vagrant/zeppelin 之后在客户机中构建。

这个虚拟机有什么?

在客户机中运行以下命令显示以下预期版本:

node —version should report v0.12.7 mvn —version 应该报告 Apache Maven 3.3.9 and Java version: 1.7.0_85

虚拟机包括:

  • Ubuntu Server 14.04 LTS
  • Node.js 0.12.7
  • npm 2.11.3
  • ruby 1.9.3 + rake,make 和 bundler ( 仅在构建 jekyll 文档时才需要 )
  • Maven 3.3.9
  • Git
  • Unzip
  • libfontconfig 以避免 phatomJs 缺少依赖性问题
  • openjdk-7-jdk
  • Python 插件:pip,matplotlib,scipy,numpy,pandas
  • R 和 R 运行 R 解释器 和 相关 R 教程笔记本所需的软件包,包括:Knitr,devtools,repr,rCharts,ggplot2,googleVis,mplot,htmltools,base64enc,data.table

如何构建和运行 Zeppelin

这假设您已经在 zeppelin-dev 目录中的主机(要与客户机共享)上克隆项目,或者在客机中运行时直接克隆到目录中。以下构建步骤还将包括通过 PySparkSparkRPythonR 支持:

  1. cd /zeppelin
  2. mvn clean package -Pspark-1.6 -Ppyspark -Phadoop-2.4 -Psparkr -DskipTests
  3. ./bin/zeppelin-daemon.sh start

在您的主机上浏览 http://localhost:8080/

如果您关闭 Vagrantfile 中的端口转发,请浏览 http://192.168.51.52:8080

调整虚拟机

如果您计划沿着其他 Vagrant 映像一边运行此虚拟机,则可能希望将虚拟机绑定到特定的 IP 地址,而不要使用本地主机的端口。

注释出 forward_port 行,并取消注释 Vagrantfile 中的 private_network 行。最适合本地网络的子网将会有所不同,因此可以调整192.168..

  1. #config.vm.network "forwarded_port", guest: 8080, host: 8080
  2. config.vm.network "private_network", ip: "192.168.51.52"

vagrant 停止,随后 vagrant 将重新启动访问客户机绑定到 IP 地址 192.168.51.52 。通常运行通过 IP 地址直接发现的其他虚拟机 ( 如 Spark MastersSlaves 以及 Cassandra NodesElasticsearch Nodes 和其他 Spark 数据源 ) 时通常需要此方法。您可能希望在具有适用于本地网络的子网中的 IP 地址的虚拟机中启动节点,例如:

192.168.51.53,192.168.51.54,192.168.51.53等。

附加功能

Python Extras

随着 Zeppelin 运行, NumPySciPyPandas ,和 Matplotlib 将可用。创建一个 pyspark 笔记本,并尝试运行下面的代码。

  1. %pyspark
  2. import numpy
  3. import scipy
  4. import pandas
  5. import matplotlib
  6. print "numpy " + numpy.__version__
  7. print "scipy " + scipy.__version__
  8. print "pandas " + pandas.__version__
  9. print "matplotlib " + matplotlib.__version__

要测试使用 Matplotlib 绘制到渲染的 %html SVG image ,请尝试:

  1. %pyspark
  2. import matplotlib
  3. matplotlib.use('Agg') # turn off interactive charting so this works for server side SVG rendering
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. import StringIO
  7. # clear out any previous plots on this note
  8. plt.clf()
  9. def show(p):
  10. img = StringIO.StringIO()
  11. p.savefig(img, format='svg')
  12. img.seek(0)
  13. print "%html <div style='width:600px'>" + img.buf + "</div>"
  14. # Example data
  15. people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
  16. y_pos = np.arange(len(people))
  17. performance = 3 + 10 * np.random.rand(len(people))
  18. error = np.random.rand(len(people))
  19. plt.barh(y_pos, performance, xerr=error, align='center', alpha=0.4)
  20. plt.yticks(y_pos, people)
  21. plt.xlabel('Performance')
  22. plt.title('How fast do you want to go today?')
  23. show(plt)

R Extras

随着 zeppelin 运行,一个 R 教程笔记本将可用。本教程笔记本中运行示例和图形所需的 R 包由该虚拟机安装。安装的 R 包包括:KnitrdevtoolsreprrChartsggplot2googleVismplothtmltoolsbase64encdata.table