標籤:style blog http io ar color 使用 sp java
Spark版本:1.1.1
本文系從官方文檔翻譯而來,轉載請尊重譯者的工作,註明以下連結:
http://www.cnblogs.com/zhangningbo/p/4135808.html
目錄
- 僅適用於Standalone模式的連接埠
- 適用於所有叢集管理器的通用連接埠
現在,Spark支援通過共用秘鑰進行認證。啟用認證功能可以通過參數spark.authenticate來配置。此參數控制spark通訊協定是否使用共用秘鑰進行認證。這種認證方式基於握手機制,以確保通訊雙方都有相同的共用秘鑰時才能通訊。如果共用秘鑰不一致,則雙方將無法通訊。可以通過以下過程來建立共用秘鑰:
- 在spark on YARN部署模式下,配置spark.authenticate為true,就可以自動產生並分發共用秘鑰。每個應用程式都使用唯一的共用秘鑰。
- 其他部署方式下,應當在每個節點上都配置參數spark.authenticate.secret。此秘鑰將由所有Master、worker及應用程式來使用。
- 注意:實驗性的Netty shuffle路徑(spark.shuffle.use.netty)是不安全的,因此,如果啟用認證功能就不要使用Netty for shuffle了。
Web UI
通過設定參數spark.ui.filters來使用javax servlet filters就可以實現安全的spark UI。如果使用者有某些不該讓其他人看到的資料,那麼該使用者就會要求UI也能有安全性。使用者指定了Java servlet filter就可以進行認證了。接下來,一旦使用者登入,spark就可以在ACL列表中查詢該使用者是否有權查看UI。配置參數spark.acls.enable和spark.ui.view.acls控制著ACL的行為。注意:啟動應用程式的使用者總是有權訪問UI。在YARN上,spark UI使用標準的YARN web代理機制並通過已安裝的Hadoop filters進行認證。
spark還支援通過修改ACL表來控制哪個使用者有權修改正在運行著的spark應用程式。比如,kill一個應用程式或任務。這類操作是通過配置spark.acls.enable和spark.modify.acls來控制的。注意:如果你正在認證Web UI,那麼,為了使用Web UI上的kill按鈕,你就必須把使用者添加到view acls表中。在YARN上,修改後的acls被傳入並控制著哪個使用者可以通過YARN介面來訪問web UI。
如果有多個管理員存在,那麼spark允許在acls中指定多個管理員,讓他們總可以查看所有應用程式,以及修改應用的許可權。這一功能是由配置參數spark.admin.acls來控制的。這在共用叢集上是很有用的,因為這類叢集中往往有多個管理員或者協助使用者偵錯工具的技術支援人員。
事件記錄
如果應用程式正在使用事件記錄記錄功能,那麼,應當手動建立用來存放事件記錄的路徑(spark.eventLog.dir),並賦予其合適的許可權。如果你想讓這些記錄檔也是安全的,那麼,該路徑的許可權應當設為drwxrwxrwxt。該路徑的所有者應該是正在運行history server進程的那個超級使用者,而且使用者組許可權應限制為超級使用者組。這樣做可以讓所有使用者都能對該路徑執行寫操作,但會阻止那些未經授權的使用者刪除或重新命名檔案,除非他們是該檔案或者路徑的所有者。事件記錄檔案由spark建立並賦予許可權,比如只有所有者及其所在使用者組有讀寫權限。
網路安全(配置連接埠)
spark大量使用網路,而且有些環境嚴格要求使用嚴密的防火牆設定。下面是spark用於通訊的主要連接埠,以及如何配置這些連接埠。
僅適用於Standalone模式的連接埠
| From |
To |
預設連接埠 |
用途 |
配置 |
備忘 |
| Browser |
Standalone Master |
8080 |
Web UI |
spark.master.ui.port / SPARK_MASTER_WEBUI_PORT |
Jetty-based,僅用於Standalone模式 |
| Browser |
Standalone Worker |
8081 |
Web UI |
spark.worker.ui.port / SPARK_WORKER_WEBUI_PORT |
Jetty-based,僅用於Standalone模式 |
| Driver / Standalone Worker |
Standalone Master |
7077 |
向叢集提交作業(Submit) |
SPARK_MASTER_PORT |
Akka-based。設為0意思是隨機播放連接埠,僅用於Standalone模式 |
| Standalone Master |
Standalone Worker |
random |
調度executors |
SPARK_WORKER_PORT |
Akka-based。設為0意思是隨機播放連接埠,僅用於Standalone模式 |
適用於所有叢集管理器的通用連接埠
| From |
To |
預設連接埠 |
用途 |
配置 |
備忘 |
| Browser |
Application |
4040 |
Web UI |
spark.ui.port |
Jetty-based |
| Browser |
History Server |
18080 |
Web UI |
spark.history.ui.port |
Jetty-based |
| Executor / Standalone Master |
Driver |
random |
串連到Application,或通知executor狀態變化 |
spark.driver.port |
Akka-based。設為0意思是隨機播放連接埠 |
| Driver |
Executor |
random |
調度任務task |
spark.executor.port |
Akka-based。設為0意思是隨機播放連接埠 |
| Executor |
Driver |
random |
files和jars檔案伺服器 |
spark.fileserver.port |
Jetty-based |
| Executor |
Driver |
random |
HTTP廣播 |
spark.broadcast.port |
Jetty-based,TorrentBroadcast不使用該連接埠,它通過block manager發送資料 |
| Executor |
Driver |
random |
類(class)檔案伺服器 |
spark.replClassServer.port |
Jetty-based,僅用於spark shell |
| Executor / Driver |
Executor / Driver |
random |
Block Manager連接埠 |
spark.blockManager.port |
Raw socket via ServerSocketChannel |
有關安全的配置參數詳見配置頁面,安全機制的實現參考 org.apache.spark.SecurityManager。
【Spark學習】Apache Spark安全機制