安装并启动jupyter

安装 Anaconda 后, 再安装 jupyter

pip install jupyter

设置环境

ipython --ipython-dir= # override the default IPYTHONDIR directory, ~/.ipython/ by default

ipython profile create foo # create the profile foo

ipython profile locate foo # find foo profile directory, IPYTHONDIR by default,

ipython --profile=foo # start IPython using the new profile

启动jupyter的几个命令, 启动后, 默认还将启动一个浏览器进入 notebook 环境

ipython notebook # 启动 jupyter notebook服务器, 使用默认端口8080

ipython notebook --ip=0.0.0.0 --port=80 # 启动 jupyter notebook服务器, 指定端口

ipython notebook --profile=foo # 使用 foo profile 启动 jupyter notebook服务器

ipython notebook --pylab inline # 启用 PyLab graphing support

ipython notebook 是老版本的命令组合, 新版是jupyter notebook命令组合, 如果使用Anaconda的发布包, 直接使用jupyter-notebook这个工具.

更多jupyter使用信息, 见

http://nbviewer.jupyter.org/github/ipython/ipython/blob/3.x/examples/Notebook/Notebook Basics.ipynb

定制Jupyter

[root#]./jupyter-notebook --generate-config

将生成一个jupyter的配置文件, 比如 /root/.jupyter/jupyter_notebook_config.py , 在其中可配置Notebook App的基本信息

文件名为: /root/.jupyter/jupyter_notebook_config.py

  1. c = get_config()
  2. c.IPKernelApp.pylab = 'inline'
  3. c.NoteBookApp.ip = '0.0.0.0'
  4. c.NotebookApp.open_browser = False
  5. c.NotebookApp.port = 8880 # or whatever you want

为 notebook 的 cell增加line number

在 ~/.ipython/profile_foo/static/custom/custom.js 增加下面几行

  1. define([
  2. 'base/js/namespace',
  3. 'base/js/events'
  4. ],
  5. function(IPython, events) {
  6. events.on("app_initialized.NotebookApp",
  7. function () {
  8. require("notebook/js/cell").Cell.options_default.cm_config.lineNumbers = true;
  9. }
  10. );
  11. }
  12. );

更改jupyter的主题

https://github.com/transcranial/jupyter-themer

更改命令

jupyter-themer -c monokai

访问远端的notebook server

如果是在远端开启了notebook server, 在本机浏览器直接访问, 将不能打开, 这应该是notebook server为安全考虑, 有意屏蔽非本机的访问. 当然, 我们总不能一直通过x-windows到远端打开浏览器使用notebook吧.

1.最简单的做法是,启动notebook sever时, 加上参数--ip=0.0.0.0, 即:

./jupyter-notebook --port=7777 --ip=0.0.0.0

2.另一个方法是:在本机使用ssh软件建立一个连接远端的ssh tunnel, 本机浏览器通过ssh tunnel就可以访问远端的notebook server. 比如, 我习惯使用putty, 方法是:

putty-> Connection > SSH > Tunnels

Under Add new forwarded port:, enter the following information:

Source port: local_port

Destination: remote_host:remote_port

Click Add.然后, 使用这个配置ssh连接远端server.

访问远端的ipython

jupyter是使用tab能进行代码补全, 但在浏览器中有时并不起作用, 使用远端的ipython就没有这个问题, 当然ipython在EDA(探索式数据分析)文档化方面比notebook弱多了, 鱼和熊掌不能皆得. 我更喜欢ipython qtconsole方式.

连接远端ipython的步骤:

  1. 远端开启ipython host, 命令为 ./ipython kernel -f ~/ipython-connect-info.json # 这是一个没有前端的ipython进程.
  2. 将远端的 ipython-connect-info.json 文件复制到本机, 修改其中的ip地址为远端真实的地址
  3. 本机上使用putty为 ipython-connect-info.json 文件中的5个port都开启ssh tunnel
  4. 本机执行 ipython qtconsole --existing c:\ipython-connect-info.json

与PySpark集成

IPython和普通的Python interpreter相比, 优点在于对交互性支持更好, 所以PySpark只有在需要更好交互性的情形下, 才有集成IPython的必要, 显然只有 pyspark shell 才需要集成IPython.

Jupyter和PySpark shell集成方式有好几种, 比如:

  1. 先启动IPython, 然后调用pyspark\shell.py启动spark.

    启动IPython后, 我们可以手动调用pyspark\shell.py, 将调用脚本加到IPython profile目录中自动启动, 自动启动python程序. 调用pyspark\shell.py应放在文件 ~/.ipython/profile_foo/startup/00-pyspark-setup.py 中.

    00-pyspark-setup.py的写法可参考 https://github.com/harisekhon/pytools/blob/master/.ipython-notebook-pyspark.00-pyspark-setup.py

  2. 采用IPython 这个高级 interpreter 来启动pyspark

例子1, 在 spark master server 上以notebook的形式启动 pyspark shell. 如果指定 --master 参数, 必须首先通过 start-master.sh启动 master; 如果省略该参数, 则会pyspark会自动启动master进程.

spark_master_node$ PYSPARK_DRIVER_PYTHON=/usr/python_anaconda/bin/ipython PYSPARK_DRIVER_PYTHON_OPTS="notebook --no-browser --ip=0.0.0.0 --port=7777" pyspark --master spark://quickstart.cloudera:7077

例子2, 在 spark master server 上以ipython kernel的形式启动 pyspark shell, 以便其他机器连入

spark_master_node$ PYSPARK_DRIVER_PYTHON=/usr/python_anaconda/bin/ipython PYSPARK_DRIVER_PYTHON_OPTS="kernel -f ~/ipython-connect-info.json" pyspark --master spark://quickstart.cloudera:7077

例子3, 在 spark master server 上以notebook的形式启动 pyspark shell, 并加载额外的package, 指定内存参数.

spark_master_node$ PYSPARK_DRIVER_PYTHON=ipython PYSPARK_DRIVER_PYTHON_OPTS="notebook --no-browser --port=7777 --profile=foo" pyspark --packages com.databricks:spark-csv_2.10:1.1.0 --master spark://spark_master_hostname:7077 --executor-memory 6400M --driver-memory 6400M

设置 PYSPARK_DRIVER_PYTHONPYSPARK_DRIVER_PYTHON_OPTS 环境变量后, 之后调用pyspark将采用这两个环境变量指定的Python 解释器配置来运行python 版spark 应用.

注意不应该export 这两个环境变量, 因为export后, 非shell的pyspark spark应用也将使用IPython运行, 容易造成滥用.

虽然我不推荐在Linux profile将 PYSPARK_DRIVER_PYTHON 设置为IPython, 但我推荐将 PYSPARK_DRIVER_PYTHON 设置为 Anaconda的 python, 因为这将省去安装额外科学计算包的麻烦, 当然, 环境变量PYSPARK_DRIVER_PYTHON_OPTS不应该再带上notebook或kernel参数.

最好在 spark-env.sh 增加下面4个参数,

worker和driver 的python版本应该是一致的, 否则spark会报错的, 当然driver可以设置为ipython.

export PYSPARK_PYTHON=/usr/bin/python3

export PYSPARK_DRIVER_PYTHON=/usr/bin/ipython3

为了简化提交pyspark 应用的提交,可以预先设置一个 PYSPARK_SUBMIT_ARGS 环境变量.

export PYSPARK_SUBMIT_ARGS='--master local[2]'

export PYSPARK_SUBMIT_ARGS='--master yarn --deploy-mode client --num-executors 24 --executor-memory 10g --executor-cores 5'

参考文章

How-to: Use IPython Notebook with Apache Spark

http://www.tuicool.com/articles/rqIv6z

http://blog.cloudera.com/blog/2014/08/how-to-use-ipython-notebook-with

How to Install PySpark and Integrate with IPython Notebook

https://www.dataquest.io/blog/installing-pyspark/

http://www.tuicool.com/articles/VFn6j2Y

Configuring IPython Notebook Support for PySpark

http://ramhiser.com/2015/02/01/configuring-ipython-notebook-support-for-pyspark/

Using Jupyter on Apache Spark: Step-by-Step with a Terabyte of Reddit Data

http://blog.insightdatalabs.com/jupyter-on-apache-spark-step-by-step/

如何自定义jupyter notebook的主题

http://www.cnblogs.com/wybert/p/5030697.html

jupyter cell 增加 line number

https://stackoverflow.com/questions/20197471/how-to-display-line-numbers-in-ipython-notebook-code-cell-by-default/20197878

Spark编程环境搭建(IPython)

http://www.kinelf.com/?p=169

如何使用Docker快速配置数据科学开发环境(搭建Docker + Jupyter环境 )

https://linux.cn/article-6644-1.html

jupyter notebook + pyspark 环境搭建的更多相关文章

  1. Win10系统下安装tensorflow(cpu)+keras+jupyter notebook运行环境

    记录,自用 1.安装Anaconda(这里安装的是python3.6版本) 2.创建tensorflow的conda环境 conda create -n tensorflow python=3.6 3 ...

  2. jupyter notebook添加环境

    列出当前kernel: jupyter kernelspec list 删除已有环境:jupyter kernelspec remove NAME 安装新kernel ipython kernel i ...

  3. jupyter Notebook环境搭建

    1.什么是jupyter notebook jupyter notebook是一种 Web 应用,能让用户将说明文本.数学方程.代码和可视化内容全部组合到一个易于共享的文档中.它可以直接在代码旁写出叙 ...

  4. 基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境

    基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境 前言一.环境准备环境介绍软件下载VMware下安装UbuntuUbuntu下Anaconda的安 ...

  5. 如何基于Jupyter notebook搭建Spark集群开发环境

    摘要:本文介绍如何基于Jupyter notebook搭建Spark集群开发环境. 本文分享自华为云社区<基于Jupyter Notebook 搭建Spark集群开发环境>,作者:apr鹏 ...

  6. python环境搭建以及jupyter notebook的安装和启动

    一.Python 环境搭建 本章节我们将向大家介绍如何在本地搭建Python开发环境. Python可应用于多平台包括 Linux 和 Mac OS X. 你可以通过终端窗口输入 "pyth ...

  7. Python - 搭建Jupyter notebook环境

    1- Jupyter简介 HomePage:https://jupyter.org/ 安装指南:https://jupyter.org/install.html 官方文档:https://jupyte ...

  8. 利用Anaconda搭建TensorFlow环境并在Jupyter Notebook使用

    打开Anaconda Prompt 创建一个tensorflow 虚拟环境:conda create -n tensorflow python=3.6 激活tensorflow虚拟环境activate ...

  9. 【机器学习 Azure Machine Learning】使用Aure虚拟机搭建Jupyter notebook环境,为Machine Learning做准备(Ubuntu 18.04,Linux)

    问题描述 在Azure的VM中已经安装好Jupyter,并且通过jupyter notebook --port 9999 已经启动,但是通过本机浏览器,访问VM的公网IP,则始终是不能访问的错误.(T ...

随机推荐

  1. 洛谷P1565 牛宫

    题目描述 AP 神牛准备给自己盖一座很华丽的宫殿.于是,他看中了一块N*M 的矩形空地. 空地中每个格子都有自己的海拔高度.AP 想让他的宫殿的平均海拔在海平面之上(假设 海平面的高度是0,平均数都会 ...

  2. 开发新产品的三个验证阶段(EVT/DVT/PVT)

    1.EVT, Engineering Validation Test 是针对工程原型机的验证,对象很可能是一大块开发板,或是很多块开发板:关键是要有足够时间和样品. 通常,如果是新平台,需要花的时间和 ...

  3. hdu 2005 - 第几天?

    题意:判断是否为闰年 解法:这题需要注意一下用scanf能直接读入year,month,day 附上代码: 1: #include<stdlib.h> 2: #include<str ...

  4. Linux下python升级至2.7

    1. 下载python源码包 wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz2. 解压 tar -xjf Python-2.7 ...

  5. 2015年10月份经常使用的linux命令。

    ps -ef |grep  服务名         详细的介绍可以参考此篇博客http://www.cnblogs.com/wangkangluo1/archive/2011/09/23/218593 ...

  6. 给linux添加yum源。

    在玩linux的过程中,经常会下载一些源码包.软件大多是国外人写的,由于众所周知的原因,网络下载很慢. 所以想到了更新yum源的方法. 我的linux版本是CentOS6.3的. 以下参考百度. 1, ...

  7. 深入理解JavaScript中的属性和特性

    深入理解JavaScript中的属性和特性 JavaScript中属性和特性是完全不同的两个概念,这里我将根据自己所学,来深入理解JavaScript中的属性和特性. 主要内容如下: 理解JavaSc ...

  8. CSS3-column分栏

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. javascript 字符串加密的几种方法

    8进制 /*8进制加密*/ function EnEight(){ var monyer = new Array();var i,s; for(i=0;i<txt.value.length;i+ ...

  10. tail 命令 查看Tomcat目录下日志的最后几行的方法

    工作中需要查看日志信息,进行排错,但是面对上万行的错误日志,从头开始往后看,比较浪费时间,所有使用tail命令会节省不少时间. 1.命令   tail  - n  opt/tomcat/logs/ca ...