<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Presto 實(shí)踐 | Prestissimo:使 Presto 性能提升三倍

          共 2741字,需瀏覽 6分鐘

           ·

          2021-12-27 17:05

          本文資料來(lái)自2021年12月09日舉辦的?PrestoCon?2021,議題為《Updates from the New PrestoDB C++ Execution Engine》,分享者為來(lái)自?Ahana 的?Deepak Majeti 以及來(lái)自 Intel 的 Dave Cohen, Intel。


          本次分享的 PPT 請(qǐng)關(guān)注?過(guò)往記憶大數(shù)據(jù)?公眾號(hào),并回復(fù)?10108?獲取。

          這篇分享將給大家概述代號(hào)為 Prestissimo 項(xiàng)目的相關(guān)最新進(jìn)展。Prestissimo 是新的 PrestoDB C++ 執(zhí)行引擎,其使用 Velox 庫(kù)使其能夠以良好的性能運(yùn)行 TPC-H 基準(zhǔn)測(cè)試。這項(xiàng)工作是 Prestissimo 和 Velox 的幾個(gè) PrestoDB 基金會(huì)成員公司之間的合作,包括 Ahana、字節(jié)跳動(dòng)、Facebook 和英特爾等。在本次演講中,我們將從高層概述 Velox 數(shù)據(jù)平臺(tái)庫(kù)(Velox Data Platform library)、Prestissimo c++ Worker、基于 java 的 PrestoDB Coordinator 如何與 Prestissimo 交互,以及如何使該框架在 TPC-H 基準(zhǔn)測(cè)試中執(zhí)行查詢(xún)。本次演講將特別關(guān)注 PrestoDB/Prestissimo 處理這些查詢(xún),其中數(shù)據(jù)集位于 ORC 或 Parquet 格式的 S3 兼容對(duì)象存儲(chǔ)中。

          本次分享主要包括以下幾個(gè)部分:

          ?Prestissimo 和 Velox 回顧;?? ?Velox支持的函數(shù);?Parquet 和 S3 支持?TPC-H 查詢(xún)?開(kāi)源協(xié)作?未來(lái)路線(xiàn)

          Prestissimo 和 Velox 回顧

          Velox 是用于向量化執(zhí)行的開(kāi)源最先進(jìn)的項(xiàng)目:

          ?在交互式、批處理、流處理、人工智能等方面具有一致的語(yǔ)義;?最大化利用硬件資源;?使用 C++ 編寫(xiě)以便實(shí)現(xiàn)最高效率

          為高性能進(jìn)行相關(guān)的優(yōu)化:

          ?使用字典編碼(Dictionary encoding)來(lái)實(shí)現(xiàn)零拷貝執(zhí)行?自定義字符串、數(shù)組和 Map 編碼,允許完全向量化的條件表達(dá)式計(jì)算,而不需要額外的數(shù)據(jù)復(fù)制?自適應(yīng)地使用基于數(shù)組的聚合和 normalized keys?用于低延遲的層次化語(yǔ)義感知緩存(Hierarchical semantic-aware cache )?Aria 風(fēng)格的過(guò)濾下推到 TableScan

          從上圖可以看出,Prestissimo 其實(shí)是 Presto on Velox 的代號(hào)。Prestissimo?使用 Presto 的 Coordinator 進(jìn)行 SQL 解析、優(yōu)化以及管理分布式的執(zhí)行。SQL 的執(zhí)行是發(fā)送到 Velox 中執(zhí)行的,其是使用 C++ 實(shí)現(xiàn)的。

          Velox?支持的函數(shù)

          上圖是 Presto 支持的函數(shù)種類(lèi)。

          ?而 Velox?支持的標(biāo)量(Scalar)和聚合函數(shù)如上所示(綠色代表支持),可以看見(jiàn)大部分常見(jiàn)的 Presto 函數(shù)?Velox 都支持。

          上面是?Velox?中實(shí)現(xiàn)標(biāo)量函數(shù)的方法??梢?jiàn),一個(gè)簡(jiǎn)單的函數(shù)是包裝在 VELOX_UDF_BEGIN 和 VELOX_UDF_END 宏之間。

          關(guān)于這部分大家可以參見(jiàn) Velox 的官方文檔:https://facebookincubator.github.io/velox/develop/scalar-functions.html

          Parquet 和 S3 支持

          Velox 中對(duì) Parquet 的支持是由 Intel 工程師貢獻(xiàn)的;當(dāng)前的實(shí)現(xiàn)是包裝了 DuckDB 的 Parquet Reader(https://github.com/duckdb/duckdb)

          ?在 Velox 中,DuckDB 被用作嵌入式的類(lèi)庫(kù),在測(cè)試中用作驗(yàn)證的內(nèi)存中參考數(shù)據(jù)庫(kù)。?支持部分過(guò)濾下推

          DuckDB 的內(nèi)存格式和 Velox 很類(lèi)似,對(duì)大多數(shù)類(lèi)型都是零拷貝。

          當(dāng)然,目前 Velox 的 Parquet Reader 是可插拔的。

          Velox 中對(duì)?S3 的支持是由 Ahana 工程師貢獻(xiàn)的;擴(kuò)展了 Velox 的 FileSystem API。也是可插拔的;依賴(lài) AWS C++ SDK;使用 Minio 覆蓋CI。

          下面我們來(lái)看下 Prestissimo 中是如何加載 S3 中的 Parquet 文件的:

          ?Prestissimo 實(shí)現(xiàn)了 Presto Worker REST API;?Control Plane 接受來(lái)自 coordinator 的查詢(xún)片段(query fragment) Post 請(qǐng)求?查詢(xún)片段(query fragment)接著被編譯成 plan;?plan 被映射到 Velox library;?在執(zhí)行中 Velox library 涉及的組件如下:?Tasks, Drivers?TableScan 使用 Connector 抽象;?HiveConnector 接口使用 S3 文件句柄和 Parquet reader 實(shí)例設(shè)置 reader

          TPCH 查詢(xún)

          當(dāng) Velox 初次開(kāi)源時(shí),只支持一個(gè) TPCH 查詢(xún);來(lái)自 Meta、Ahana 和字節(jié)跳動(dòng)的工程師添加了許多功能,使得 Velox 支持22條 TPCH 查詢(xún)中的19條:

          ?支持 Date 類(lèi)型;?支持 left outer join;?部分支持相關(guān)子查詢(xún);?剩下的3個(gè)查詢(xún)需要對(duì)相關(guān)子查詢(xún)提供更多的支持

          開(kāi)源協(xié)作


          ?來(lái)自開(kāi)源社區(qū)的貢獻(xiàn)極大地改進(jìn)了 Prestissimo 和 Velox

          ?當(dāng)前 Velox 社區(qū)是非?;钴S的,提交的 PR 會(huì)被迅速的 reviewed 并解決的;?文檔是最新的,對(duì)初學(xué)者非常有幫助;?社區(qū)每月出版一份 news-letter(如下圖)?Velox Slack 通道支持異步通信和協(xié)作


          ?

          未來(lái)路線(xiàn)

          ?在 Presto 集群中啟用 Prestissimo;?繼續(xù)為功能和性能添加更多的特性;?通過(guò)運(yùn)行各種工作負(fù)載來(lái)強(qiáng)化 Velox 庫(kù)?添加針對(duì)云存儲(chǔ)和對(duì)象存儲(chǔ)的 I/O 優(yōu)化?支持所有的 TPC-DS 。

          相關(guān)資源:

          ?https://github.com/facebookincubator/velox?https://facebookincubator.github.io/velox/?https://velox-oss.slack.com/

          瀏覽 170
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色成人视频网站免费看 | 99色免费视频 | 国产蜜臀AV | www国产极品 | 中國操逼網站 |