使用Jupyter Notebook 加速PySpark开发
Windows在开发PySpark程序的时候, 大部分情况都没有什么问题. 但是有两种情况就比较蛋疼了:
读取NFS文件
Windows底下, 一旦涉及到NFS的文件路径, 就歇菜了: 因为NFS的文件路径都是比如 /mnt/nfs/xxx 这种, 而Windows上面完全无法实现.
消耗性能
虽然作为client, 理论上不需要太强悍的性能, 但是有的事情并不合适Spark. 这个时候, 能有一个强力的client, 就美滋滋了!
关于NFS的解决方案, 一种很简单的解决方案就是起一个虚拟机. 我这边选择的方案:
基于Docker的JupyerNotebook 作为pyspark的开发工具.
PS: 笔者在这里就不对比两种方案的优劣了. 各位看官可以根据自己的需求进行选取.
安装Docker
这个网上已经很多教程了.
在这里推荐一个: 安装· Docker —— 从入门到实践 – yeasy – GitBook
基础环境
基础镜像
因为我们主力是python语言, 有时候还需要做一些AI/ML Task.
我选取的是TensorFlow的镜像: Pull的命令: docker pull tensorflow/tensorflow
mount NFS
首先安装nfs-common. 以ubuntu为例: apt install -y nfs-common
mount命令:
sudo mount -t nfs remote_server:remote_dir /mnt/nfs3
启动docker:
[code lang=bash]
# 注意: 一定要加上 –net=host –pid=host -e TINI_SUBREAPER=true
sudo docker run –name spark-learn -d\
–net=host –pid=host -e TINI_SUBREAPER=true\
-p 8888:8888 -v /notebooks:/notebooks\
-v /mnt/nfs3:/mnt/nfs3\
tensorflow/tensorflow
[/code]
否则在后面运行spark脚本之后, 会遇到很诡异的提示”资源不足”
配置环境
这个时候, 已经可以直接打开notebook写python了. 所以,有的操作我就放python代码了.
修改APT源 (使用163)
[code lang=bash]
# ipython notebook之中表示执行命令
!cp /etc/apt/sources.list /etc/apt/sources.list.bak
import os
source = '''
deb http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse
'''
with open('/etc/apt/sources.list', 'w') as f :
f.write(source)
!apt update
[/code]
安装JDK
直接APT安装openjdk 不要太方便啊, 比手动安装oracle-jdk 方便多了. 而且目前看来, spark对他的兼容性也是得到保证的.
!apt-get install openjdk-8-jre -y
安装Maven
有时候, pyspark需要依赖其他的包的时候, 需要使用maven下载.
使用APT安装还是最方便的 :
apt-get install maven -y
修改pip源 + 安装pyspark
因为pyspark比较大, 网络不好的同学建议修改pip源.
修改pip源, 推荐我的小工具: https://github.com/RangerWolf/pip-ex
使用很简单:
[code lang=python]
mkdir_p(pip_config_dir)
change("tsinghua") # 我的网络发现清华的镜像比阿里云还要快!
[/code]
之后pip安装飞起来了! 安装pyspark就一句话: pip install pyspark
其他说明:
实时查看Spark运行日志
Spark的运行log并不会直接在notebook上面显示. 需要使用docker logs命令才能看到.
如果我们需要在命令自动显示最新的log, 而不需要我们每次手动输入, 可以使用下面的命令:
docker logs -f --tail 100 spark-learn
网络速度监控
第一次运行Spark程序的时候, 我发现一个很简单的命令也没有执行弯成. 以为是网络IO太久了.
想看看是不是网络卡, 我发现下面这个神器:
[code lang=bash]
# 安装
sudo apt-get install speedometer
# 运行
speedometer -rx eth0 -tx eth0
# docker环境下, 可以多试几个
# 可以使用ifconfig 查看
speedometer -rx docker0 -tx docker0
speedometer -rx eno0 -tx eno0
[/code]
在命令行就直接显示出这种图片, 真是太牛了!
时间:2018-10-09 22:35 来源: 转发量:次
声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。
相关文章:
相关推荐:
网友评论: