0

我已經在這裏看到了使用Dataproc設置Jupyter筆記本的說明https://cloud.google.com/dataproc/docs/tutorials/jupyter-notebook,但我無法弄清楚如何改變進程以便使用雲外殼在本地創建SSH隧道。我已經從雲shell中運行如何使用雲外殼的Jupyter筆記本連接到Dataproc羣集

datalab connect vmname 

,然後使用預覽功能已經能夠連接到datalab筆記本。我想要做類似的事情,但使用Jupyter筆記本和一個dataproc集羣。

回答

2

在理論上,你可以大都遵循相同的指令如發現https://cloud.google.com/shell/docs/features#web_preview通過雲端Shell的相同「網絡預覽」功能使用本地端口轉發訪問Dataproc上的Jupyter筆記本。喜歡的東西在你的雲殼以下:

gcloud compute ssh my-cluster-m -- -L 8080:my-cluster-m:8123 

不過,也有其阻止這樣做的兩個問題:

  1. 您需要修改Jupyter config來添加以下的底部/root/.jupyter/jupyter_notebook_config.py

    c.NotebookApp.allow_origin = '*' 
    
  2. 雲殼牌公司的網頁預覽需要增加對WebSockets的支持。

如果你不這樣做(1),那麼你就當試圖創建一個筆記本,由於Jupyter拒絕雲殼代理領域得到彈出錯誤。不幸的是(2)需要Cloud Shell本身的更深入的支持;它會表現爲像A connection to the notebook server could not be established.

另一種可能的選擇錯誤,而無需等待(2)是運行自己的nginx代理作爲Dataproc羣集上jupyter初始化動作的一部分,如果你能得到它的代理WebSockets的適當。看到這個線程也有類似的情況:https://github.com/jupyter/notebook/issues/1311

通常,這種類型的代理層中斷開的websocket支持是一個常見的問題,因爲它還比較新;隨着時間的推移,越來越多的東西將開始支持開箱即用的websockets。

或者:

Dataproc還支持使用一個Datalab初始化動作;這被設置爲使得代理的websocket已經被處理。因此,如果你不是太依賴只是Jupyter具體而言,然後在雲殼以下工作:

gcloud dataproc clusters create my-datalab-cluster \ 
    --initialization-actions gs://dataproc-initialization-actions/datalab/datalab.sh 
gcloud compute ssh my-datalab-cluster-m -- -L 8080:my-datalab-cluster-m:8080 

,然後選擇在8080端口上慣用的「網頁預覽」或者你可以選擇其他雲殼牌支持本地結合樣口:

gcloud compute ssh my-datalab-cluster-m -- -L 8082:my-datalab-cluster-m:8080 

在這種情況下,你會選擇8082作爲網頁預覽端口。

+0

您列出的替代方案適合我!非常感謝! – dobbysock1002

0

您無法通過安裝在VM上的Datalab(在GCE上)連接到Dataproc。

作爲您提到的文檔,您必須使用Datalab初始化操作啓動Dataproc。

而且,Datalab connect命令僅在您創建Datalab時纔可用,這要歸功於Datalab create命令。

您必須創建一個SSH隧道到您的主節點(「虛擬機名稱-M」,如果你的羣集名稱爲「虛擬機名稱」)有:

gcloud compute ssh --zone YOUR-ZONE --ssh-flag="-D 1080" --ssh-flag="-N" --ssh-flag="-n" "vmname-m" 
+0

我希望可能有一個不涉及SSH隧道的選項 – dobbysock1002

+0

由於專業網絡的侷限性,我嘗試了幾乎所有的東西,沒有任何成功。 對不起。 – Olivier

相關問題