页面树结构

2017-11-09 ApacheCN 开源组织,第二期邀请成员活动,一起走的更远 : http://www.apachecn.org/member/209.html


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

使用 IPython 和 Jupyter  Notebook 运行 Spark 应用

IPython Notebook 是一个与 Mathematica 相似的系统,它运行您创建 “可执行的文档”。IPython Notebook 整合了 text(Markdown)格式,可执行的代码(Python),数学公式(LaTeX),和图形以及可视化(matplotlib)到一个可以抓取一个探索的流以及能够作为一个格式化的报告或者可执行的脚本的单独的文档中。

IPython中您可以使用的版本取决于所安装操作系统的Python版本。在RHEL 6兼容的系统中,默认的Python版本是2.6,你可以使用IPython的1.2.1。如果你有,或可以安装Python 2.7或更高版本,Cloudera的建议您使用IPython的4.0(改名Jupyter)。

本节将介绍如何安装和配置 IPython 和 Jupyter 与 PySpark 工作。

注意 :

在下面的说明中,driver hostsexecutor host 所代表的含义取决于您运行在 client 模式还是 cluster 模式中。在 client 模式中,driver 运行在 gateway 节点并且 executo 总是运行在 NodeManager 主机。在 cluster 模式中,driver 和 executor 都运行在 NodeManager 上。因此您需要在所有应用将使用的节点上安装以及配置 notebook。

安装和配置 IPython 1.2.1

driver hosts 上 : 

  1. 安装 IPython 1.2.1 依赖  Jinja2pyzmq和 Tornado : 

    $ pip install Jinja2
    $ pip install pyzmq
    $ pip install tornado
  2. 安装 IPython 1.2.2 : 

    $ pip install 'ipython<2'
  3. 设置下列的环境变量 : 

    $ export PYSPARK_DRIVER_PYTHON=ipython
    $ export PYSPARK_DRIVER_PYTHON_OPTS="notebook --NotebookApp.open_browser=False --NotebookApp.ip='*' --NotebookApp.port=8880"

安装和配置 Jupyter

根据您想要的安装方式以及使用 Python 2.7,请执行列些操作之一 : 

  • Parcel 安装 : 
    1. 安装 Anaconda parcel
    2. 在 driver host 上,设置下列的环境变量 : 

      $ export PYSPARK_DRIVER_PYTHON=/opt/cloudera/parcels/Anaconda/bin/jupyter
      $ export PYSPARK_DRIVER_PYTHON_OPTS="notebook --NotebookApp.open_browser=False --NotebookApp.ip='*' --NotebookApp.port=8880"
    3. 在 driver 和 executor host 上,设置下列的变量 : 

      $ export PYSPARK_PYTHON=/opt/cloudera/parcels/Anaconda/bin/python
  • 用虚拟环境手动安装 : 
    1. 如果你没有 Python 2.7,在 Spark driver 和 executor 主机上安装 Anaconda 2.7 distribution。如果您已经有 Python 2.7 了,在 driver host 上安装 Jupyter
    2. 在所有的主机上,创将一个包含 Python 2.7 的 虚拟环境
    3. 在 driver host 上,设置下列的环境变量 : 

      $ export PYSPARK_DRIVER_PYTHON=/path/to/python27/bin/jupyter
      $ export PYSPARK_DRIVER_PYTHON_OPTS="notebook --NotebookApp.open_browser=False --NotebookApp.ip='*' --NotebookApp.port=8880"
    4. 在 driver 和 executor host 上,设置下列变量 :  

      $ export PYSPARK_PYTHON=/path/to/python27/bin/python

用 PySpark 启动 Notebook

  1. 在 driver host 上,选择一个用来运行 Notebook 的目录 notebook_directorynotebook_directory 包含表示不同的 notebook 能被服务的 .ipynb 文件。
  2. 在 notebook_directory 中,用您定义的 运行时选项 运行 pyspark。您应该看到如下输出 : 

    $ pyspark options
    2015-12-01 13:13:18.223 [NotebookApp] Using MathJax from CDN: http://cdn.mathjax.org/mathjax/latest/MathJax.js
    2015-12-01 13:13:18.231 [NotebookApp] CRITICAL | WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
    2015-12-01 13:13:18.231 [NotebookApp] CRITICAL | WARNING: The notebook server is listening on all IP addresses and not using authentication. This is highly insecure and not recommended.
    2015-12-01 13:13:18.232 [NotebookApp] Serving notebooks from local directory: notebook_directory
    2015-12-01 13:13:18.232 [NotebookApp] The [IPython|Jupyter] Notebook is running at: http://[all ip addresses on your system]:8880/
    2015-12-01 13:13:18.233 [NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

创建一个客户端 Session 和 Notebook

  1. 在浏览器中打开 http://notebook_host:8080

    IPython 屏幕应该看起来是这样的 : 

    Notebook 标签列出了可用的 notebook。

    Jupyter 屏幕看起来像这样 : 

    文件标签列出了可用的 notebook。

  2. 点击  New Notebook(IPython)或者选择 New > Python2(Jupyter),它会创建一个新的 .ipynb 文件并且打开这个新的 notebook。如果您用 parcel 安装了 CDH,在 notebook 控制台中您应该看到如下信息 : 

    2015-12-01 13:30:41.513 [NotebookApp] Connecting to: tcp://127.0.0.1:51095
    2015-12-01 13:30:41.529 [NotebookApp] Connecting to: tcp://127.0.0.1:36922
    2015-12-01 13:30:41.549 [NotebookApp] Connecting to: tcp://127.0.0.1:53548
    WARNING: User-defined SPARK_HOME (/opt/cloudera/parcels/CDH-...) overrides detected (/opt/cloudera/parcels/CDH/lib/spark).
    WARNING: Running spark-class from user-defined location.
    SLF4J: ...
    15/12/01 13:30:43 INFO SparkContext: Running Spark version ...
  3. 在 notebook 标题中,点击 Untitled0。重命名的对话框将会展示。
  4. 清楚默认名,属于一个 notebook 名字,点击 OK。
  5. 在 notebook 单元格中输入语句并按下 Shift+Enter 或者 Shift+Return 来运行。下面的截图展示了一个用来计算 单词统计 的 session。

参考

这些参考文献描述了使用 IPython Notebook 的好处并列出了一些有用的 notebook :