跳轉到主要內容
工程的博客

讓你RStudio磚更耐用和彈性

分享這篇文章

的一個問題,這些天我們經常聽到我們的客戶是,“我應該開發解決方案在Python或R ?beplay体育app下载地址“沒有正確或錯誤的回答這個問題,因為它很大程度上取決於可用人才庫,功能需求,可用性的包適合問題領域和許多其他因素。

這是一個有效的問題,我們相信答案不是選擇,而是擁抱的力量作為一個從業者通曉多種語言的數據。

如果我們提高從個人到組織層麵考慮,很明顯,大部分組織都有一個專家人才庫在Python中,R, Scala中,Java和其他語言。所以問題不是語言選擇,但如何數據團隊支持所有的最靈活的方法。

R的人才專家是巨大的,特別是在數據科學家,和池已經成熟了許多解決方案的一個重要組成部分;這就是為什麼R語言是不可或缺的磚作為一個平台。Beplay体育安卓版本

在這個博客中,我們將介紹R的持久性代碼RStudio磚和如何實現自動化的代碼備份代碼對抗潛在的災難性的損失。

一個網關或障礙?

為什麼RStudio如此重要?對許多人來說,這個工具是一個最喜歡的編碼環境時,r .如果妥善放置在您的體係結構,RStudio可以為用戶的新員工培訓的第一步到平台采用雲計算,但它可能是一個障礙如果沒有正確意識。Beplay体育安卓版本通過采用雲計算的概念,如SparkR或Sparklyr,用戶可以更舒適的使用筆記本電腦(和替代工具)和更好的裝備為雲未來的旅程。

然而,RStudio可以創建挑戰代碼效率。經常提到其他編程語言可以跑得更快,但訓練你的才華在另一種語言,招聘新人才和遷移解決方案兩個代碼之間都可以輕鬆減少任何提高效率所產生的一種語言,執行得更快。

另一個角度,知識產權。許多組織這些年來積累了無價的知識在定製的R包嵌入大量的專業知識。遷移的IP將昂貴和低效的。

考慮到這些因素,我們隻能得出這樣的結論:R是留在這裏!

RStudio磚上

R是一個一流的語言在磚Databrick和支持筆記本和通過RStudio磚部署。磚與RStudio集成服務器,這是一個流行的集成開發環境(IDE) r .磚與RStudio服務器運行時毫升是開箱即用的1.2版本。

RStudio磚部署

RStudio服務器上運行一個司機磚Apache火花的集群的節點。這意味著司機集群的節點將作為您的虛擬筆記本電腦。這種方法是靈活的,允許物理電腦不允許的注意事項。許多用戶可以很容易地共享相同的集群和最大化利用資源,這是相當容易升級驅動節點通過提供一個更好的性能的實例。RStudio帶有集成的Git支持,您可以很容易地把你所有的代碼,這使得從物理機遷移到雲無縫。

磚RStudio最大的優勢之一是它的開箱即用的整合與火花。RStudio磚支持SparkR和Sparklyr包裝上可以擴展你的R代碼/ Apache火花集群。這將帶來很多的力量,成百上千的機器到你的指尖。這個功能將超負荷和現代化數據科學功能解耦計算的數據在雲的解決方案在一個雲提供商的選擇:微軟Azure,穀歌雲平台或AWS。Beplay体育安卓版本哦,最好的部分?你不隻是局限於一個提供者。

我的代碼那裏去了呢?

當然,即使是最好的解決方案並不完美,讓我們深入的一些挑戰。這種部署的一個主要問題是彈性和耐用性。RStudio的集群上運行需要禁用auto-termination (RStudio的必要要素在這裏),原因很簡單。創建的所有用戶數據在司機RStudio存儲節點。

在這個部署,司機節點包含為每個身份驗證的用戶數據;這些數據包括其R代碼,ssh密鑰用於身份驗證與Git供應商和個人訪問令牌生成在第一次訪問RStudio(點擊“設置RStudio”按鈕)。

設置RStudio磚

Auto-termination了:我安全嗎?不完全是。通過禁用auto-termination,可以確保集群不會終止當你遠離你的代碼。當回到RStudio,您可以保存您的代碼和備份你的遠程Git庫。然而,這並不是唯一的危險我們的代碼的耐久性;管理員可以終止集群,這取決於你如何管理權限。為了這個博客,我們不會進入細節如何正確權限和權利結構。我們假定有一個用戶可以終止集群。

如果有這樣一個用戶可以終止集群在任何給定的時間點,這增加的脆弱性在RStudio R代碼開發。確保你的代碼將生存的唯一方式這樣一個事件是遠程備份對Git代碼庫。這是一個手動操作,很容易被遺忘。

另一個事件,可以導致損失的工作是司機的災難性故障節點,例如,如果用戶試圖將一個不適當的到司機的內存的數據量。在這種情況下,集群可以下來,司機節點需要重啟。實際上,任何事件代碼分配的堆內存,超載可能導致終止司機節點。如果沒有顯式地備份你的數據和你的代碼,你可以失去大量的有價值的工作。讓我們走過一些解決這個問題。

磚RStudio監護人

鑒於RStudio整體技術生態係統的重要性,我們想出了一個解決方案,可以大大減少失去工作的機會RStudio磚:《衛報》工作。

我們提出一個監護人工作在後台運行的RStudio預定義的頻率,將為每個車載用戶項目文件的快照,並返回在DBFS(磚文件係統)的位置或專用掛載存儲層。雖然DBFS可用於少量用戶的數據,一個專門的山是一個首選的解決方案。有關如何設置一個工作在磚,請參考文檔

每個用戶都有一個目錄上創建司機/home/目錄下的節點。這個目錄包含所有相關RStudio文件。這樣的文件夾結構的一個示例如下所示:

//first_name.last_name@your_org.com——-.Rhistory- - - - r——-.rstudio——我的項目——另一個項目——共享項目——. ssh

在這個列表中,您可以確定三個不同的項目目錄。此外,還有其他幾個重要的目錄,尤其是包含您的ssh密鑰對的. ssh目錄中。

為了簡潔起見,這篇文章著重於項目目錄和. ssh目錄,但下麵的方法可以很容易地擴展到其他目錄。我們把項目目錄的文件可DBFS拷貝到一個專門的目錄。我們建議你備份的位置代碼隻能訪問一個管理員賬戶,與備份相關的工作過程是由管理員帳戶。這將減少幹擾的機會獲得任何R的代碼存儲在備份。這樣一個過程所需的完整代碼共享的筆記本電腦連接到這個博客。

邏輯設計的RStudio磚的解決方案

另一方麵,. ssh目錄需要一種稍微不同的方法。內部的. ssh目錄,用戶的公鑰和私鑰存儲。公鑰時不需要任何進一步的治療比任何其他文件,私鑰被認為是敏感數據,也需要適當的照顧。進入現場磚CLI和磚的秘密。磚CLI,我們得到了一個簡單的方法來以編程方式與磚秘密和交互通過秘密的方式安全地存儲敏感數據。我們可以很容易地安裝磚CLI的集群上運行:

% pip安裝databricks-cli

這允許shell中運行以下命令:

磚把秘密——rstudio_backup——關鍵unique_username範圍二進製/ / private_key - file /路徑

有幾個注意事項要記住。Ssh密鑰RStudio將實現RSA算法,生成的默認私鑰大小的2048位。秘密有限製多少數據可以存儲在一個範圍;1000個人秘密可以存儲在一個範圍。此外,每個秘密都必須128 kb的數據或更少。鑒於這些注意事項和限製,我們建議為每個用戶分配一個秘密包含任何敏感數據。這將需要存儲數據的JSON字符串,以防多個敏感值:

{“private_key”:“key_payload”,“another_secret”:“xxxxxxxxxxxxxxx.xx”“access_token”:“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”}

前麵的示例說明了如何構造一個JSON字符串,其中包含私鑰負載所需的兩個額外的秘密一起用戶執行他們的工作。這種方法可以擴展到包含任意數量的敏感值,隻要他們的組合適合在128 kb的限製。另一種方法是為每個存儲有一個單獨的秘密值;這將減少每RStudio集群的最大用戶數量,可以支持多達1000用戶/ N,其中N是存儲每個用戶的秘密。

如果超過1000用戶訪問同一個RStudio實例,需要自動備份(或333用戶如果我們繼續3每個用戶單獨的秘密),您可以創建多個秘密範圍和遍曆範圍每批每1000用戶。

恢複狀態

現在正在創建備份,以防終止RStudio集群中,我們可以很容易地恢複之前最後為人所知的集群的主目錄和所有重要用戶的數據備份,包括ssh密鑰。ssh密鑰備份很重要,從自動化的角度來看,如果我們選擇不存儲ssh密鑰,每次RStudio集群重啟,我們需要娛樂的鍵和重返社會的鑰匙我們賬戶的設置Git提供者。ssh密鑰存儲在一個專用的秘密範圍從最終用戶會刪除這個負擔。

磚創造了第二個筆記本,恢複所有備份R項目RStudio用戶和他們的代碼。這個筆記本應該運行在需求一旦RStudio被創建和熱身。

此功能打開幾個不同方麵的平台;Beplay体育安卓版本現在的代碼是更耐用,並自動備份。如果集群需要重新配置,最後一個已知狀態可以很容易地恢複,不再取決於每個人手動推動他們的代碼Git存儲庫。注意,存儲對Git代碼經常仍然是最佳實踐,和我們的解決方案將擴大這種最佳實踐,而不是取代它們。

開始

實現這個解決方案請使用以下筆記本作為基準自動按需備份和恢複過程。

免費試著磚
看到所有工程的博客的帖子
Baidu
map