# Zeppelin on Vagrant VM ( Zeppelin 在 Vagrant 虚拟机上 )
原文链接 : [http://zeppelin.apache.org/docs/0.7.2/install/virtual_machine.html](http://zeppelin.apache.org/docs/0.7.2/install/virtual_machine.html)
译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10030718](http://www.apache.wiki/pages/viewpage.action?pageId=10030718)
贡献者 : [小瑶](/display/~chenyao) [ApacheCN](/display/~apachecn) [Apache中文网](/display/~apachechina)
## 概观
**Apache Zeppelin distribution** ( 分发 ) 包括一个脚本目录
**scripts/vagrant/zeppelin-dev**
该脚本创建一个虚拟机,启动一个可重复的已知集合,用于开发 Zeppelin 所需的核心依赖关系。如果您不打算从源代码构建,它可以用于运行现有的 **Zeppelin** 构建。对于 **PySpark** 用户,此脚本包含几个有用的 [ ](http://zeppelin.apache.org/docs/0.7.1/install/virtual_machine.html#python-extras)[ ](http://zeppelin.apache.org/docs/0.7.1/install/virtual_machine.html#python-extras)[**Python** 库](http://zeppelin.apache.org/docs/0.7.1/install/virtual_machine.html#python-extras) 。对于 **SparkR** 用户,此脚本包含几个有用的 [**R** 库](http://zeppelin.apache.org/docs/0.7.1/install/virtual_machine.html#r-extras)。
### 先决条件
此脚本需要三个应用程序,分别是** [Ansible](http://docs.ansible.com/ansible/intro_installation.html#latest-releases-via-pip)** ,**[Vagrant](http://www.vagrantup.com/)** 和 **[Virtual Box ](https://www.virtualbox.org/)**。所有这些应用程序都可以免费使用,因为它们是开源项目,并且在大多数操作系统上都非常容易设置。
## Create a Zeppelin Ready VM ( 创建一个 Zeppelin Ready VM )
如果您正在运行 **Windows** 并且尚未安装 **python** ,请先安装 **Python 2.7.x** 。
1. 下载并安装 **Vagrant** : [**Vagrant** 下载](http://www.vagrantup.com/downloads.html)
2. 安装 **Ansible** :**[Ansible Python pip install](http://docs.ansible.com/ansible/intro_installation.html#latest-releases-via-pip)**
```
sudo easy_install pip
sudo pip install ansible
ansible --version
```
然后,请检查它是否报告了可接受版本 **1.9.2 或者更高版本**。
3. 安装 **Virtual Box** : [**Virtual Box** 下载](https://www.virtualbox.org/)
4. 在 **/scripts/vagrant/zeppelin-dev** 目录中输入 **vagrant up**
这样就可以了!您现在可以运行** vagrant ssh** ,这将使您进入客户机器终端提示符界面。
如果您不想从头构建 **Zeppelin** ,请在 **guest** 虚拟机中运行时运行 **z-manager installer** 脚本:
```
curl -fsSL https://raw.githubusercontent.com/NFLabs/z-manager/master/zeppelin-installer.sh | bash
```
## Building Zeppelin ( 构建 Zeppelin )
你现在可以
```
git clone git://git.apache.org/zeppelin.git
```
进入主机上的目录,或直接在虚拟机中。
将 **Zeppelin** 从主机中克隆到** /scripts/vagrant/zeppelin-dev** 目录中,将允许在主机和客户机之间共享该目录。
再次克隆项目可能似乎是直观的,因为这个脚本可能源于项目库。考虑将 **Zeppelin** 项目中的** vagrant/zeppelin-dev** 脚本作为独立目录复制,然后再次克隆要构建的特定分支。
同步的文件夹使 **Vagrant** 能够将主机上的文件夹同步到客机,允许您继续在主机上处理项目的文件,但是使用 **guest** 机器上的资源来编译或运行项目。[ (1)同步文件夹描述从 Vagrant Up](https://docs.vagrantup.com/v2/synced-folders/index.html)
默认情况下,**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** 目录中的主机(要与客户机共享)上克隆项目,或者在客机中运行时直接克隆到目录中。以下构建步骤还将包括通过 **PySpark** 和 **SparkR** 的 **Python** 和 **R** 支持:
```
cd /zeppelin
mvn clean package -Pspark-1.6 -Ppyspark -Phadoop-2.4 -Psparkr -DskipTests
./bin/zeppelin-daemon.sh start
```
在您的主机上浏览 [http://localhost:8080/](http://localhost:8080/)
如果您[关闭 Vagrantfile 中的端口转发](http://zeppelin.apache.org/docs/0.7.1/install/virtual_machine.html#tweaking-the-virtual-machine),请浏览 [http://192.168.51.52:8080](http://192.168.51.52:8080/)
## 调整虚拟机
如果您计划沿着其他 **Vagrant** 映像一边运行此虚拟机,则可能希望将虚拟机绑定到特定的 IP 地址,而不要使用本地主机的端口。
注释出 **forward_port **行,并取消注释 **Vagrantfile** 中的 **private_network** 行。最适合本地网络的子网将会有所不同,因此可以调整**192.168.*.***。
```
#config.vm.network "forwarded_port", guest: 8080, host: 8080
config.vm.network "private_network", ip: "192.168.51.52"
```
**vagrant** 停止,随后 **vagrant** 将重新启动访问客户机绑定到** IP** 地址 **192.168.51.52** 。通常运行通过** IP** 地址直接发现的其他虚拟机 ( 如 **Spark Masters** 和 **Slaves** 以及 **Cassandra Nodes** , **Elasticsearch Nodes** 和其他 **Spark** 数据源 ) 时通常需要此方法。您可能希望在具有适用于本地网络的子网中的** IP** 地址的虚拟机中启动节点,例如:
**192.168.51.53**,**192.168.51.54**,**192.168.51.53**等。
## 附加功能
### Python Extras
随着 **Zeppelin** 运行, **NumPy** , **SciPy** ,**Pandas** ,和 **Matplotlib** 将可用。创建一个 **pyspark** 笔记本,并尝试运行下面的代码。
```
%pyspark
import numpy
import scipy
import pandas
import matplotlib
print "numpy " + numpy.__version__
print "scipy " + scipy.__version__
print "pandas " + pandas.__version__
print "matplotlib " + matplotlib.__version__
```
要测试使用 **Matplotlib** 绘制到渲染的 **%html SVG image** ,请尝试:
```
%pyspark
import matplotlib
matplotlib.use('Agg') # turn off interactive charting so this works for server side SVG rendering
import matplotlib.pyplot as plt
import numpy as np
import StringIO
# clear out any previous plots on this note
plt.clf()
def show(p):
img = StringIO.StringIO()
p.savefig(img, format='svg')
img.seek(0)
print "%html <div style='width:600px'>" + img.buf + "</div>"
# Example data
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
y_pos = np.arange(len(people))
performance = 3 + 10 * np.random.rand(len(people))
error = np.random.rand(len(people))
plt.barh(y_pos, performance, xerr=error, align='center', alpha=0.4)
plt.yticks(y_pos, people)
plt.xlabel('Performance')
plt.title('How fast do you want to go today?')
show(plt)
```
### R Extras
随着 **zeppelin** 运行,一个 **R** 教程笔记本将可用。本教程笔记本中运行示例和图形所需的** R** 包由该虚拟机安装。安装的** R** 包包括:**Knitr**,**devtools**,**repr**,**rCharts**,**ggplot2**,**googleVis**,**mplot**,**htmltools**,**base64enc**,**data.table**
- 快速入门
- 什么是Apache Zeppelin?
- 安装
- 配置
- 探索Apache Zeppelin UI
- 教程
- 动态表单
- 发表你的段落
- 自定义Zeppelin主页
- 升级Zeppelin版本
- 从源码编译
- 使用Flink和Spark Clusters安装Zeppelin教程
- 解释器
- 概述
- 解释器安装
- 解释器依赖管理
- 解释器的模拟用户
- 解释员执行Hook(实验)
- Alluxio 解释器
- Beam 解释器
- BigQuery 解释器
- Cassandra CQL 解释器
- Elasticsearch 解释器
- Flink 解释器
- Geode/Gemfire OQL 解释器
- HBase Shell 解释器
- HDFS文件系统 解释器
- Hive 解释器
- Ignite 解释器
- JDBC通用 解释器
- Kylin 解释器
- Lens 解释器
- Livy 解释器
- Markdown 解释器
- Pig 解释器
- PostgreSQL, HAWQ 解释器
- Python 2&3解释器
- R 解释器
- Scalding 解释器
- Scio 解释器
- Shell 解释器
- Spark 解释器
- 系统显示
- 系统基本显示
- 后端Angular API
- 前端Angular API
- 更多
- 笔记本存储
- REST API
- 解释器 API
- 笔记本 API
- 笔记本资源 API
- 配置 API
- 凭据 API
- Helium API
- Security ( 安全 )
- Shiro 授权
- 笔记本 授权
- 数据源 授权
- Helium 授权
- Advanced ( 高级 )
- Zeppelin on Vagrant VM ( Zeppelin 在 Vagrant 虚拟机上 )
- Zeppelin on Spark Cluster Mode( Spark 集群模式下的 Zeppelin )
- Zeppelin on CDH ( Zeppelin 在 CDH 上 )
- Contibute ( 贡献 )
- Writing a New Interpreter ( 写一个新的解释器 )
- Writing a new Visualization (Experimental) ( 编写新的可视化(实验) )
- Writing a new Application (Experimental) ( 写一个新的应用程序( 实验 ) )
- Contributing to Apache Zeppelin ( Code ) ( 向 Apache Zeppelin 贡献( 代码 ) )
- Contributing to Apache Zeppelin ( Website ) ( 向 Apache Zeppelin 贡献(website) )