近日在學習spark的時候,翻遍網絡上各種教程都沒辦法將jupyter上的PySpark開發環境架設好,痛苦不堪。經班里大佬指點,使用toree后終於完成PySpark以及其他kernel的添加。
下面介紹增加方法以及網上搜索到的原理
安裝
根據Spark Kernel的介紹,自從Spark Kernel變成Apache的孵化項目后,其最新倉庫已經 遷移到了incubator-toree。
安裝時,參照Quick Start What is Apache Toree ,僅需兩條命令即可完成安裝
pip install toree jupyter toree install --spark_home=your-spark-home
原理
轉載至http://blog.csdn.net/qq_34342386/article/details/53322131
How it works
Toree提供了一個與Spark集群交互式編程的界面。Torre的API支持多種語言和和執行程序。用戶可通過交互式程序和Spark Context實現Spark任務。 為了更清楚的了解Torre的工作原理,我們將去探索在在各種場景中扮演的角色。
As a Kernelto Jupyter Notebooks
Toree的首要角色是作為Jupyter的內核。Torre最初創建的目的就是為了將Spark API支持服務加載到Jupyter Notebook中以使用Scala語言。現在Torre已經發展為可以支持Python和R。下圖解釋了Toree和Jupyter Notebook的運作關系。
當用戶創建了一個新的Notebook和選擇了Toree后,Notebook server幾條一個配置到Spark集群的Toree程序。在Notebook中,用戶可以通過編寫程序調用Spak Context示例實現與Spark的交互。
Notebook Server和Toree用Jupyter Kernel協議聯系。這個協議不限制交互語言,允許客戶端和核之間雙向通信。這個協議是Toree程序通信的唯一接口。
當通過Jupyter Notebook使用Toree時,這些技術細節會被隱藏,當建立客戶端的時候他們就至關重要了。
作為Spark交互式的門戶
與其他大數據系統相類似的是,Spark經常被使用到的用於批處理。比如Hadoop,在批處理模式下用戶需要編寫程序提交到集群。程序在集群上運行,最終將數據寫進永久存儲器中。Spark通過Spark Submit提供批處理支持。
這種模式下使用Spark,盡管有效,也會有很多弊端。比如,任務的打包和提交,存儲數據的讀取和寫入,都會造成延遲。Spark通過SparkContext類將數據存儲在內存中以減少IO消耗。Spark所缺少的是一種方式,支持應用與長期存活SparkContext交互。
Toree提供了所有Spark API應用和SparkContext之間的通信渠道。通過這個渠道,應用與Spark之間通過代碼與數據交換實現交互。 Jupyter Notebook就是運用Toree和現成的交互通道連接到Spark的一個很好的示例。其他Spark兼容的應用也可以通過0MQ協議直接連Toree。當然也還有其他方式。
如上圖所示,Jupyter Kernel Gateway可以發布基於Toree的網絡套件。這使得Toree更易於集成。結合Jupyter-js-services包,其他網絡應用可以直接與Spake交互。Jupyter Dashboard Server是一個很好的以Toree作為后端的網絡運用。