最佳作法

在佈建及管理無伺服器實例時,以及在執行 Spark 應用程式時,請使用下列建議準則集。

使用無伺服器實例的最佳實踐,包括詳細說明和參考鏈接
最佳作法 說明 參照鏈結
針對您的開發及正式作業環境使用個別 IBM Analytics Engine 服務實例。 這是一般最佳作法。 透過針對不同環境建立個別 IBM Analytics Engine 實例,您可以先測試任何配置及程式碼變更,然後再將它們套用至正式作業實例。 NA
升級到最新的 Spark 版本 隨著開放程式碼 Spark 版本發行,在內部測試所需的時間間隔之後,它們在 IBM Analytics Engine 中可供使用。 請注意「版本注意事項」區段中 Spark 新版本的公告,並升級實例的執行時期,以將應用程式移至最新的 Spark 執行時期。 較舊的執行時期已淘汰,且最終會隨著發行較新版本而移除。 在對正式作業實例進行變更之前,請確定您在新的執行時期上測試應用程式。
授與角色型存取權 您應該根據所有使用者的需求,將角色型存取權授與 IBM Analytics Engine 實例上的所有使用者。 例如,只有您的自動化團隊應該有權提交應用程式,因為它有權存取密鑰,而您的 DevOps 團隊應該只能查看所有應用程式及其狀態的清單。
選擇正確的 IBM Cloud Object Storage 配置
  • 災難回復 (DR) 備援: 您應該使用 IBM Cloud Object Storage「跨區域」備援選項,在一個地區的數個不同城市中備份您的資料。 相反地,區域備援選項會將資料備份在單一資料中心。
  • Encryption: IBM Cloud Object Storage 隨附預設內建加密。 您也可以配置 Object Storage 以使用 BYOK Key Protect 服務。
  • 服務認證: 依預設, IBM Cloud Object Storage 會使用 IAM 樣式認證。 如果您想要使用 AWS樣式認證,則需要使用「包含 HMAC 認證」選項,如 服務認證中所述。
  • ** IBM Cloud Object Storage的直接端點**: 一律使用直接端點來連接至 IBM Cloud Object Storage 實例。 這適用於 IBM Cloud Object Storage 起始實例,以及應用程式中使用的端點 (您的程式碼或您在實例層次或應用程式層次的配置中作為參數傳遞的內容)。 直接端點提供比公共端點更好的效能,並且不會對任何傳出或傳入頻寬產生費用。
使用外部 Hive meta 儲存庫的專用端點 如果您使用 Spark SQL 並想要使用外部 meta 儲存庫 (例如使用 IBM Cloud Databases for PostgreSQL 作為 Hive meta 儲存庫),則必須使用專用端點來進行資料庫連線,以獲得更好的效能及成本節省。
以資源過度確定來執行應用程式 每一個 Analytics Engine 無伺服器實例都有相關聯的配額。 在實例上提交應用程式時,會從實例配額中配置應用程式資源。 如果應用程式要求超出可用配額的資源,則應用程式不會啟動,或會以少於所要求資源的資源來執行,這可能會導致應用程式執行速度比預期慢,或在某些情況下,導致應用程式失敗。 您應該一律監視實例上的現行資源耗用,以確保您的應用程式在給定限制內輕鬆執行。 必要的話,您可以透過支援問題單來調整限制。
靜態配置資源與自動調整大小 提交應用程式時,您可以預先指定執行程式數目 (靜態配置),或使用自動調整選項 (動態配置)。 在決定要使用靜態配置還是自動調整之前,您可能想要透過改變具有靜態和自動調整的不同資料集來執行一些評比測試,以尋找正確的配置。 一般考量:
-如果您知道應用程式所需的資源 (核心及記憶體) 數目,且它不會在應用程式執行的不同階段之間改變,則建議配置靜態資源以取得更好的效能。
-如果您想要達到最佳化資源使用率,您可以選擇執行程式的自動調整大小,其中會根據應用程式的實際需求來分配執行程式。 請注意,在應用程式中使用自動調整時,可能會有些微相關聯的延遲。
啟用並細部調整轉遞記載 -啟用服務實例的轉遞記載,以協助疑難排解、顯示進度,以及列印或顯示應用程式的輸出。 請注意,根據 IBM Log Analysis 實例中轉遞或保留的日誌數量,日誌轉遞會產生成本。 根據您的使用案例和需求,您需要決定最佳設定。
-當您使用預設 API 啟用日誌轉遞時,只會啟用驅動程式日誌。 如果您也需要執行程式日誌,例如,如果您只在執行程式上看到錯誤,您也需要自訂記載來啟用執行程式記載。 執行程式日誌可能會變得非常大,因此在選擇正確的配置及搜尋技術時,請遵循 IBM Log Analysis 的最佳作法,平衡選項以最佳化轉遞至記載實例的日誌數量與您在日誌中取得的資訊,以進行疑難排解。
例如,您可能想要配置 IBM Log Analysis 實例計劃 7 天搜尋,並將日誌保存至 IBM Cloud Object Storage 以節省成本。 另請參閱 IBM Log Analysis 文件,以瞭解根據關鍵字、時間點等來搜尋您感興趣的日誌的技術。
自訂服務實例 -您可能需要自訂服務實例,以引入未預先安裝的 Python 或 conda 套件,或引入要提供給 Spark 應用程式使用的部分檔案 (憑證或配置檔)。 根據您的需求,使用程式庫集來自訂實例,並在提交應用程式時使用這些程式庫集。
-程式庫集的大小會影響應用程式啟動時間及執行程式啟動時間 (當您自動調整應用程式時)。 另請注意,程式庫集的大小有上限,即 2 GB。 因此,如果不同的應用程式需要不同的程式庫集,最好使用個別的程式庫集,以便在提交應用程式時可以個別指定它們。
-使用自訂作業只會帶入應用程式詳細資料參數無法帶入的檔案。 請參閱 用於提交 Spark 應用程式的參數。 如果符合您的使用案例,您必須使用標準 spark-submit 對等參數選項,例如 filesjarspackagespyFiles 選項。 僅當您需要不符合任何這些種類的檔案 (例如自簽憑證、JAAS 配置檔或 .so 檔案) 時,才應該使用「檔案下載的自訂作業」選項。
擷取應用程式清單時套用過濾器 當您需要在使用者介面中或使用 API 或 CLI 來擷取應用程式清單時,最好套用適當的過濾器並擷取您需要的集合。
使用其他服務或工具來支援功能 除了使用 IBM Log Analysis 及 IBM Cloud Object Storage 實例之外,視您的使用案例而定,您可能想要使用其他支援工具及服務。 例如,您可以使用 Apache Airflow (由您管理) 來編排、排程及自動化應用程式。 您也可以使用 IBM Secrets Manager 來儲存應用程式所需的密鑰,並在提交應用程式之前使用自動化 Script 從 Secrets Manager 中讀取密鑰。 您也可以具有應用程式引數的創意,直接從應用程式內傳遞從 Secrets Manager 讀取必要密鑰所需的記號。
使用替代區域中的實例進行備份及災難回復 目前,可以在兩個地區建立 IBM Analytics Engine 無伺服器實例,即達拉斯 (us-south) 和法蘭克福 (eu-de)。雖然建議在資料所在的相同地區中建立實例,但在替代地區中使用與主要實例相同的配置集來建立備份實例,一律會很有用,因為主要實例會變成無法使用。 必要的話,您的自動化應該會在兩個區域之間啟用切換應用程式提交。 NA
對應用程式檔案、資料檔及起始實例使用個別儲存區及服務認證 使用「考量分隔」原則來區分不同資源之間的存取權。
-不要在起始實例儲存區中儲存資料或應用程式檔案。
-針對資料及應用程式檔案使用個別儲存區。
-針對應用程式檔案及包含資料的儲存區使用個別存取認證 (IAM 金鑰型) ,並對儲存區具有受限存取權。
應用程式必須在 72 小時內執行 應用程式或核心可以執行的時數有限制。 為了安全和相符性修補,所有執行超過 72 小時的執行時期都會停止。 如果您有大型應用程式,請將應用程式分成較小的區塊,在 72 小時內執行。 如果您正在執行 Spark 串流應用程式,請確定您已配置檢查點並具有適當的監視,以在應用程式停止時重新啟動它們
僅在需要時啟動和停止 Spark 歷程 當您不再需要使用 Spark 歷程伺服器時,請一律停止它。 請記住,Spark 歷程伺服器在其狀態啟動時,會持續耗用 CPU 和記憶體資源。