中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

重磅!Netflix開源大數(shù)據(jù)發(fā)現(xiàn)服務(wù)框架Metacat

2018-06-16    來源:

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

喜聞樂見!Netflix 又貢獻(xiàn)了一個全新的開源項目!對于 Netflix 來說,開放開源是身為技術(shù)公司的競爭戰(zhàn)略。既能夠?qū)⒆约旱慕鉀Q方案建立為行業(yè)標(biāo)準(zhǔn)和最佳實踐,又能建立 Netflix 的技術(shù)品牌,還能從共享生態(tài)中獲得反饋輸入并受益。

而過去幾年,Netflix 已經(jīng)為開源社區(qū)貢獻(xiàn)了很多非常成功的開源項目。Netflix 微服務(wù)技術(shù)棧的核心組件基本上都是開源的,現(xiàn)在大家耳熟能詳?shù)?Zuul 網(wǎng)關(guān)、Eureka 服務(wù)發(fā)現(xiàn)注冊中心、Hystrix 熔斷限流、Archaius 配置等組件,Netflix 早在 2012 年左右就都開源出來了。今天,Netflix 又將其大數(shù)據(jù)發(fā)現(xiàn)服務(wù)框架 Metacat 開源了出來,旨在讓發(fā)現(xiàn)、處理和管理數(shù)據(jù)變得更為方便。Netflix 官網(wǎng)技術(shù)博客對 Metacat 進(jìn)行了詳細(xì)介紹,內(nèi)容編譯如下。

 

 

很多大公司都擁有大量的數(shù)據(jù)源,它們的數(shù)據(jù)格式不盡相同,而且體量巨大。在 Netflix,我們的數(shù)據(jù)倉庫由很多大型的數(shù)據(jù)集組成,這些數(shù)據(jù)存儲在 Amazon S3、Druid、Elasticsearch、Redshift、Snowflake 和 MySql 中。我們的平臺支持 Spark、Presto、Pig 和 Hive,我們用它們來消費(fèi)、處理和生成數(shù)據(jù)集。因為數(shù)據(jù)源的多樣性,為了確保我們的數(shù)據(jù)平臺能夠橫跨這些數(shù)據(jù)集成為一個“單一”的數(shù)據(jù)倉庫,我們開發(fā)了 Metacat。Metacat 是一種元數(shù)據(jù)服務(wù),方便我們發(fā)現(xiàn)、處理和管理數(shù)據(jù)。

 

 

目 標(biāo)

Netflix 大數(shù)據(jù)平臺的核心架構(gòu)涉及三項關(guān)鍵服務(wù):執(zhí)行服務(wù)(Genie)、元數(shù)據(jù)服務(wù)和事件服務(wù)。這些想法并非 Netflix 所獨(dú)有,在構(gòu)建一個能夠滿足現(xiàn)在及未來規(guī)模的數(shù)據(jù)基礎(chǔ)設(shè)施時,就需要這樣的架構(gòu)。

多年前,當(dāng)我們開始構(gòu)建這個平臺時,我們使用 Pig 作為 ETL 語言,Hive 作為專用查詢語言。由于 Pig 本身并不具備元數(shù)據(jù)系統(tǒng),因此對于我們來說,構(gòu)建一個可以在兩者之間進(jìn)行互操作的方案似乎是理想之選。

因此 Metacat 誕生了,這個系統(tǒng)充當(dāng)了所有數(shù)據(jù)存儲的元數(shù)據(jù)訪問層,也是各種計算引擎可以用來訪問不同數(shù)據(jù)集的集中式服務(wù)。Metacat 的三個主要目標(biāo)是:

元數(shù)據(jù)系統(tǒng)的聯(lián)合視圖

用于數(shù)據(jù)集元數(shù)據(jù)的統(tǒng)一 API

數(shù)據(jù)集的任意業(yè)務(wù)和用戶元數(shù)據(jù)存儲

其他擁有大量分布式數(shù)據(jù)集的公司也面臨著類似挑戰(zhàn)。Apache Atlas、Twitter 的數(shù)據(jù)抽象層和 Linkedin 的 WhereHows(Linkedin 的數(shù)據(jù)發(fā)現(xiàn)服務(wù))等等,都是為了解決類似問題而構(gòu)建的,只是他們都有各自的架構(gòu)選擇。

 

 

Metacat

Metacat 是一種聯(lián)合服務(wù),提供統(tǒng)一的 REST/Thrift 接口來訪問各種數(shù)據(jù)存儲的元數(shù)據(jù)。元數(shù)據(jù)存儲仍然是模式元數(shù)據(jù)的事實來源,所以 Metacat 沒有保存這部分元數(shù)據(jù)。Metacat 只保存業(yè)務(wù)相關(guān)和用戶定義的元數(shù)據(jù)。它還將所有關(guān)于數(shù)據(jù)集的信息發(fā)布到 Elasticsearch,以便進(jìn)行全文搜索和發(fā)現(xiàn)。

Metacat 的功能可以分為以下幾類:

數(shù)據(jù)抽象和互操作性

業(yè)務(wù)和用戶定義的元數(shù)據(jù)存儲

數(shù)據(jù)發(fā)現(xiàn)

數(shù)據(jù)變更審計和通知

Hive Metastore 優(yōu)化

 

 

數(shù)據(jù)抽象和互操作性

Netflix 使用多種查詢引擎(如 Pig、Spark、Presto 和 Hive)來處理和使用數(shù)據(jù)。通過引入通用的抽象層,不同的引擎可以交互訪問這些數(shù)據(jù)集。 例如:從 Hive 讀取數(shù)據(jù)的 Pig 腳本能夠從 Hive 列類型的表中讀取數(shù)據(jù),并轉(zhuǎn)成 Pig 類型。在將數(shù)據(jù)從一個數(shù)據(jù)存儲移動到另一個數(shù)據(jù)存儲時,Metacat 通過在目標(biāo)數(shù)據(jù)存儲中創(chuàng)建具有目標(biāo)類型的表來簡化這一過程。Metacat 提供了一組預(yù)定義的數(shù)據(jù)類型,可將這些類型映射到各個數(shù)據(jù)存儲中的數(shù)據(jù)類型。例如,我們的數(shù)據(jù)移動工具使用上述功能將數(shù)據(jù)從 Hive 移動到 Redshift 或 Snowflake。

Metacat 的 Thrift 服務(wù)支持 Hive 的 Thrift 接口,便于與 Spark 和 Presto 集成。我們因此能夠通過一個系統(tǒng)匯集所有的元數(shù)據(jù)變更,并發(fā)布有關(guān)這些變更的通知,實現(xiàn)基于數(shù)據(jù)驅(qū)動的 ETL。當(dāng)新數(shù)據(jù)到達(dá)時,Metacat 可以通知相關(guān)作業(yè)開始工作。

業(yè)務(wù)和用戶定義的元數(shù)據(jù)

Metacat 也會保存數(shù)據(jù)集的業(yè)務(wù)和用戶定義元數(shù)據(jù)。我們目前使用業(yè)務(wù)元數(shù)據(jù)來存儲連接信息(例如 RDS 數(shù)據(jù)源)、配置信息、度量指標(biāo)(Hive/S3 分區(qū)和表)以及數(shù)據(jù)表的 TTL(生存時間)等。顧名思義,用戶定義的元數(shù)據(jù)是一種自由格式的元數(shù)據(jù),可由用戶根據(jù)自己的用途進(jìn)行定義。

業(yè)務(wù)元數(shù)據(jù)也可以大致分為邏輯元數(shù)據(jù)和物理元數(shù)據(jù)。有關(guān)邏輯結(jié)構(gòu)(如表)的業(yè)務(wù)元數(shù)據(jù)被視為邏輯元數(shù)據(jù)。我們使用元數(shù)據(jù)進(jìn)行數(shù)據(jù)分類和標(biāo)準(zhǔn)化我們的 ETL 處理流程。數(shù)據(jù)表的所有者可在業(yè)務(wù)元數(shù)據(jù)中提供數(shù)據(jù)表的審計信息。他們還可以為列提供默認(rèn)值和驗證規(guī)則,在寫入數(shù)據(jù)時會用到這些。

存儲在表中或分區(qū)中的實際數(shù)據(jù)的元數(shù)據(jù)被視為物理元數(shù)據(jù)。我們的 ETL 處理在完成作業(yè)時會保存數(shù)據(jù)的度量標(biāo)準(zhǔn),在稍后用于驗證。相同的度量可用來分析數(shù)據(jù)的成本和空間。因為兩個表可以指向相同的位置(如 Hive),所以要能夠區(qū)分邏輯元數(shù)據(jù)與物理元數(shù)據(jù)。兩個表可以具有相同的物理元數(shù)據(jù),但應(yīng)該具有不同的邏輯元數(shù)據(jù)。

數(shù)據(jù)發(fā)現(xiàn)

作為數(shù)據(jù)的消費(fèi)者,我們應(yīng)該能夠輕松發(fā)現(xiàn)和瀏覽各種數(shù)據(jù)集。Metacat 將模式元數(shù)據(jù)和業(yè)務(wù)及用戶定義的元數(shù)據(jù)發(fā)布到 Elasticsearch,以便進(jìn)行全文搜索。我們的 Big Data Portal SQL 編輯器因此能夠?qū)崿F(xiàn) SQL 語句的自動建議和自動完成功能。將數(shù)據(jù)集組織為目錄有助于消費(fèi)者瀏覽信息,根據(jù)不同的主題使用標(biāo)簽對數(shù)據(jù)進(jìn)行分類。我們還使用標(biāo)簽來識別表格,進(jìn)行數(shù)據(jù)生命周期管理。

數(shù)據(jù)變更通知和審計作為數(shù)據(jù)存儲的中央網(wǎng)關(guān),Metacat 將捕獲所有元數(shù)據(jù)變更和數(shù)據(jù)更新。我們還圍繞數(shù)據(jù)表和分區(qū)變更開發(fā)了通知推送系統(tǒng)。目前,我們正在使用此機(jī)制將事件發(fā)布到我們自己的數(shù)據(jù)管道(Keystone),以更好地了解數(shù)據(jù)的使用情況和趨勢。我們也將事件發(fā)布到 Amazon SNS。我們正在將我們的數(shù)據(jù)平臺架構(gòu)發(fā)展為基于事件驅(qū)動的架構(gòu)。將事件發(fā)布到 SNS 可以讓我們數(shù)據(jù)平臺中的其他系統(tǒng)對這些元數(shù)據(jù)或數(shù)據(jù)變更做出“反應(yīng)”。例如,在刪除數(shù)據(jù)表時,我們的 S3 數(shù)據(jù)倉庫管理員服務(wù)可以訂閱這些事件,并適當(dāng)?shù)厍謇?S3 上的數(shù)據(jù)。

Hive Metastore 優(yōu)化

由 RDS 支持的 Hive Metastore 在高負(fù)載下表現(xiàn)不佳。我們已經(jīng)注意到,在使用元數(shù)據(jù)存儲 API 寫入和讀取分區(qū)方面存在很多問題。為此,我們不再使用這些 API。我們對 Hive 連接器(在讀寫分區(qū)時,該連接器直接與 RDS 通信)進(jìn)行了改進(jìn)。之前,添加數(shù)千個分區(qū)的 Hive Metastore 調(diào)用通常會超時,在重新實現(xiàn)后,這不再是個問題。

下一步

我們在構(gòu)建 Metacat 方面已經(jīng)走了很長的一段路,但還沒有完成我們的使命。以下是我們?nèi)孕枰υ鰪?qiáng)的一些特性。

模式和元數(shù)據(jù)的版本控制,用于提供數(shù)據(jù)表的歷史記錄。例如,跟蹤特定列的元數(shù)據(jù)變更,或查看表的大小隨時間變化的趨勢。能夠查看過去某個時刻元數(shù)據(jù)的信息對于審計、調(diào)試以及重新處理和回滾來說都非常有用。

為數(shù)據(jù) lineage 服務(wù)提供數(shù)據(jù)表的上下文信息。例如,在 Metacat 中匯總數(shù)據(jù)表訪問頻率等元數(shù)據(jù),并發(fā)布到數(shù)據(jù) lineage 服務(wù)中,用于對數(shù)據(jù)表的關(guān)鍵性程度進(jìn)行排序。

增加對 Elasticsearch 和 Kafka 等數(shù)據(jù)存儲的支持。

可插拔的元數(shù)據(jù)驗證。由于業(yè)務(wù)和用戶定義的元數(shù)據(jù)是自由形式的,為了保持元數(shù)據(jù)的完整性,我們需要對其進(jìn)行驗證。Metacat 應(yīng)該有一個可插拔的架構(gòu),可在存儲元數(shù)據(jù)之前執(zhí)行驗證策略。

相關(guān)鏈接

Metacat GitHub 地址:https://github.com/Netflix/metacat

原文鏈接:

https://medium.com/netflix-techblog/metacat-making-big-data-discoverable-and-meaningful-at-netflix-56fb36a53520

標(biāo)簽: https Mysql 大數(shù)據(jù) 大數(shù)據(jù)平臺 腳本 搜索 通信 選擇

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:像人一樣腦補(bǔ)世界!DeepMind歷時一年半搞出GQN,登上Science

下一篇:TIOBE 6 月編程語言榜:TypeScript 首次躋身前 100