跳轉到主要內容
Beplay体育安卓版本平台的博客

引入集群級Init腳本

通過Aayush哈

2018年8月30日 產品

分享這篇文章

今年夏天,我在磚作為一個軟件工程實習生在集群團隊。作為我的實習項目的一部分,我設計和實現集群級init腳本,提高可擴展性和易用性。

在這個博客中,我將討論各種好處的集群級init腳本,在磚後跟我的實習經驗,在我的個人和職業發展的影響。

集群級Init腳本

Init腳本是shell腳本運行在每個集群節點的啟動前的火花司機或工人JVM開始。磚等各種目的的客戶使用beplay体育app下载地址init腳本安裝自定義庫,啟動後台進程,或申請企業安全策略。這些新的腳本提供了一些改進之前的,現在已經棄用。

Init腳本現在集群配置的一部分

最大的一個客戶痛點,init腳本用於集群沒有集群配置的一部分,並沒有出beplay体育app下载地址現在用戶界麵。正因為如此,init腳本應用到一個集群是不直觀,編輯或克隆一個集群不會保存init腳本配置。集群級init腳本解決這個問題包括一個“Init腳本”小組的集群配置頁麵的UI,並將一個“init_scripts”字段添加到公共API。這也使得利用init腳本集群訪問控製

curl - n - x - h“application / json內容類型:- d”{“cluster_id”:“1202 - 211320 brick1”," cluster_log_conf ": {" dbfs ": {“目的地”:“dbfs: / cluster-logs”}},“init_scripts”: [{" dbfs ": {“目的地”:“dbfs: /磚/ <目錄> / postgresql-install.sh”}})}'https:/ / < databricks-instance > / api / 2.0 /集群/編輯</ databricks-instance > < /目錄>

現在工作崗位集群Init腳本

以前的init腳本依賴與集群名稱將腳本存儲在一個文件夾。這可以防止它們被用於工作集群,集群的名稱在哪裏生成。因為集群級init腳本是集群配置的一部分,他們可以應用於工作集群,嗯,有相同的接口通過UI和API。

環境變量的初始化腳本

Init腳本現在提供對列出的某些環境變量的訪問在這裏。這樣可以減少很多的複雜性init腳本需要訪問信息,如節點是否司機或執行者和集群id。

訪問控製的init腳本

用戶現在可以提供一個DBFS或S3路徑的init腳本,它可以存儲在任意位置。使用S3時,我的角色可以用來為init腳本提供訪問控製,防止惡意或錯誤的訪問/變更init腳本。閱讀更多有關如何設置這個細節在這裏

簡化的日誌

日誌現在更符合對集群級init腳本集群日誌交付,可以發現在同一根文件夾作為集群的驅動程序和執行程序日誌。

額外的集群事件

Init腳本現在暴露出兩個新的集群事件:INIT_SCRIPTS_STARTED INIT_SCRIPTS_FINISHED。這些幫助用戶確定init腳本執行的時間和提供額外的清晰集群在給定時刻的狀態。

結論

工作在這個項目上暴露了我設計的過程中,實現和測試一個麵向用戶的功能。我學會了如何編寫健壯的、可維護的代碼和評估執行語義。我記得我分布式係統教授聲稱,一個好的設計可以簡化工程努力數量級,導致短,不易清潔代碼錯誤。然而,我從未想過這一點就會回家僅僅幾個月後,在一個行業設置。

我發現磚工程師是極有幫助的,不斷的學習和提高的願望,以及耐心教導。領導是非常開放的員工和不斷尋求反饋,甚至從實習生。實習項目也有很多有趣的活動,以及教育的事件讓我們了解其他領域的公司(例如,銷售、安裝工程、客戶成功)。

最後,我想感謝集群團隊在我的項目為他們的鼓勵和支持。特別喊出我的經理Ihor Leshko始終在需要的時候,邁克林完全改變我的方式方法前端工程,和我的導師陳Haogang教我寶貴的技能,使我能夠寫簡單的,畢業工作代碼構建健壯、生產就緒的係統。

免費試著磚
看到所有產品的帖子
Baidu
map