將生產工作負載遷移到Databricks
本指南解釋如何將生產作業從其他平台上的Apache Spark轉移到Databricks上的Apache Spark。Beplay体育安卓版本
概念
可以捆綁並提交到Databricks的單個代碼單元。Databricks作業相當於火花的應用程序用一個SparkContext
.入口點可以是一個庫(例如,JAR、egg、wheel)或一個筆記本。可以在具有複雜重試和警報機製的調度上運行Databricks作業。運行作業的主要接口是jobsAPI而且用戶界麵.
在您的帳戶中由Databricks管理的一組實例,但當它們空閑時不產生Databricks費用。在池中提交多個作業可以確保作業快速啟動。您可以為實例池設置護欄(實例類型、實例限製等)和自動伸縮策略。池相當於其他Spark平台上的自動伸縮集群。Beplay体育安卓版本
遷移步驟
本節提供將生產作業移動到Databricks的步驟。
步驟1:創建存儲池
創建自動伸縮池.這相當於在其他Spark平台上創建一個自動伸縮的集群。Beplay体育安卓版本在其他平台上,如果Beplay体育安卓版本自動伸縮集群中的實例空閑了幾分鍾或幾小時,則需要為此付費。Databricks為您免費管理實例池。也就是說,如果這些機器沒有被使用,你就不需要向Databricks付款;你隻向雲提供商付費。磚的指控隻有當作業在實例上運行時。
主要配置:
最小空閑:該池維護的未被作業使用的備用實例的數量。你可以把它設為0。
最大容量:可選字段。如果已經設置了雲提供程序實例限製,則可以將此字段保留為空。如果要設置額外的最大限製,請設置一個較高的值,以便大量作業可以共享池。
空閑實例自動終止:超過最小空閑時間的實例在指定時間段內空閑時,將被釋放回雲提供商。該值越高,準備好的實例就越多,因此作業啟動的速度就會更快。
步驟2:在池上運行作業
可以使用Jobs API或UI在池上運行作業。您必須通過提供集群規範來運行每個作業。當作業即將啟動時,Databricks會自動從池中創建一個新的集群。當作業完成時,集群將自動終止。您將根據作業的運行時間被收取確切的費用。這是在Databricks上運行作業的最經濟有效的方法。每個新的集群有:
一個相關的
SparkContext
,相當於其他Spark平台上的Spark應用。Beplay体育安卓版本一個驅動節點和指定數量的工作者。對於單個作業,可以指定工作者範圍。Databricks根據單個Spark作業所需的資源自動擴展該作業。磚基準證明這可以為您節省高達30%的雲成本,具體取決於您的工作性質。
在池中運行作業有三種方式:API/CLI,風流,UI。
/ CLI API
下載並配置磚CLI.
運行以下命令提交一次代碼。API返回一個URL,您可以使用該URL跟蹤作業運行的進度。
Databricks運行submit——json{“run_name”:“我的火花工作”,“new_cluster”:{“spark_version”:“7.3.x-scala2.12”,“instance_pool_id”:“0313 - 121005 - test123池——這樣的,“num_workers”:10},“庫”:[{“罐子”:“dbfs: / my-jar.jar”}],“timeout_seconds”:3600,“spark_jar_task”:{“main_class_name”:“com.databricks.ComputeModels”}}
要調度作業,請使用以下示例。通過該機製創建的作業顯示在工作列表頁麵.返回值是a
job_id
可以用來查看所有運行的狀態。磚工作創建——json{“名稱”:“夜間模式”培訓,“new_cluster”:{“spark_version”:“7.3.x-scala2.12”, ...“instance_pool_id”:“0313 - 121005 - test123池——這樣的,“num_workers”:10},“庫”:[{“罐子”:“dbfs: / my-jar.jar”}],“email_notifications”:{“on_start”:[“john@foo.com”],“on_success”:[“sally@foo.com”],“on_failure”:[“bob@foo.com”]},“timeout_seconds”:3600,“max_retries”:2,“安排”:{“quartz_cron_expression”:“0 15 22 ?”\ \ * *”,“timezone_id”:“美國/ Los_Angeles”},“spark_jar_task”:{“main_class_name”:“com.databricks.ComputeModels”}}
如果你使用spark-submit來提交Spark作業時,下表顯示了Spark -submit參數如何映射到創建新工作操作(帖子/ /創建工作
)。
spark-submit參數 |
它如何應用於Databricks |
---|---|
海爾集團 |
使用spark_jar_task結構提供主類名和參數。 |
罐子 |
使用 |
-py-files |
對於Python作業,請使用spark_python_task結構.您可以使用 |
主 |
在雲中,您不需要管理長時間運行的主節點。所有實例和作業都由Databricks服務管理。忽略此參數。 |
-deploy-mode |
在“數據庫”中忽略此參數。 |
相依 |
在new_cluster結構,可以使用 |
-num-executors |
在new_cluster結構,可以使用 |
-driver-memory, -driver-cores |
根據所需的驅動程序內存和內核,選擇適當的實例類型。 |
您將在池創建期間為驅動程序提供實例類型。提交作業時忽略此參數。 |
|
-executor-memory, -executor-cores |
根據需要的執行程序內存,選擇適當的實例類型。 |
您將在池創建期間為工作者提供實例類型。提交作業時忽略此參數。 |
|
-driver-class-path |
集 |
-driver-java-options |
集 |
文件 |
集 |
- name |
在提交作業運行請求( |
氣流
磚提供了一個氣流操作符如果你想使用氣流在數據庫中提交作業。Databricks風流操作符調用觸發一個新的作業運行操作(帖子/工作/運行
)向Databricks提交作業。看到使用Apache風流編排Databricks作業.
用戶界麵
Databricks提供了一個簡單、直觀、易於使用的UI來提交和調度作業。要從UI創建和提交作業,請遵循循序漸進的指導.
步驟3:排除故障
Databricks提供了許多工具來幫助您排除故障。
轉發日誌
您還可以將集群日誌轉發到您的雲存儲位置。要將日誌發送到所選的位置,請使用cluster_log_conf
參數new_cluster結構.
查看指標
作業正在運行時,您可以轉到集群頁麵,並在指標選項卡。Databricks還每15分鍾快照這些指標並存儲它們,因此即使在您的工作完成後也可以查看這些指標。要將指標發送到您的指標服務器,您可以在集群中安裝自定義代理。看到監視性能.
常見問題(faq)
我能在沒有泳池的情況下工作嗎?
是的。池是可選的。可以直接在新集群上運行作業。在這種情況下,Databricks通過向雲提供商請求所需的實例來創建集群。對於池,如果池中有可用的實例,則集群啟動時間將在30秒左右。
什麼是筆記本工作?
Databricks有不同的工作類型——jar、Python和筆記本。筆記本作業類型在指定的筆記本中運行代碼。看到自動可用性區域.
與JAR作業相比,什麼時候我應該使用筆記本作業?
JAR作業等價於火花提交作業。它執行JAR,然後您可以查看日誌和Spark UI以進行故障排除。筆記本作業執行指定的筆記本。你可以在筆記本中導入庫,也可以從筆記本中調用你的庫。使用筆記本工作的好處是主要
入口點是,您可以在筆記本輸出區輕鬆調試生產作業的中間結果。看到JAR的工作.
我能連接到我自己的蜂巢轉移體嗎?
是的,Databricks支持外部Hive metastores和Glue目錄。看到