亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

在線分析處理查詢clickhouse

IT那活兒 / 2504人閱讀
在線分析處理查詢clickhouse





clickhouse介紹及架構(gòu)原理



ClickHouse 是俄羅斯的 Yandex 于 2016 年開源的列式存儲(chǔ)數(shù)據(jù)(DBMS),使用 C++語言編寫,主要用于在線分析處理查詢(OLAP),能夠使用 SQL 查詢實(shí)時(shí)生成分析數(shù)據(jù)報(bào)告


1)Parser與Interpreter

Parser和Interpreter是非常重要的兩組接口:Parser分析器是將sql語句已遞歸的方式形成AST語法樹的形式,并且不同類型的sql都會(huì)調(diào)用不同的parse實(shí)現(xiàn)類。而Interpreter解釋器則負(fù)責(zé)解釋AST,并進(jìn)一步創(chuàng)建查詢的執(zhí)行管道。Interpreter解釋器的作用就像Service服務(wù)層一樣,起到串聯(lián)整個(gè)查詢過程的作用,它會(huì)根據(jù)解釋器的類型,聚合它所需要的資源。首先它會(huì)解析AST對(duì)象;然后執(zhí)行"業(yè)務(wù)邏輯" ( 例如分支判斷、設(shè)置參數(shù)、調(diào)用接口等 );最終返回IBlock對(duì)象,以線程的形式建立起一個(gè)查詢執(zhí)行管道。

2)表引擎

表引擎是ClickHouse的一個(gè)顯著特性,上文也有提到,clickhouse有很多種表引擎。不同的表引擎由不同的子類實(shí)現(xiàn)。表引擎是使用IStorage接口的,該接口定義了DDL ( 如ALTER、RENAME、OPTIMIZE和DROP等 ) 、read和write方法,它們分別負(fù)責(zé)數(shù)據(jù)的定義、查詢與寫入。

3)DataType

數(shù)據(jù)的序列化和反序列化工作由DataType負(fù)責(zé)。根據(jù)不同的數(shù)據(jù)類型,IDataType接口會(huì)有不同的實(shí)現(xiàn)類。DataType雖然會(huì)對(duì)數(shù)據(jù)進(jìn)行正反序列化,但是它不會(huì)直接和內(nèi)存或者磁盤做交互,而是轉(zhuǎn)交給Column和Filed處理。

4)Column與Field

Column和Field是ClickHouse數(shù)據(jù)最基礎(chǔ)的映射單元。作為一款百分之百的列式存儲(chǔ)數(shù)據(jù)庫,ClickHouse按列存儲(chǔ)數(shù)據(jù),內(nèi)存中的一列數(shù)據(jù)由一個(gè)Column對(duì)象表示。Column對(duì)象分為接口和實(shí)現(xiàn)兩個(gè)部分,在IColumn接口對(duì)象中,定義了對(duì)數(shù)據(jù)進(jìn)行各種關(guān)系運(yùn)算的方法,例如插入數(shù)據(jù)的insertRangeFrom和insertFrom方法、用于分頁的cut,以及用于過濾的filter方法等。而這些方法的具體實(shí)現(xiàn)對(duì)象則根據(jù)數(shù)據(jù)類型的不同,由相應(yīng)的對(duì)象實(shí)現(xiàn),例如ColumnString、ColumnArray和ColumnTuple等。在大多數(shù)場(chǎng)合,ClickHouse都會(huì)以整列的方式操作數(shù)據(jù),但凡事也有例外。如果需要操作單個(gè)具體的數(shù)值 ( 也就是單列中的一行數(shù)據(jù) ),則需要使用Field對(duì)象,F(xiàn)ield對(duì)象代表一個(gè)單值。與Column對(duì)象的泛化設(shè)計(jì)思路不同,F(xiàn)ield對(duì)象使用了聚合的設(shè)計(jì)模式。在Field對(duì)象內(nèi)部聚合了Null、UInt64、String和Array等13種數(shù)據(jù)類型及相應(yīng)的處理邏輯。

5)Block

ClickHouse內(nèi)部的數(shù)據(jù)操作是面向Block對(duì)象進(jìn)行的,并且采用了流的形式。雖然Column和Filed組成了數(shù)據(jù)的基本映射單元,但對(duì)應(yīng)到實(shí)際操作,它們還缺少了一些必要的信息,比如數(shù)據(jù)的類型及列的名稱。于是ClickHouse設(shè)計(jì)了Block對(duì)象,Block對(duì)象可以看作數(shù)據(jù)表的子集。Block對(duì)象的本質(zhì)是由數(shù)據(jù)對(duì)象、數(shù)據(jù)類型和列名稱組成的三元組,即Column、DataType及列名稱字符串。Column提供了數(shù)據(jù)的讀取能力,而DataType知道如何正反序列化,所以Block在這些對(duì)象的基礎(chǔ)之上實(shí)現(xiàn)了進(jìn)一步的抽象和封裝,從而簡(jiǎn)化了整個(gè)使用的過程,僅通過Block對(duì)象就能完成一系列的數(shù)據(jù)操作。在具體的實(shí)現(xiàn)過程中,Block并沒有直接聚合Column和DataType對(duì)象,而是通過ColumnWith TypeAndName對(duì)象進(jìn)行間接引用。





Clickhouse應(yīng)用場(chǎng)景



自從ClickHouse2016年6月15日開源后,ClickHouse中文社區(qū)隨后成立。中文開源組開始以易觀,??低?美團(tuán),新浪,京東,58,騰訊,酷狗音樂和俄羅斯開源社區(qū)等人員組成,隨著開源社區(qū)的不斷活躍,陸續(xù)有神州數(shù)碼,青云,PingCAP,中軟國際等公司成員加入以及其他公司成員加入。初始在群里討論技術(shù)后續(xù)有一些大型公司陸續(xù)運(yùn)用到項(xiàng)目中,介于分享不方便問題解決,建立了相應(yīng)的論壇。根據(jù)交流得知一些大公司已經(jīng)運(yùn)用。

最大的應(yīng)用來自于Yandex的統(tǒng)計(jì)分析服務(wù)Yandex.Metrica,類似于谷歌Analytics(GA),或友盟統(tǒng)計(jì),小米統(tǒng)計(jì),幫助網(wǎng)站或移動(dòng)應(yīng)用進(jìn)行數(shù)據(jù)分析和精細(xì)化運(yùn)營工具,據(jù)稱Yandex.Metrica為世界上第二大的網(wǎng)站分析平臺(tái)。ClickHouse在這個(gè)應(yīng)用中,部署了近四百臺(tái)機(jī)器,每天支持200億的事件和歷史總記錄超過13萬億條記錄,這些記錄都存有原始數(shù)據(jù)(非聚合數(shù)據(jù)),隨時(shí)可以使用SQL查詢和分析,生成用戶報(bào)告。





Clickhouse安裝




1. 準(zhǔn)備工作

1)確定防火墻處于關(guān)閉狀態(tài)

2)CentOS 取消打開文件數(shù)限制

在 hadoop102 的 /etc/security/limits.conf 文件的末尾加入以下內(nèi)容

在 hadoop102 的/etc/security/limits.d/20-nproc.conf 文件的末尾加入以下內(nèi)容

執(zhí)行同步操作

3) CentOS 取消打開文件數(shù)限制

4)CentOS 取消 SELINUX

修改/etc/selinux/config 中的 SELINUX=disabled

執(zhí)行同步操作

重啟三臺(tái)服務(wù)器。


2. 單機(jī)安裝

官網(wǎng):https://clickhouse.tech/
下載地址:http://repo.red-soft.biz/repos/clickhouse/stable/el7/
1)在 hadoop102 的/opt/software 下創(chuàng)建 clickhouse 目錄

2)將/2.資料/ClickHouse 下 4 個(gè)文件上傳到 hadoop102 的software/clickhouse 目錄下

3)將安裝文件同步到 hadoop103、hadoop104 并rpm執(zhí)行
4)修改配置文件

:: 的注釋打開,這樣的話才能讓 ClickHouse 被除本

機(jī)以外的服務(wù)器訪問

分發(fā)配置文件

sudo /home/atguigu/bin/xsync /etc/clickhouse-server/config.xml

在這個(gè)文件中,有 ClickHouse 的一些默認(rèn)路徑配置,比較重要的

數(shù)據(jù)文件路徑:/var/lib/clickhouse/

日志文件路徑:/var/log/clickhouse-server/clickhouse-server.log

5)啟動(dòng) Server

6)使用 client 連接 server






Clickhouse為什么做查詢分析那么快




Clickhouse為什么做查詢分析那么快?

因?yàn)閏lickhouse使用了下列方案:

  • clickhouse 數(shù)據(jù)分區(qū)

  • clickhouse 列式存儲(chǔ)

所有的OLAP技術(shù),基本都是使用的列式存儲(chǔ)。其有以下優(yōu)點(diǎn):

分析場(chǎng)景中往往需要讀大量行但是少量列。在行存儲(chǔ)模式中,所有的列數(shù)據(jù)都存儲(chǔ)在一個(gè)block中,不參與計(jì)算的列在IO的時(shí)候也需要讀取,造成沒必要的IO浪費(fèi)。而列式存儲(chǔ),則只需要讀取參與計(jì)算的列即可,極大的減少了IO消耗,加快了查詢效率同一列數(shù)據(jù)中的數(shù)據(jù)類型相同,這有利于提高壓縮比,節(jié)省大量存儲(chǔ)空間而壓縮比高,則意味著數(shù)據(jù)體積小,對(duì)應(yīng)的其IO讀取耗時(shí)更短

自由壓縮算法選擇,不同的列可以根據(jù)數(shù)據(jù)類型,來使用不同的壓縮算法高壓縮比,同時(shí)也會(huì)減少內(nèi)存消耗,同樣的內(nèi)存可以緩存更多的數(shù)據(jù)

  • clickhouse 數(shù)據(jù)壓縮

關(guān)于數(shù)據(jù)壓縮:Clickhouse的數(shù)據(jù)存儲(chǔ)文件 column.bin中存儲(chǔ)的是一列數(shù)據(jù),由于一列是相同的數(shù)據(jù)類型,所以方便高效壓縮,在進(jìn)行壓縮的時(shí)候,請(qǐng)注意:一個(gè)壓縮數(shù)據(jù)塊由頭信息和壓縮數(shù)據(jù)兩部分組成,頭信息固定使用9位字節(jié)表示,具體由1個(gè)UInt8(1字節(jié))整型和2個(gè)UInt32(4字節(jié))整型組成,分別代表使用的壓縮算法類型、壓縮后的數(shù)據(jù)大小和壓縮前的數(shù)據(jù)大小。每個(gè)壓縮數(shù)據(jù)塊的體積,按照其壓縮前的數(shù)據(jù)字節(jié)大小,都被嚴(yán)格控制在64KB ~ 1MB,其上下限分別由 min_compress-block_size(默認(rèn)65535=64KB)與max_compress_block_size(默認(rèn)1MB)參數(shù)指定。


具體壓縮規(guī)則:

  1. 單個(gè)批次數(shù)據(jù) size < 64KB:如果單個(gè)批次數(shù)據(jù)小于64KB,則繼續(xù)獲取下一批數(shù)據(jù)后,直至累計(jì)到size >= 64KB時(shí),生成下一個(gè)壓縮數(shù)據(jù)塊。如果平均每條記錄小于8byte,多個(gè)數(shù)據(jù)批次壓縮成一個(gè)數(shù)據(jù)塊

  2. 單個(gè)批次數(shù)據(jù) 64KB <= size <= 1MB:如果單個(gè)批次數(shù)據(jù)大小在64KB與1MB之間,則直接生成下一個(gè)壓縮數(shù)據(jù)塊

  3. > 單個(gè)批次數(shù)據(jù) size > 1MB:如果單個(gè)批次數(shù)據(jù)直接超過1MB,則首先按照1MB大小截?cái)嗖⑸上乱粋€(gè)壓縮數(shù)據(jù)塊。剩余數(shù)據(jù)繼續(xù)依照上述規(guī)則執(zhí)行。此時(shí),會(huì)出現(xiàn)一個(gè)批次數(shù)據(jù)生成多個(gè)壓縮數(shù)據(jù)塊的情況。如果平均每條記錄的大小超過128byte,則會(huì)把當(dāng)前這一個(gè)批次的數(shù)據(jù)壓縮成多個(gè)數(shù)據(jù)塊

  • clickhouse 數(shù)據(jù)標(biāo)記

關(guān)于數(shù)據(jù)標(biāo)記,數(shù)據(jù)標(biāo)記文件也與xxx.bin文件一一對(duì)應(yīng),是一級(jí)索引與數(shù)據(jù)塊之間關(guān)系的數(shù)據(jù)


END


更多精彩干貨分享

點(diǎn)擊下方名片關(guān)注

IT那活兒

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/129789.html

相關(guān)文章

  • 基于開源應(yīng)用快速構(gòu)建HTAP系統(tǒng)

    摘要:利用快速構(gòu)建系統(tǒng)。構(gòu)建系統(tǒng)和的安裝本文不再贅述,直接開始動(dòng)手構(gòu)建系統(tǒng)。分別為和,用于讀寫組,用于只讀組。最后配置的監(jiān)控服務(wù)可選,非必須至此,一個(gè)全部基于開源應(yīng)用的簡(jiǎn)易系統(tǒng)就構(gòu)建好了。利用ProxySQL、MySQL、ClickHouse快速構(gòu)建HTAP系統(tǒng)。1. 關(guān)于ClickHouse企業(yè)里隨著數(shù)據(jù)量的增加,以及日趨復(fù)雜的分析性業(yè)務(wù)需求,主要適用于OLTP場(chǎng)景的MySQL壓力越來越大。多年...

    Tecode 評(píng)論0 收藏0
  • k8s與審計(jì)-- 將clickhouse增加為 heapster sink

    摘要:前言在資源審計(jì)和計(jì)費(fèi)這塊,容器和虛機(jī)有很大區(qū)別。支持諸多輸出,稱為。所以本文主要講如何為增加。實(shí)際上,基于增加并且更改,也可以做到,只不過需要裝一些包指令,結(jié)果就是鏡像變大。實(shí)際運(yùn)行日志截圖由于的出色的寫入性能,運(yùn)行非常穩(wěn)定。 前言 在k8s資源審計(jì)和計(jì)費(fèi)這塊,容器和虛機(jī)有很大區(qū)別。相對(duì)虛機(jī)來講,容器不容易實(shí)現(xiàn)。資源指標(biāo)收集可以采用heapster,也可以用prometheus。之前文...

    tunny 評(píng)論0 收藏0
  • k8s與審計(jì)-- 將clickhouse增加為 heapster sink

    摘要:前言在資源審計(jì)和計(jì)費(fèi)這塊,容器和虛機(jī)有很大區(qū)別。支持諸多輸出,稱為。所以本文主要講如何為增加。實(shí)際上,基于增加并且更改,也可以做到,只不過需要裝一些包指令,結(jié)果就是鏡像變大。實(shí)際運(yùn)行日志截圖由于的出色的寫入性能,運(yùn)行非常穩(wěn)定。 前言 在k8s資源審計(jì)和計(jì)費(fèi)這塊,容器和虛機(jī)有很大區(qū)別。相對(duì)虛機(jī)來講,容器不容易實(shí)現(xiàn)。資源指標(biāo)收集可以采用heapster,也可以用prometheus。之前文...

    edagarli 評(píng)論0 收藏0

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<