大數據技術5:OLAP引擎對比分析

前言:數據倉庫建設,初級的理解就是建表,將業務數據、日志數據、消息隊列數據等,通過各種調度任務寫入到表里供OLAP引擎使用。但要想建好數倉也是一個復雜、龐大的工程,比如要考慮:數據清洗、數據建模(星型模型、雪花模型、寬表模型、主題、維度、指標)、數據時效性(實時、T+1)、延遲容錯、機器資源等。


1、OLTP和OLAP區別

  • OLAP(On-Line Analytical Processing)聯機分析處理,也稱為面向交易的處理過程,其基本特征是前臺接收的用戶數據可以立即傳送到計算中心進行處理,并在很短的時間內給出處理結果,是對用戶操作快速響應的方式之一。應用在數據倉庫,使用對象是決策者。OLAP系統強調的是數據分析,響應速度要求沒那么高。目前市面上主流的開源OLAP引擎包含不限于:Hive、ClickHouse、StarRocks、Presto、Kylin、Impala、Sparksql、Druid等

  • ?OLTP(On-Line Transaction Processing)聯機事務處理,它使分析人員能夠迅速、一致、交互地從各個方面觀察信息,以達到深入理解數據的目的。它具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多維信息的快速分析的特征。主要應用是傳統關系型數據庫。OLTP系統強調的是內存效率,實時性比較高。Oracle、Redis、NySQL.


2、OLAP查詢類型劃分

  • 即席查詢:?通過手寫sql完成一些臨時的數據分析需求,這類sql形式多變、邏輯復雜,對查詢時間沒有嚴格要求

  • 固化查詢:指的是一些固化下來的取數、看數需求,通過數據產品的形式提供給用戶,從而提高數據分析和運營的效率。這類的sql固定模式,對響應時間有較高要求。


3、按照架構劃分的主流OLAP引擎:

  • MPP架構系統(Presto/Impala/SparkSQL/Drill等)。這種架構主要還是從查詢引擎入手,使用分布式查詢引擎,而不是使用hive+mapreduce架構,提高查詢效率。

  • MapReduce:MapReduce是一種編程模型和分布式計算框架,用于處理大規模數據集。它由兩個主要階段組成:Map階段和Reduce階段。在Map階段,數據被分割成多個小塊,每個小塊由獨立的計算節點進行處理,并生成中間結果。在Reduce階段,中間結果被合并和聚合,生成最終的結果。MapReduce適用于批量處理大規模數據,如日志分析、離線數據處理等。

  • 預計算系統(Druid/Kylin等)則在入庫時對數據進行預聚合,進一步犧牲靈活性換取性能,以實現對超大數據集的秒級響應。

  • 搜索引擎架構的系統(es,solr等),在入庫時將數據轉換為倒排索引,采用Scatter-Gather計算模型,犧牲了靈活性換取很好的性能,在搜索類查詢上能做到亞秒級響應。但是對于掃描聚合為主的查詢,隨著處理數據量的增加,響應時間也會退化到分鐘級。

3.1、MapReduce

SparkSql, odps工作臺就是典型的代表通過task schedule創建各類task,執行MR去處理數據,整合成需要展示的形態,。其特點就是能針對海量數據做處理,但是最大的問題就是慢。

慢的原因主要有兩點 1. 任務的資源創建。 2.MR過程中中間結果在shuffle階段的傳輸和存儲非常耗時。

MR的適用場景是百億級海量數據,對RT要求不敏感,分鐘級以上的業務場景。

3.2、MPP[massive parallel processor]

MPP 是一種很常見的架構方式, 旨在利用了整個集群的計算能力。主要是架構形式是Master/Slave,把一次查詢的計算和數據獲取分布到各臺slave上。

這里為了方便大家理解,舉個很常見的例子來說明,如果按照對用戶id分庫分表的mysql集群來說,每次你查詢的條件都是諸如age > 5這樣的,每個分庫遍歷之后,由proxy聚合給到client,這樣的形式也可以叫MPP架構。

整體MPP因為是SQL的查詢方式,速度還是會比MR快上不少的。MPP的典型代表是GP, Impala, ES。

3.3、預聚合體系

預聚合體系非常像聚合計算統計,提前知道維度,然后預先根據維度去批量計算結果預存好數據,獲得毫秒級的查詢速度。

典型的代表是預定義cube的kylin 和 druid。 kylin的概念更好理解些,用的技術都是hadoop體系非常容易理解, 是通過hadoop小批量計算后把數據存在hbase里。

而druid的功能更豐富些,能接收消息隊列數據,實時性更好些。

預聚合體系的場景是優點是毫秒級的數據RT,QPS比較高。缺點是不能不夠動態,增添維度比較難,不能進行join。


4、MPP、Map Reduce、MPPDB區別

MPP (Massively Parallel Processing)、MapReduce 和 MPPDB(Massively Parallel Processing Database)是三個不同的概念和技術,三者定義如下:

  • MPP(Massively Parallel Processing):MPP是一種并行計算架構,用于處理大規模數據。MPP系統將數據分割成多個分片,每個分片由獨立的計算節點處理。每個節點負責處理自己的數據分片,然后將結果合并。這種并行計算架構可以提高數據處理的速度和效率。

  • MapReduce:MapReduce是一種編程模型和分布式計算框架,用于處理大規模數據集。它由兩個主要階段組成:Map階段和Reduce階段。在Map階段,數據被分割成多個小塊,每個小塊由獨立的計算節點進行處理,并生成中間結果。在Reduce階段,中間結果被合并和聚合,生成最終的結果。MapReduce適用于批量處理大規模數據,如日志分析、離線數據處理等。

  • MPPDB(Massively Parallel Processing Database):MPPDB是一種基于MPP架構的分布式數據庫系統。它將數據分割成多個分片存儲在不同的節點上,并利用并行計算能力進行查詢和分析。MPPDB具有高度可擴展性和并行處理能力,可以處理大規模數據集,并提供高性能的查詢和分析功能。

MPP是一種并行計算架構,而MapReduce是一種編程模型和分布式計算框架。
MapReduce適用于批量處理大規模數據,而MPPDB是一種分布式數據庫系統,適用于實時查詢和分析大規模數據。

MPPDB基于MPP架構,具有高度可擴展性和并行處理能力,而MapReduce可以在各種分布式計算框架中實現,如Hadoop。 MPPDB提供高性能的查詢和分析功能,而MapReduce更適用于離線數據處理和復雜計算任務。

總的來說,MPP是一種并行計算架構,MapReduce是一種編程模型和分布式計算框架,而MPPDB是一種基于MPP架構的分布式數據庫系統。它們在處理大規模數據和分布式計算方面有各自的原理和應用場景。


5、OLAP主流框架對比

OLAP核心的詞匯是Analysis。既然是分析其實多的是類似COUNT,SUM,GroupBy這樣的聚合操作。學術一點的是上鉆,下鉆,切片,切塊這樣的操作,這樣的操作往往需要列式存儲的支持才能達到更好的性能,所以往往很多OLAP引擎的底層存儲就是列式的。

OLAP技術有很多類型,主要分為MPP(大規模并行)、視圖預聚合、MapReduce(勉強算)幾種類型。每一種類型都有其使用場景,針對業務需求能讓我們更加了解對應的引擎。

5.1、Clickhouse

ClickHouse由俄羅斯第一大搜索引擎Yandex于2016年6月發布,開發語言為C++,是一個面向聯機分析處理(OLAP)的開源的面向列式存儲的DBMS,簡稱CK,與Hadoop、Spark這些巨無霸組件相比,ClickHouse很輕量級,查詢性能非常好。目前國內社區火熱,各個大廠紛紛跟進大規模使用。

ClickHouse從OLAP場景需求出發,定制開發了一套全新的高效列式存儲引擎,并且實現了數據有序存儲、主鍵索引、稀疏索引、數據Sharding、向量執行、剪枝優化、主備復制等豐富功能。以上功能共同為ClickHouse極速的分析性能奠定了基礎。

5.2、Presto

Presto 是 Facebook 推出分布式SQL交互式查詢引擎,采用MPP架構,完全基于內存的并行計算。Presto比Hive快的原因就在于不在落盤,而是全內存操作。Presto在支持的SQL計算上更加通用,更適合ad-hoc查詢場景,然而這些通用系統往往比專用系統更難做性能優化,所以不太適合做對查詢QPS(參考值QPS > 1000)、延遲要求比較高(參考值search latency < 500ms)的在線服務,更適合做公司內部的查詢服務和加速Hive查詢的服務。

5.3、Doris/StarRocks

Doris是由百度開源的一款MPP數據庫,實現了MySQL協議,集成Google Mesa 和Apache Impala 的技術。DorisDB是基于 Apache Doris 做的閉源商業化產品,后該產品又基于Elastic License 2.0開源并更名為StarRocks。

5.4、Spark SQL

Spark是UC Berkeley AMP lab開源的類MapReduce的通用的并行計算框架。SparkSQL 是 Spark 處理結構化數據的模塊。本質上也是基于 DAG (有向無環圖,Directed Acyclic Graph的縮寫,常用于建模) 的 MPP。

5.5、Kylin

Kylin 是2014年由 eBay 中國研發中心開源的OLAP引擎,提供 Hadoop/Spark 之上的 SQL 查詢接口及多維分析能力以支持超大規模數據,它能在亞秒內查詢巨大的Hive表。其核心技術點在于預計算和Cube(立方體模型)的設置:首先, 對需要分析的數據進行建模,框定需要分析的維度字段;然后通過預處理的形式,對各種維度進行組合并事先聚合;最后,將聚合結果以某種索引或者緩存的形式保存起來(通常只保留聚合后的結果,不存儲明細數據)。這樣一來,在隨后的查詢過程中,就可以直接利用結果返回數據。

5.6、Druid

Druid是由廣告公司 MetaMarkets 于2012年開源的實時大數據分析引擎。Druid 作為MOLAP引擎,也是對數據進行預聚合。只不過預聚合的方式與Kylin不同,Kylin是Cube化,Druid的預聚合方式只是全維度進行Group-by,相當于是Kylin Cube 的 base cuboid。Druid 支持低延時的數據攝取,靈活的數據探索分析,高性能的數據聚合,簡便的水平擴展。Druid支持更大的數據規模,具備一定的預聚合能力,通過倒排索引和位圖索引進一步優化查詢性能,在廣告分析場景、監控報警等時序類應用均有廣泛使用。


參考鏈接:

常見開源OLAP技術架構對比 - 知乎

OLAP引擎對比分析 - 知乎

大數據四大陣營之OLTP陣營(上) - 知乎

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211508.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211508.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211508.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

001 LLM大模型之Transformer 模型

參考《大規模語言模型--從理論到實踐》 目錄 一、綜述 二、Transformer 模型 三、 嵌入表示層&#xff08;位置編碼代碼&#xff09; 一、綜述 語言模型目標是建模自然語言的概率分布&#xff0c;在自然語言處理研究中具有重要的作用&#xff0c;是自然 語言處理基礎任務之一…

第 119 場 LeetCode 雙周賽題解

A 找到兩個數組中的公共元素 模擬 class Solution { public:vector<int> findIntersectionValues(vector<int> &nums1, vector<int> &nums2) {unordered_set<int> s1(nums1.begin(), nums1.end()), s2(nums2.begin(), nums2.end());vector<…

【基于大數據的人肥胖程度預測分析與可控策略】

基于大數據的人肥胖程度預測分析與可控策略 前言數據獲取與清洗數據挖掘與分類建模1. K-means聚類2. 層次聚類3. DBSCAN4. 分類建模 數據可視化模型肥胖程度預測分析與可控策略結語 前言 隨著現代生活方式的改變&#xff0c;肥胖問題逐漸成為全球性的健康挑戰。為了更好地理解…

實用篇 | 3D建模中Blender軟件的下載及使用[圖文詳情]

本文基于數字人系列的3D建模工具Blender軟件的安裝及使用&#xff0c;還介紹了圖片生成3D模型的AI工具~ 目錄 1.Blender的下載 2.Blender的使用 3.安裝插件(通過壓縮包安裝) 4.實例 4.1.Blender使用MB-Lab插件快速人體模型建構 4.1.1.點擊官網&#xff0c;進行下載 4.1.…

批量將圖片分別翻轉90、180、270度,并將對應的框標注的json文件也進行相應調整,做到數據增強的效果

#------------------------------------矩形標注增強--------------------------------------- from PIL import Image import os import jsondef rotate_images_and_jsons(input_folder):output_folder os.path.join(input_folder, "rotated_images")os.makedirs(o…

在JavaScript中,可以使用Object.assign()方法或展開語法(...)來合并對象

在JavaScript中&#xff0c;你可以使用Object.assign()方法或者使用Spread Operator (…) 來合并對象。 Object.assign() Object.assign() 靜態方法將一個或者多個源對象中所有可枚舉的自有屬性復制到目標對象&#xff0c;并返回修改后的目標對象。 語法 Object.assign(tar…

Java TCP(一對一)聊天簡易版

客戶端 import java.io.*; import java.net.Socket; import java.util.Date; import javax.swing.*;public class MyClient {private JFrame jf;private JButton jBsend;private JTextArea jTAcontent;private JTextField jText;private JLabel JLcontent;private Date data;p…

C語言 題目

1.寫一個函數算一個數的二進制(補碼)表示中有幾個1 #include<stdio.h>//統計二進制數中有幾個1 //如13:1101 //需要考慮負數情況 如-1 結果應該是32// n 1101 //n-1 1100 //n 1100 //n-1 1011 //n 1000 //n-1 0111 //n 0000 //看n的變化 int funca(int c){int co…

css:flex布局中子元素高度height沒有達到100%

目錄 問題flex布局示例解決辦法方式一方式二 參考 問題 css中使用flex布局中子元素高度height沒有達到100% flex布局示例 希望實現兩個盒子左右分布&#xff0c;內容垂直居中對齊 <style>.box {display: flex;align-items: center;border: 1px solid #eeeeee;}.box-l…

【ceph】ceph生產常見操作之一---ceph擴容以及注意事項

本站以分享各種運維經驗和運維所需要的技能為主 《python零基礎入門》&#xff1a;python零基礎入門學習 《python運維腳本》&#xff1a; python運維腳本實踐 《shell》&#xff1a;shell學習 《terraform》持續更新中&#xff1a;terraform_Aws學習零基礎入門到最佳實戰 《k8…

react新舊生命周期鉤子

以下的內容根據尚硅谷整理。 舊生命鉤子 輔助理解&#xff1a; 紅色框&#xff1a;掛載時生命鉤子藍色框&#xff1a;更新時生命鉤子綠色框&#xff1a;卸載時生命鉤子 掛載時 如圖所示&#xff0c;我們可以看到&#xff0c;在組件第一次掛載時會經歷&#xff1a; 構造器&a…

stateflow——如何查看狀態機中參數變化及狀態機斷點調試

法一&#xff1a;使用Data Inspector 點擊“符號圖窗”和“屬性”&#xff0c;如圖&#xff1b;在選擇變量n并右鍵點擊inspector&#xff0c;最后在logging&#xff0c;如圖 法二&#xff1a;log active state 和法一類似使用data inspector查看&#xff0c;類似的查看方法和…

【每周一測】Java階段四第三周學習

目錄 1、關于分布式鎖的說法&#xff0c;錯誤的是&#xff08; &#xff09; 2、JDK動態代理產生的代理類和委托類的關系是 3、下列關于ElasticSearch中基本概念描述錯誤的是 4、Spring Cloud 中&#xff0c;Feign 是什么&#xff1f; 5、在JavaScript中&#xff0c;可以使…

玩轉大數據13: 數據倫理與合規性探討

1. 引言 隨著科技的飛速發展&#xff0c;數據已經成為了現代社會的寶貴資產。然而&#xff0c;數據的收集、處理和利用也帶來了一系列的倫理和合規性問題。數據倫理和合規性不僅關乎個人隱私和權益的保護&#xff0c;還涉及到企業的商業利益和社會責任。因此&#xff0c;數據…

韻達快遞單號查詢,以表格的形式導出單號的每一條物流信息

批量查詢韻達快遞單號的物流信息&#xff0c;并以表格的形式導出單號的每一條物流信息。 所需工具&#xff1a; 一個【快遞批量查詢高手】軟件 韻達快遞單號若干 操作步驟&#xff1a; 步驟1&#xff1a;運行【快遞批量查詢高手】軟件&#xff0c;第一次使用的伙伴記得先注冊…

SOP(標準作業程序)和WI(操作指導書)的聯系和區別

目錄 1.SOP&#xff08;標準作業程序&#xff09;&#xff1a;2.WI&#xff08;操作指導書&#xff09;&#xff1a;3.SOP和WI的區別&#xff1a; 1.SOP&#xff08;標準作業程序&#xff09;&#xff1a; SOP: 所謂SOP&#xff0c;是 Standard Operation Procedure三個單詞中…

【計算機網絡實驗】實驗三 IP網絡規劃與路由設計(頭歌)

目錄 一、知識點 二、實驗任務 三、頭歌測試 一、知識點 IP子網掩碼的兩種表示方法 32位IP子網掩碼&#xff0c;特點是從高位開始連續都是1&#xff0c;后面是連續的0&#xff0c;它有以下兩種表示方法&#xff1a; 傳統表示法&#xff0c;如&#xff1a;255.255.255.0IP前…

【WebSocket】使用ws搭建一個簡單的在線聊天室

前言 什么是WebSockets&#xff1f; WebSockets 是一種先進的技術。它可以在用戶的瀏覽器和服務器之間打開交互式通信會話。使用此 API&#xff0c;你可以向服務器發送消息并接收事件驅動的響應&#xff0c;而無需通過輪詢服務器的方式以獲得響應。 webscokets 包括webscoket…

中科院分區和JCR分區有什么區別

文章目錄 名詞解釋學科劃分不同參考的影響因子不同期刊分區不同期刊分區閾值不同 名詞解釋 中科院分區&#xff1a;又稱“中科院JCR分區”&#xff0c;是中國科學院文獻情報中心世界科學前沿分析中心的科學研究成果&#xff0c;期刊分區表數據每年底&#xff08;每年12月中下旬…

汽車繼電器

汽車繼電器 電子元器件百科 文章目錄 汽車繼電器前言一、汽車繼電器是什么二、汽車繼電器的類別三、汽車繼電器的應用實例四、汽車繼電器的作用原理總結前言 汽車繼電器作為一種電子設備,廣泛應用于汽車電路中的各種控制和保護任務,能夠可靠地控制和傳送電能,確保汽車系統的…