# Zeppelin on Spark Cluster Mode( Spark 集群模式下的 Zeppelin )
原文鏈接 : [http://zeppelin.apache.org/docs/0.7.2/install/spark_cluster_mode.html](http://zeppelin.apache.org/docs/0.7.2/install/spark_cluster_mode.html)
譯文鏈接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10031041](http://www.apache.wiki/pages/viewpage.action?pageId=10031041)
貢獻者 : [小瑤](/display/~chenyao) [ApacheCN](/display/~apachecn) [Apache中文網](/display/~apachechina)
## 概述
到目前為止,**Apache Spark** 已經支持三種集群管理器類型(**Standalone**,**Apache Mesos** 和 **Hadoop YARN** )。本文檔將指導您如何使用 **Docker** 腳本使用 **Apache Zeppelin** 在3種類型的 **Spark** 集群管理器上構建和配置環境。所以首先在機器上安裝 **docker** 。
## Spark standalone mode ( Spark獨立模式?)
Spark standalone 是Spark附帶的簡單集群管理器,可以輕松設置集群。您可以通過以下步驟簡單地設置 Spark獨立環境。
注意
由于 **Apache Zeppelin** 和 **Spark** 為其 **Web UI** 使用相同的 **8080** 端口,因此您可能需要在 **conf / zeppelin-site.xml** 中更改 **zeppelin.server.port** 。
### 1.Build Docker file ( 構建 Docker 文件?)
您可以在腳本 **/ docker / spark-cluster-managers** 下找到 **docker** 腳本文件。
```
cd $ZEPPELIN_HOME/scripts/docker/spark-cluster-managers/spark_standalone
docker build -t "spark_standalone" .
```
### 2.Run docker ( 運行 docker )
```
docker run -it \
-p 8080:8080 \
-p 7077:7077 \
-p 8888:8888 \
-p 8081:8081 \
-h sparkmaster \
--name spark_standalone \
spark_standalone bash;
```
請注意,在這里運行 **docker** 容器的 **sparkmaster** 主機名應該在 **/ etc / hosts** 中定義。
### 3.Configure Spark interpreter in Zeppelin ( 在 Zeppelin 中配置 Spark 解釋器 )
將 **Spark master** 設置為?**spark://<hostname>:7077** 在 **Zeppelin** 的解釋器設置頁面上。

### 4.Run Zeppelin with Spark interpreter ( 用 Spark 解釋器運行 Zeppelin?)
在 **Zeppelin** 中運行帶有 **Spark** 解釋器的單個段落后,瀏覽 **https:// <hostname>:8080**,并檢查 **Spark** 集群是否運行正常。

您還可以通過以下命令簡單地驗證 **Spark** 在 **Docker** 中運行良好。
```
ps -ef | grep spark
```
## Spark on YARN mode ( Spark 在 YARN 模式下?)
您可以通過以下步驟簡單地設置** [Spark on YARN](http://spark.apache.org/docs/latest/running-on-yarn.html) docker** 環境。
注意
由于 **Apache Zeppelin** 和 **Spark** 為其 **Web UI** 使用相同的 **8080** 端口,因此您可能需要在 **conf / zeppelin-site.xml** 中更改 **zeppelin.server.port** 。
### 1.Build Docker file ( 構建Docker文件?)
您可以在腳本 **/ docker / spark-cluster-managers** 下找到 **docker** 腳本文件。
```
cd $ZEPPELIN_HOME/scripts/docker/spark-cluster-managers/spark_yarn_cluster
docker build -t "spark_yarn" .
```
### 2.Run docker ( 運行 docker )
```
docker run -it \
-p 5000:5000 \
-p 9000:9000 \
-p 9001:9001 \
-p 8088:8088 \
-p 8042:8042 \
-p 8030:8030 \
-p 8031:8031 \
-p 8032:8032 \
-p 8033:8033 \
-p 8080:8080 \
-p 7077:7077 \
-p 8888:8888 \
-p 8081:8081 \
-p 50010:50010 \
-p 50075:50075 \
-p 50020:50020 \
-p 50070:50070 \
--name spark_yarn \
-h sparkmaster \
spark_yarn bash;
```
請注意,在這里運行 **docker** 容器的 **sparkmaster** 主機名應該在 **/ etc / hosts** 中定義。
### 3.Verify running Spark on YARN ( 驗證在YARN上運行Spark?)
您可以通過以下命令簡單地驗證 **Spark** 和 **YARN** 的進程在 **Docker** 中運行良好。
```
ps -ef
```
您還可以在 **http:// <hostname>:50070 /** ,**YARN on http:// <hostname>:8088 / cluster** 和 **Spark on http:// <hostname>:8080 /** 上查看 **HDFS** 的每個應用程序 **Web UI** 。
### 4.Configure Spark interpreter in Zeppelin ( 在 Zeppelin 中配置 Spark 解釋器?)
將以下配置設置到 **conf / zeppelin-env.sh** 。
```
export MASTER=yarn-client
export HADOOP_CONF_DIR=[your_hadoop_conf_path]
export SPARK_HOME=[your_spark_home_path]
```
**HADOOP_CONF_DIR**( **Hadoop** 配置路徑)在 **/ scripts / docker / spark-cluster-managers / spark_yarn_cluster / hdfs_conf** 中定義。
不要忘記在 **Zeppelin Interpreters** 設置頁面中將 **Spark master** 設置為 **yarn-client** ,如下所示。

### 5.Run Zeppelin with Spark interpreter ( 使用Spark解釋器運行Zeppelin?)
在 **Zeppelin** 中使用 **Spark** 解釋器運行單個段落后,瀏覽 h**ttp:// <hostname>:8088 / cluster / apps** 并檢查 **Zeppelin** 應用程序運行是否正常。

## Spark on Mesos mode ( Spark 在 Mesos 模式?)
你可以通過以下步驟簡單地設置 **[Spark on Mesos](http://spark.apache.org/docs/latest/running-on-mesos.html)** 環境。
### 1.Build Docker file ( 構建 docker 文件 )
```
cd $ZEPPELIN_HOME/scripts/docker/spark-cluster-managers/spark_mesos
docker build -t "spark_mesos" .
```
### 2.Run docker ( 運行 docker )
```
docker run --net=host -it \
-p 8080:8080 \
-p 7077:7077 \
-p 8888:8888 \
-p 8081:8081 \
-p 8082:8082 \
-p 5050:5050 \
-p 5051:5051 \
-p 4040:4040 \
-h sparkmaster \
--name spark_mesos \
spark_mesos bash;
```
請注意,在這里運行 **docker** 容器的 **sparkmaster** 主機名應該在 **/ etc / hosts** 中定義。
### 3.Verify running Spark on Mesos ( 驗證在Mesos上運行Spark?)
您可以通過以下命令簡單地驗證 **Spark** 和 **Mesos** 的進程在 **Docker** 中運行良好。
```
ps -ef
```
您還可以在 **http:// <hostname>:5050 / cluster** 和 **Spark on http:// <hostname>:8080 /** 上檢查 **Mesos** 的每個應用程序 **Web UI** 。
### 4.Configure Spark interpreter in Zeppelin ( 在Zeppelin中配置Spark解釋器?)
```
export MASTER=mesos://127.0.1.1:5050
export MESOS_NATIVE_JAVA_LIBRARY=[PATH OF libmesos.so]
export SPARK_HOME=[PATH OF SPARK HOME]
```
不要忘記將 **Spark master** 設置為 **mesos://127.0.1.1:5050** 在 **Zeppelin Interpreters** 設置頁面中,如下所示。

### 5.Run Zeppelin with Spark interpreter ( 使用Spark解釋器運行Zeppelin?)
在 **Zeppelin** 中使用 **Spark** 解釋器運行一個段落后,瀏覽**http://<hostname>:5050/#/frameworks**?,并檢查 **Zeppelin** 應用程序運行是否正常。

### Troubleshooting for Spark on Mesos ( Spark在Mesos上的故障排除?)
* 如果?**hostname?**有問題,請在執行 **dockerrun** 時使用 **--add-host** 選項
```
## use `--add-host=moby:127.0.0.1` option to resolve
## since docker container couldn't resolve `moby`
: java.net.UnknownHostException: moby: moby: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1496)
at org.apache.spark.util.Utils$.findLocalInetAddress(Utils.scala:789)
at org.apache.spark.util.Utils$.org$apache$spark$util$Utils$$localIpAddress$lzycompute(Utils.scala:782)
at org.apache.spark.util.Utils$.org$apache$spark$util$Utils$$localIpAddress(Utils.scala:782)
```
* 如果您與 **mesos master** 有問題,請嘗試使用 **mesos://127.0.0.1** 而不是 **mesos://127.0.1.1**?
```
I0103 20:17:22.329269 340 sched.cpp:330] New master detected at master@127.0.1.1:5050
I0103 20:17:22.330749 340 sched.cpp:341] No credentials provided. Attempting to register without authentication
W0103 20:17:22.333531 340 sched.cpp:736] Ignoring framework registered message because it was sentfrom 'master@127.0.0.1:5050' instead of the leading master 'master@127.0.1.1:5050'
W0103 20:17:24.040252 339 sched.cpp:736] Ignoring framework registered message because it was sentfrom 'master@127.0.0.1:5050' instead of the leading master 'master@127.0.1.1:5050'
W0103 20:17:26.150250 339 sched.cpp:736] Ignoring framework registered message because it was sentfrom 'master@127.0.0.1:5050' instead of the leading master 'master@127.0.1.1:5050'
W0103 20:17:26.737604 339 sched.cpp:736] Ignoring framework registered message because it was sentfrom 'master@127.0.0.1:5050' instead of the leading master 'master@127.0.1.1:5050'
W0103 20:17:35.241714 336 sched.cpp:736] Ignoring framework registered message because it was sentfrom 'master@127.0.0.1:5050' instead of the leading master 'master@127.0.1.1:5050'
```
- 快速入門
- 什么是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) )