文章目录

本文简要描述一下用jupyter notebook编写程序,然后在集群上运行的过程。这样我们无须每次将程序传到集群上去运行,而可以通过notebook实现即时运行。

一般使用Jupyter Notebook时,需要用到辅助软件Apache toree。

1.在集群上安装jupyterApache toree

2.用putty或者MobaXterm开启SSH tunnel到集群Gateway(跳板机)

1
2
valinor Dynamic ForwardPort:12345 SSH Server: [user@跳板机IP]:22
gondolin Dynamic ForwardPort:23456 SSH Server: [user@跳板机IP]:22

3.脚本

编写脚本start.app.toree.sh并运行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash

#setup paths
source /etc/profile

export SPARK_HOME=/opt/work/spark-2.1.0-bin-hadoop2.7
export SPARK_MASTER="spark://172.168.0.21:7077"

export PYSPARK_DRIVER_PYTHON_OPTS="notebook --notebook-dir=/home/huqiu/notebooks --ip=* --port=12345 --no-browser --NotebookApp.token='' --allow-root"
export JAR=${APP_HOME}/dist/lib/app-${APP_VERSION}-jar-with-dependencies.jar
export PY_ZIP=${APP_HOME}/dist/lib/app-${APP_VERSION}-python-api.zip
export CONF=${APP_HOME}/dist/conf/xxx.conf

export NOTEBOOK_DIR="./notebooks"
export PORT=12345

export SPARK_OPTS="--master local[12] --driver-memory 4g --properties-file ${CONF} --jars ${JAR} --conf spark.driver.extraClassPath=${JAR} --conf spark.executor.extraClassPath=$JAR} --driver-java-options='-Dhttp.proxyHost=xxx.com -Dhttp.proxyPort=913 -Dhttps.proxyHost=xxx.com -Dhttps.proxyPort=913 -Djava.awt.headless=true'"
echo $SPARK_HOME
echo $SPARK_OPTS

export PYTHONPATH="${SPARK_HOME}/python:${SPARK_HOME}/python/lib/py4j-0.10.4-src.zip:${PY_ZIP}"
echo $PYTHONPATH

jupyter toree install --interpreters=Scala,PySpark --spark_home=${SPARK_HOME} --spark_opts='${SPARK_OPTS}'
jupyter notebook --notebook-dir=${NOTEBOOK_DIR} --ip=* --port=${PORT} --no-browser --NotebookApp.token='' --allow-root

4.打开浏览器http://集群具体机器IP:PORT

5.编写notebook,运行即可

大数据系统与技术 | Big Data