大資料分析技術研究報告 三 1

2021-07-16 05:26:37 字數 3691 閱讀 9036

三大資料背景下資料統計分析技術介紹

隨資料量變大,和事務處理不同的是,單個統計分析涉及資料量會非常大,單個統計分析任務涉及資料會分散在多台伺服器上,且由於計算量大,採用單台伺服器進行計算,會導致計算時間非常長,單個統計分析任務必須採用平行計算方式來加快單個統計分析任務執行速度。

1並行查詢與平行計算技術介紹

在大資料背景下的資料統計分析技術門類很多,常見的有:

n  mpp並行資料庫 : teradata、greenplum、vertica等。

n  基於mapreduce平行計算框架的資料倉儲:

hive(hadoop平台) 、tenzing(google公司)

n  基於hbase的phoenix系統

n  hadoopdb系統

n  emc公司的hapt系統

n  mpp分布式查詢引擎: dremel、impala、presto、shard query、citusdb。

n  基於spark的shark、基於dryad的scope、基於tez的stinger。

n  基於hadoop+index的jethrodata系統

n  基於記憶體計算的druid系統

這些系統都解決了海量資料下的資料統計分析的問題,並且這些系統另外乙個共同特點是都提供了sql或者類sql介面。

為了能夠較好研究這些系統,我們需要對並行查詢與平行計算的相關技術做乙個簡要的介紹。

首先所有的系統都可以分為三個層次: 語義層、平行計算引擎層、分布式儲存層。語義層提供乙個程式設計介面讓使用者表達所需要計算,並負責把該計算翻譯成底層平行計算引擎可以執行的執行計畫,並由平行計算引擎來執行,最下面一層是分布式儲存層。

對於提供類sql介面平行計算系統,語義層可以認為是sql解析層。

1) 語義層

sql語言是一種聲名式語言,sql只是表達了要做什麼,而沒有表達怎麼做。為此,sql解析層主要作用是:將使用者提交的基於sql的統計分析請求,轉化為底層計算引擎層可以執行的執行計畫。也就是解決「怎麼做」的問題。

sql解析層工作主要包括兩個大方面:

(1) 通過語法分析技術來理解要做什麼。在關聯式資料庫中,一般會把sql語言分析後,形成樹型結構的執行計畫。

(2) 在語法分析技術上,利用各種優化技術和演算法,找出一種最經濟物理執行計畫。

優化可以分為兩個方面:一是邏輯層面優化、二是物理執行層面優化。

(1) 邏輯層優化

邏輯層面個人認為主要是因為同樣表達乙個分析請求,有的人sql寫的好,有的人sql寫的爛,因此在邏輯層面可以通過一些等價關係代數變換,實現查詢重寫,將寫的比較爛的sql變換為好的寫法。

比較典型優化是:「把投影和過濾下沉,先執行過濾和投影操作」,減少中間結果。

(2) 物理層優化

物理層面優化是在邏輯優化後,結合實際物理執行過程,找出最優的物理執行計畫。生成物理查詢計畫的工作包括:

ü  增加一些操作符: 包括掃瞄和排序等。

ü  確定各個操作符實現演算法。例如掃瞄是全表掃瞄還是利用索引;join是採用hash連線、索引連線、合併排序等實現演算法中的那一種。

ü  確定操作符之間的資料流轉方法:物化還是流水線方式。

ü  採用基於代價估算方法確定最優的物理執行計畫,目前代價估算主要是以估算該物理計畫需要的io量。另外對於並行資料庫,則還要考慮通訊代價,即儘量減少資料在各個機器之間的傳遞。

在物理層優化的代價估算過程中,代價估算需要依靠很多統計資訊,如表有多大,表中相關列的值分布是什麼樣子等。傳統資料庫在資料load過程中會事先計算好這些統計資訊。平行計算中還需要考慮通訊代價

需要指出是,由於imapla、presto、hive等系統只是乙個查詢引擎,它們可以直接查詢以普通檔案方式儲存在hdfs系統上的檔案,因此這些系統一般無法使用索引和各種統計資訊來進行物理執行計畫的優化,這些系統一般只能在邏輯層進行一些基於規則靜態優化。根據shark**,shark系統支援根據前面一些節點計算獲得的資訊,來動態優化後面執行計畫。

(3) 物化與流水線執行方法

一條sql語句對開發人員而言,感覺只是一次呼叫,但是實際上在資料庫內部,一條sql語句執行其實是有多個操作符組合而成的的樹型結構計算流。如下圖:

針對該計算流有兩種執行方式:一是基於物化或者是實體化執行方式,另外一種是基於資料流的執行方式。

第一種方法的過程是: 把各個操作運算排序,並把每個操作運算的輸出的中間結果儲存在磁碟上,直到被另外乙個操作運算所讀取。

另外一種方法是同時交錯進行多個運算,由乙個運算產生每個元組直接傳遞給下乙個運算,而不將中間結果儲存到磁碟,也不用等到前乙個運算全部運算完畢。

例如: 兩個表連線後,再進行投影操作。如果採用第一種方法,則需要

把兩表連線中間結果臨時寫入磁碟,然後再讀取該結果執行投影操作。而如果採用第二種方法,則連線操作一旦產生乙個元組就可以立刻送到投影操作去進行投影操作。

流水線方法可以極大避免大量的中間結果磁碟io。因此資料庫一般會採取流水線方法來執行。流水執行方法有兩種模式:一種是需求驅動流水線,也就是從上層主動向下層要求元組,另外一種是生產者驅動流水線執行方式,由低層主動產生元組,由下層向上層推。

目前大部分資料庫引擎採用的是需求驅動流水線,實現方式採用基於graefe提出的迭代器模型。該模型把每個操作都表達為由三個介面: open() ,  getnext(), close()。每個操作被呼叫open() 進行準備工作,然後通過反覆迭代被呼叫getnext來獲取下乙個元組,最後被呼叫close來進行清理工作。 通過構建迭代器網路,也就是迭代器之間的互相呼叫,就可以實現需求驅動流水線。

當然不是任何操作都可以流水執行,流水執行條件是:操作要滿足在接收輸入元組時可以輸出元組。例如排序操作就無法進行流水操作,在執行排序操作前都必須進行實體化。

(4) sql解析層與平行計算引擎層

由於不同平行計算引擎層的執行計畫表達不同,因此不同系統需要將sql解析成不同的形式物理執行計畫,例如:

mpp關聯式資料庫一般是把sql解析成樹狀結構的物理執行計畫。

hive、tezning資料庫是把sql解析成dag結構的多個mapreduce組合。

dremel等則類似mpp關聯式資料庫,把sql解析成乙個樹狀結構執行計畫。

微軟scope則需要把類sql解析成dag結構的dryad可執行的執行計畫。

shark則需要把sql解析成基於scala語言的dag結構執行計畫。

大資料分析技術與應用

cda資料分析研究院原創作品 一 大資料概念 大資料 big data 指無法在一定時間範圍內用常規軟體工具進行捕捉 管理和處理的資料集合,是需要新處理模式才能具有更強的決策力 洞察發現力和流程優化能力的海量 高增長率和多樣化的資訊資產。二 大資料的特點 1 volume 大量 截至目前,人類生產的...

大資料分析方法 定性研究還是定量研究

大資料分析方法 定性研究還是定量研究 大資料研究就是純學術方面的東西,對嗎?錯了!事實上,如果您企業雇用的大資料科學專家所持有的大資料專案理念與您打算在企業業務方面採用的戰略哲學不協調的話,您會讓自己陷入真正的麻煩。這可能聽起來多少有些誇張,然而,僅僅只有很少的企業的高管們在關注資料科學家們未來的研...

資料時代,大資料分析技術的介紹

近些年,由於以社交 基於位置的服務lbs等為代表的新型資訊產生方式的湧現,以及雲計算 移動和物聯網技術的迅猛發展,無處不在的移動 無線感測器等裝置無時不刻都在產生資料,數以億計使用者的網際網路服務時時刻刻都在產生著資料互動,大資料時代已經到來。在當下,大資料炙手可熱,不管是企業還是個人都在談論或者從...