用Jupyter Notebook编写、运行集群程序
总阅读次
本文简要描述一下用jupyter notebook编写程序,然后在集群上运行的过程。这样我们无须每次将程序传到集群上去运行,而可以通过notebook实现即时运行。
一般使用Jupyter Notebook时,需要用到辅助软件Apache toree。
1.在集群上安装jupyter
,Apache toree
2.用putty
或者MobaXterm
开启SSH tunnel到集群Gateway(跳板机)1
2valinor 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
#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,运行即可