您好,歡迎來電子發(fā)燒友網! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網>源碼下載>數(shù)值算法/人工智能>

大數(shù)據(jù)查詢性能比較

大小:0.9 MB 人氣: 2017-09-30 需要積分:1
? 一、實時數(shù)據(jù)查詢:
  我們看看小P在實時數(shù)據(jù)計算方面又有哪些卓越表現(xiàn)呢?
  由于 Presto 卓越的性能表現(xiàn),使得 Presto 可以彌補 Hive 無法滿足的實時計算空白,因此可以將 Presto 與 Hive 配合使用:對于海量數(shù)據(jù)的批處理和計算由 Hive 來完成;對于大量數(shù)據(jù)(單次計算掃描數(shù)據(jù)量級在 GB 到 TB)的計算由 Presto 完成。 Presto 能夠完成的實時計算實際上分為以下兩種情況。
  1. 快照數(shù)據(jù)實時計算
  在這種情況下,可以基于某個時間點的快照數(shù)據(jù)進行計算,但是要求計算過程快速完成( 200ms~20min)。
  2. 完全實時計算
  要完成完全實時計算,需要滿足以下兩個條件。
 ?。?1)使用的基準數(shù)據(jù)要實時更新,時刻保持與線上實際數(shù)據(jù)庫中的數(shù)據(jù)完全一致。
  ( 2)計算過程要能夠快速完成。
  在某公司的實際使用場景中, Presto 被用于下述兩種業(yè)務場景中。
  基于 T+1 數(shù)據(jù)的實時計算
  在這種業(yè)務場景中,用戶并不要求基準數(shù)據(jù)的實時更新,但是要求每次查詢數(shù)據(jù)都能夠快速響應。需要 Presto 和 Hive 配合使用來滿足實際的業(yè)務需求。每天凌晨通過azkaban 調度 Hive 腳本,根據(jù)前一天的數(shù)據(jù)計算生成中間結果表,生成完畢之后使用 Presto 查詢中間結果表,得出用戶最終所需要的數(shù)據(jù)。滿足該業(yè)務場景的解決方案如圖
  大數(shù)據(jù)查詢性能比較
  基于 RDBMS 的實時計算
  在這種業(yè)務場景中,用戶要求查詢的數(shù)據(jù)完全實時,即只要業(yè)務庫中的數(shù)據(jù)發(fā)生改變,通過 Presto 查詢的時候,就可以查詢到剛剛改變之后的數(shù)據(jù)。要達到這個效果,我們需要使用合理的機制保證數(shù)據(jù)實時同步,因此我們使用數(shù)據(jù)庫復制技術,為線上的業(yè)務數(shù)據(jù)庫建立實時同步的從庫,然后用 Presto 查詢數(shù)據(jù)庫中的數(shù)據(jù),進而進行計算(請注意:使用官方的 Presto 直接讀取數(shù)據(jù)庫的性能還太低,因此建議使用JD-Presto 中的 PDBO 從數(shù)據(jù)庫中讀取數(shù)據(jù)并進行計算)。滿足該業(yè)務場景的解決方案如圖
  大數(shù)據(jù)查詢性能比較
  二、Ad-Hoc 查詢
  Ad-hoc 查詢就是即席查詢,即席查詢允許用戶根據(jù)自己的需求隨時調整和選擇查詢條件,計算平臺或者系統(tǒng)能夠根據(jù)用戶的查詢條件返回查詢結果或者生成相應的報表。由此可見,即席查詢和普通應用查詢的最大不同是:普通的應用查詢是定制開發(fā)的,其查詢語句是固定或者限制在一定的變動范圍之內的;而即席查詢允許用戶隨意指定或者改變查詢語句或者查詢條件。由于普通的應用查詢都是定制開發(fā)的,其查詢語句幾乎是固定的,因此,在系統(tǒng)實施時就可以通過建立索引或者分區(qū)等技術來優(yōu)化這些查詢,從而提高查詢效率。但是即席查詢是用戶在使用時臨時產生的、系統(tǒng)無法預知的,因此也無法對這些查詢進行有針對性的優(yōu)化和改進。
  某公司使用 Presto 完成 Ad-Hoc 查詢,實際的 Ad-Hoc 使用場景包括以下兩種。
 ?。?1)使用 BI 工具進行報表展現(xiàn)
  BI 工具通過 ODBC 驅動連接至 Presto 集群, BI 工程師使用 BI 工具進行不同維度的報表設計和展現(xiàn)。由于目前 Facebook 提供的 ODBC 驅動是使用 D 語言開發(fā)的,而且功能尚不完善,因此采用 Treasure Data 提供的基于 Presto-gres 中的 ODBC 驅動改造之后的 ODBC 驅動連接到 Presto 集群。
 ?。?2)使用 Cli 客戶端進行數(shù)據(jù)分析
  Presto 使用 Hive 作為數(shù)據(jù)源,對 Hive 中的數(shù)據(jù)進行查詢和分析。眾所周知, Hive使用 Map-Reduce 框架進行計算,由于 Map-Reduce 的優(yōu)勢在于進行大數(shù)據(jù)量的批運算和提供強大的集群計算吞吐量,但是對稍小數(shù)據(jù)量的計算和分析會花費相當長的時間,因此在進行 GB~TB 級別數(shù)據(jù)量的計算和分析時, Hive 并不能滿足實時性要求。
  Presto 是專門針對基于 Ad-Hoc 的實時查詢和計算進行設計的, 其平均性能Hive的 10 倍,因此 Presto 更適合于稍小數(shù)據(jù)量的計算和差異性分析等 Ad-Hoc 查詢。
  三、實時數(shù)據(jù)流分析
  實時數(shù)據(jù)流分析主要是指通過 presto-kafka 使用 SQL 語句對 Kafka 中的數(shù)據(jù)流進行清洗、分析和計算。其在實際使用過程中有以下兩種使用場景。
 ?。?1)保留歷史數(shù)據(jù)
  在這種使用場景下, 由于 Presto 每次對 Kafka 中的數(shù)據(jù)進行分析時都需要從 Kafka 集群中將所有的數(shù)據(jù)都讀取出來, 然后在 Presto 集群的內存中進行過濾、分析等操作, 若在 Kafka中保留了大量的歷史數(shù)據(jù), 那么通過 presto-kafka 使用 SQL 語句對 Kafka 中的數(shù)據(jù)進行分析就會在數(shù)據(jù)傳輸上花費大量的時間,從而導致查詢效率的降低。因此我們應該避免在 Kafka中存儲大量的數(shù)據(jù),從而提高查詢性能。

非常好我支持^.^

(180) 97.3%

不好我反對

(5) 2.7%

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關規(guī)定!

      ?