成功從 Hadoop 遷移到 Lakehouse 架構的 5 個關鍵步驟

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從 Hadoop 遷移到基於雲的現代架構(比如 "},{"type":"link","attrs":{"href":"https:\/\/databricks.com\/blog\/2020\/01\/30\/what-is-a-data-lakehouse.html","title":"xxx","type":null},"content":[{"type":"text","text":"Lakehouse 架構"}]},{"type":"text","text":")的決定是業務決策,而非技術決策。我們在之前的文章中探討了每一個組織都必須"},{"type":"link","attrs":{"href":"https:\/\/databricks.com\/blog\/2021\/03\/25\/its-time-to-re-evaluate-your-relationship-with-hadoop.html","title":"xxx","type":null},"content":[{"type":"text","text":"重新評估他們與 Hadoop 的關係"}]},{"type":"text","text":"的原因。當來自技術、數據和業務的利害關係方決定將企業從 Hadoop 轉移出去之後,在開始真正的轉變之前,需要考慮"},{"type":"link","attrs":{"href":"https:\/\/databricks.com\/blog\/2021\/07\/22\/top-considerations-when-migrating-off-of-hadoop.html","title":"xxx","type":null},"content":[{"type":"text","text":"https:\/\/databricks.com\/blog\/2021\/07\/22\/top-considerations-when-migrating-off-of-hadoop.html"}]},{"type":"text","text":"。本文中,我們將特別關注實際的遷移過程本身。你將學習成功遷移的關鍵步驟,以及 Lakehouse 架構在激發下一輪數據驅動創新中所扮演的角色。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"遷移步驟"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"坦白的說吧,遷移從來不是一件簡單的事情。不過,可以對遷移進行結構化,從而最大限度地減少不利影響,確保業務連續性,並有效地管理成本。爲此,我們建議將你從 Hadoop 的遷移分解成以下五個關鍵步驟:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"管理"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據遷移"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據處理"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"安全及管治"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"SQL 和 BI 層"}]}]}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"第一步:管理"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"讓我們從管理的角度回顧一下 Hadoop 中的一些基本概念,以及它們與 Databricks 的對比。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/f1\/87\/f1d1a2a4e42cf409255798149b28df87.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Hadoop 本質上是一個單體分佈式存儲和計算平臺。它由多個節點和服務器組成,每個節點都有自己的存儲、CPU 和內存。任務被分配到所有這些節點。通過 YARN 來實現資源管理,它力圖確保工作負載能夠獲得其計算份額。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Hadoop 也包括元數據信息。有一個 Hive 元存儲,它包含了存儲在 HDFS 中的資產的結構化信息。你可以使用 Sentry 或 Ranger 來控制對數據的訪問。從數據訪問的角度來看,用戶和應用程序可以直接通過 HDFS(或相應的 CLI\/API)或通過 SQL 類型的接口訪問數據。另外,SQL 接口可以通過 JDBC\/ODBC 連接,使用 Hive 來執行通用 SQL(或在某些情況下使用 ETL 腳本),或者在 Impala 或 Tez 上使用 Hive 進行交互式查詢。Hadoop 還提供了一個 HBase API 和相關的數據源服務。有關 Hadoop 生態系統的更多信息,請點擊"},{"type":"link","attrs":{"href":"https:\/\/databricks.com\/glossary\/hadoop-ecosystem","title":"xxx","type":null},"content":[{"type":"text","text":"這裏"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,我們來討論如何在 "},{"type":"link","attrs":{"href":"https:\/\/databricks.com\/product\/data-lakehouse","title":"xxx","type":null},"content":[{"type":"text","text":"Databricks Lakehouse"}]},{"type":"text","text":" 平臺中映射或處理這些服務。在 Databricks 中,首先要注意的一個區別是,你在 Databricks 環境中看到的是多個集羣。每個集羣可以用於特定的用例、特定的項目、業務部門、團隊或開發小組。更重要的是,這些集羣都是短暫的。對於作業集羣來說,集羣的存在時間可以在工作流程的持續期間保持。這將執行工作流程,並且在完成後,環境將自動拆毀。同樣,如果你考慮一個交互式用例,即你有一個可供開發者共享的計算環境,這樣的環境可以在工作日開始,並且開發者全天運行他們的代碼。在非活動期間,Databricks 會通過平臺內置的(可配置的)自動終止功能自動關閉它。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不同於 Hadoop,Databricks 並不提供諸如 HBase 或 SOLR 那樣的數據存儲服務。你的數據駐留在對象存儲中的文件存儲。許多類似 HBase 或 SOLR 這樣的服務都可以在雲中找到與之相當的替代品。這可以是雲原生或 ISV 解決方案。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/dc\/3f\/dcyybc74fc60023f87b608964c50df3f.jpg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從上圖可以看出,Databricks 中的每個集羣節點都對應於 Spark 驅動或工作器。關鍵在於,不同的 Databricks 集羣彼此完全隔離,這樣,你就可以確保在特定的項目和用例中符合嚴格的 SLA。你可以將流媒體或實時用例與其他以批處理爲導向的工作負載隔離,並且你不必擔心手工隔離可能會佔用集羣資源的長期運行作業。你只需要爲不同的用例派生新的集羣作爲計算。Databricks 還將存儲與計算解耦,使你能夠利用現有的雲存儲,如 AWS S3、Azure Blob Storage 和 Azure Data Lake Store(ADLS)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Databricks 也有一個默認的管理型 Hive 元存儲,用於存儲駐留在雲存儲中的數據資產的結構化信息。同時,它也支持外部元存儲,比如 AWS Glue、Azure SQL Server 或 Azure Purview。你還可以在 Databricks 內指定安全控制,如表 ACL,以及對象存儲權限。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當涉及到數據訪問時,Databricks 提供了類似於 Hadoop 的功能,它可以處理用戶如何處理數據。你可以通過 Databricks 環境中多種路徑訪問存儲在雲存儲的數據。使用 SQL Endpoints 和 Databricks SQL,用戶可以進行交互式查詢和分析。他們也可以使用 Databricks 筆記本對存儲在雲存儲中的數據進行數據工程和機器學習功能。Hadoop 中的 HBase 映射到 Azure CosmosDB,或 AWS DynamoDB\/Keyspaces,可以作爲下游應用的服務層加以利用。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"第二步:數據遷移"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在 Hadoop 的背景下,我認爲大部分讀者已經對 "},{"type":"link","attrs":{"href":"https:\/\/databricks.com\/glossary\/hadoop-ecosystem","title":"xxx","type":null},"content":[{"type":"text","text":"HDFS"}]},{"type":"text","text":" 很熟悉。HDFS 是存儲文件系統,用於 Hadoop 部署,它利用了 Hadoop 集羣節點上的磁盤。所以,當你擴展 HDFS 時,你需要增加整個集羣的容量(也就是說,你需要同時擴展計算和存儲)。若要購買和安裝額外的軟件,可能要花費很多時間和精力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在雲中,你擁有幾乎無限的存儲容量,比如 AWS S3、Azure 數據湖存儲或 Blob 存儲或谷歌存儲等形式的雲存儲。無需維護或健康檢查,從部署開始,它就提供了內置的冗餘和高水平的持久性和可用性。我們建議使用原生雲服務來遷移你的數據,爲了方便遷移,有幾個合作伙伴\/ISVs。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"那麼,你該如何開始呢?最常見的推薦路線是從雙攝取策略開始(也就是,在你的內部環境之外,添加一個源來上傳數據到雲存儲)。這樣你就可以在不影響你現有設置的情況下開始使用雲中的新用例(利用新數據)。如果你在組織中尋求其他團隊的支持,你可以將其作爲一項備份策略。因爲 HDFS 的龐大規模和相關的工作,傳統上對備份提出了挑戰,所以把數據備份到雲端是一種有效的舉措。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在大多數情況下,你可以利用現有的數據交付工具來複刻(fork)Feed,不僅寫到 Hadoop,也寫到雲存儲。舉例來說,如果你正在使用 Informatica 和 Talend 這樣的工具\/框架處理數據並向 Hadoop 寫入數據,那麼可以輕鬆地添加一些附加步驟,以便將數據寫入雲存儲。一旦數據在雲中,就有許多辦法來處理數據。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"就數據方向而言,數據要麼從內部拉取到雲端,要麼從內部推送到雲端。可用於將數據推送到雲端的工具有云原生解決方案(Azure Data Box、AWS Snow Family 等)、DistCP(一種 Hadoop 工具)、其他第三方工具以及任何內部框架。推送選項通常更容易得到安全團隊的必要批准。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於將數據拉取到雲端,你可以使用 Spark\/Kafka Streaming 或 Batch 從雲端觸發攝取管道。對於批處理,你可以直接攝取文件,或者通過 JDBC 連接器連接到相關的上游技術平臺,並提取數據。當然,還有一些第三方工具可以實現這一目的。在這兩個選項中,推送選項是一個被廣泛接受和理解的選擇,因此,讓我們來深入研究一下拉取方法。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你首先要做的是在你的企業內部環境與雲端之間建立連接。可通過互聯網連接和網關來實現。你還可以使用 AWS Direct Connect、Azure ExpressRoute 等專用連接選項。有些情況下,如果你的組織對雲計算並不陌生,那麼這些設置已經就緒,因此你可以爲你的 Hadoop 遷移項目重新使用它。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"要考慮的另一個問題是 Hadoop 環境中的安全性。若爲 Kerberized 環境,則可以從 Databricks 方面進行調整。你可以配置 Databricks 初始化腳本在集羣啓動時運行,安裝並配置必要的 kerberos 客戶端,訪問存儲在雲存儲位置的 krb5.conf 和 keytab 文件,並最終執行 kinit() 函數,從而允許 Databricks 集羣與你的 Hadoop 環境直接交互。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後,你還需要一個外部共享的元存儲。儘管 Databricks 的確有一個默認部署的元存儲服務,但是它也支持一個外部的。Hadoop 和 Databricks 將共享外部元存儲,並可以部署到企業內(在 Hadoop 環境中)或雲中。舉例來說,如果你在 Hadoop 中運行已有 ETL 流程,但你無法將它們遷移到 Databricks,則可以利用此設置和現有的企業內部元存儲,讓 Databricks 使用 Hadoop 的最終規劃數據集。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"第三步:數據處理"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先要記住的是,從數據處理的角度來看,Databricks 的一切都在利用 Apache Spark。所有的 Hadoop 編程語言,如 MapReduce、Pig、Hive QL 和 Java,都可以轉換爲在 Spark 上運行,無論是通過 Pyspark、Scala、Spark SQL 甚至 R。在代碼和 IDE 方面,Apache Zeppelin 和 Jupyter 筆記本都可以轉換爲 Databricks 筆記本,但是導入 Jupyter 筆記本要簡單一些。導入之前,Zeppelin 筆記本需要轉換爲 Jupyter 或 Ipython。如果你的數據科學團隊希望繼續使用 Zeppelin 或 Jupyter 進行編碼,則可以使用 Databricks Connect,這樣你能夠在 Databricks 上運行本地 IDE(Jupyter、Zeppelin 甚至 IntelliJ、VScode、RStudio 等)來運行代碼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當涉及到遷移 Apache Spark™ 作業時,需要考慮的主要問題是 Spark 版本。你的內部 Hadoop 集羣可能運行的是較老版本的 Spark,你可以使用 "},{"type":"link","attrs":{"href":"https:\/\/spark.apache.org\/docs\/latest\/sql-migration-guide.html#upgrading-from-spark-sql-24-to-30","title":"xxx","type":null},"content":[{"type":"text","text":"Spark 遷移指南"}]},{"type":"text","text":"確定所做的更改,以查看對代碼的影響。要考慮的另一個方面是將 RDD 轉換爲數據框(DataFrame)。RDD 通常用於 Spark 的 2.x 版本,儘管它們仍可用於 Spark 3.x,但是這樣做會妨礙你充分利用 Spark 優化器的功能。我們建議你將 RDD 轉換爲數據框。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後但並非最不重要的是,在遷移過程中,我們和客戶一起遇到的一個常見問題就是本地 Hadoop 環境的硬編碼引用。當然,這些都需要更新,否則代碼將在新的設置中出現中斷。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來,讓我們看看轉換非 Spark 工作負載的問題,在大多數情況下,這涉及重寫代碼。對 MapReduce 來說,在某些情況下,如果你以 Java 庫的形式使用共享邏輯,那麼這些代碼就可以被 Spark 利用。然而,你可能仍然需要重寫代碼的某些部分,以便在 Spark 環境中運行,而不是 MapReduce。Sqoop 的遷移相對容易一些,因爲在新的環境中,你使用 JDBC 源運行一組 Spark 命令(相對於 MapReduce 命令)。如同在 Sqoop 中指定參數一樣,你可以在 Spark 代碼中指定參數。在 Flume 中,我們看到的大部分用例都是圍繞着從 Kafka 消耗數據並寫入 HDFS。使用 Spark 流媒體可以很容易地完成這個任務。在 Spark 中遷移 Flume 的主要任務是將一個基於配置文件的方法轉換成 Spark 中更多的程序化方法。最後,我們有 Nifi,它主要用於 Hadoop 之外,主要用作拖放、自我服務的攝取工具。Nifi 也可以用於雲,但是我們看到很多客戶正在利用遷移到雲中的機會,用雲中的其他較新的工具取代 Nifi。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"遷移 HiveQL 可能是最簡單的任務。Hive 和 Spark SQL 之間具有高度兼容性,並且大多數查詢都可以在 Spark SQL 上正常運行。在 HiveQL 和 Spark SQL 之間,DDL 有一些微小的變化,例如 Spark SQL 使用 “"},{"type":"codeinline","content":[{"type":"text","text":"USING"}]},{"type":"text","text":"”子句,HiveQL 使用 “"},{"type":"codeinline","content":[{"type":"text","text":"FORMAT"}]},{"type":"text","text":"” 子句。我們建議對代碼進行修改,使其使用 Spark SQL 格式,因爲它允許優化器爲你的代碼在 Databricks 中準備最佳的執行計劃。你仍可以利用 Hive Serdes 和 UDF 的優勢,使你在將 HiveQL 遷移到 Databricks 時更加容易。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於工作流編排,你必須考慮可能改變提交作業的方式。你可以繼續利用 Spark 提交語義,但是還有其他更快、更無縫集成的選擇。你可以使用 Databricks 作業和 Delta Live Tables 進行無代碼 ETL,以取代 Oozie 作業,並在 Databricks 內定義端到端的數據管道。爲了實現自動化\/調度,對於涉及外部處理依賴的工作流,你必須在 Apache Airflow、Azure Data Factory 等技術中創建相應的工作流\/管道。利用 Databricks 的 REST API,可以使用 Databricks 集成並配置所有的調度平臺。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"還有一種叫做 MLens 的自動化工具(由 KnowledgeLens 創建),它可以幫助你將工作負載從 Hadoop 遷移到 Databricks。MLens 可以幫助遷移 PySpark 代碼和 HiveQL,包括把一些 Hive 細節轉換成 Spark SQL,這樣你就可以充分利用 Spark SQL 優化器的功能和性能優勢。它們還計劃很快支持 Oozie 工作流向 Airflow、Azure Data Factory 等等的遷移。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"第四步:安全及管治"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"讓我們來看看安全和管治。在 Hadoop 世界中,我們有用來連接到諸如 Ambari 或 Cloudera Manager 這樣的管理控制檯的 LDAP 集成,甚至 Impala 或 Solr。Hadoop 還擁有 Kerberos 認證其他服務。在授權方面,Ranger 和 Sentry 是使用最多的工具。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有了 Databricks,單一登錄(Single Sign On,SSO)可以集成到任何支持 SAML 2.0 的身份提供器。其中包括 Azure Active Directory、Google Workspace SSO、AWS SSO 和 Microsoft Active Directory。爲了進行授權,Databricks 向 Databricks 對象提供 ACL(訪問控制列表),允許你設置筆記本、作業、集羣等實體的權限。有了數據權限和訪問控制,你可以定義表的 ACL 和視圖,以限制列和行的訪問,並利用類似的憑據傳遞等方式,Databricks 將你的工作空間登錄憑據傳遞到存儲層(S3、ADLS、Blob 存儲),以確定你是否獲得訪問數據的授權。如果你需要基於屬性的控制或數據屏蔽等功能,你可以利用 Immuta 和 Privacera 等合作伙伴工具。從企業管治的角度來看,你可以將 Databricks 連接到企業數據目錄,如 AWS Glue、Informatica Data Catalog、Alation 和 Collibra。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"第五步:SQL 和 BI 層"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在 Hadoop 中,正如前面所討論的,你有 Hive 和 Impala 作爲接口來執行 ETL 以及特別的查詢和分析。在 Databricks 中,你通過 "},{"type":"link","attrs":{"href":"https:\/\/databricks.com\/product\/databricks-sql","title":"xxx","type":null},"content":[{"type":"text","text":"Databricks SQL"}]},{"type":"text","text":" 實現類似的功能。Databricks SQL 還通過 Delta 引擎提供了極高的性能,並支持自動擴展集羣的高併發使用案例。Delta 引擎也包括了 Photon,這是一種用 C++ 重構的新的 MPP 引擎,並向量化以利用數據級和指令級並行性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Databricks 提供了與 Tableau、PowerBI、Qlik 和 looker 等 BI 工具的原生集成,以及高度優化的 JDBC\/ODBC 連接器,這些工具可以使用。新型 JDBC\/ODBC 驅動程序的開銷非常小(¼秒),使用 Apache Arrow 的傳輸率提高了 50%,以及一些元數據操作,可以顯著加快元數據的檢索操作。Databricks 也支持 PowerBI 的 SSO,對其他 BI\/儀表盤工具的 SSO 支持也即將推出。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Databricks 除了上述的筆記本體驗外,還具有內置的 SQL 用戶體驗,爲 SQL 用戶提供了 SQL 工作臺的鏡頭,還提供了輕量指示板和警報功能。這樣就可以對數據湖內的數據進行基於 SQL 的數據轉換和探索性分析,而無需將其轉移到下游的數據倉庫或其他平臺。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"下一步"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在考慮遷移到像 Lakehouse 架構這樣的現代雲架構時,需要記住以下兩件事:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"記住要把關鍵的合作伙伴帶到這一過程中來。這既是一個技術決策,也是一個業務決策,你需要你的合作伙伴接受這一過程及其最終狀態。另外,請記住,並非只有你一個人,Databricks 和我們的合作伙伴都擁有熟練的資源,他們在構建可重複的最佳實踐方面已經做了足夠多的工作,節省了企業的時間、金錢資源,並且減少了總體壓力。在開始遷移之前,下載 Hadoop 到 "},{"type":"link","attrs":{"href":"https:\/\/databricks.com\/p\/ebook\/migration-guide-hadoop-to-databricks","title":"xxx","type":null},"content":[{"type":"text","text":"Databricks 技術遷移指南"}]},{"type":"text","text":"("},{"type":"text","marks":[{"type":"italic"}],"text":"Hadoop to Databricks Technical Migration guide"},{"type":"text","text":"),以獲得逐步指導、筆記本和代碼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"原文鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"https:\/\/databricks.com\/blog\/2021\/08\/06\/5-key-steps-to-successfully-migrate-from-hadoop-to-the-lakehouse-architecture.html"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"關聯閱讀:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/8kwsm0cauvyw1ezeo7gt","title":"xxx","type":null},"content":[{"type":"text","text":"Hadoop 怎麼了,大數據路在何方"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/news\/KLPbXblbdSAwUqlG3GhA","title":"xxx","type":null},"content":[{"type":"text","text":"十年 Hadoop 退居幕後,數據雲橫空出世"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/pb09krdg9azagqh4ls4x","title":"xxx","type":null},"content":[{"type":"text","text":"現在是採用湖倉一體的好時機嗎?"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章