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

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

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

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

非常好我支持^.^

(180) 97.3%

不好我反對(duì)

(5) 2.7%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?