天天看點

大資料ClickHouse進階(一):ClickHouse使用場景和叢集安裝

大資料ClickHouse進階(一):ClickHouse使用場景和叢集安裝

文章目錄

​​ClickHouse使用場景和叢集安裝​​

​​一、使用場景​​

​​二、ClickHouse分布式叢集安裝​​

​​1、分布式叢集安裝​​

​​2、ClickHouse目錄結構​​

ClickHouse使用場景和叢集安裝

一、使用場景

ClickHouse是一個開源的,用于聯機分析(OLAP)的列式資料庫管理系統(DBMS-database manager system), 它是面向列的,并允許使用SQL查詢,實時生成分析報告。ClickHouse最初是一款名為Yandex.Metrica的産品,主要用于WEB流量分析。ClickHouse的全稱是Click Stream,Data WareHouse,簡稱ClickHouse。

ClickHouse使用C++進行編寫,具有很多優秀的特點,如在ClickHouse基礎篇我們講解的ClickHouse特性:完備的DBMS功能、列式存儲、資料壓縮、向量化執行、支援标準SQL、支援20多張表引擎、支援多線程與分布式、多主架構、互動式查詢、資料分片與分布式查詢等。ClickHouse官網位址由原來的https://ClickHouse.tech改變為https://ClickHouse.com。

ClickHouse适合OLAP資料分析類的場景,資料體量越大,ClickHouse的優勢越大。ClickHouse不适合以下場景:

  • ClickHouse 不支援事務,事務場景不适合
  • 不适合根據主鍵進行行粒度查詢或删除場景(支援但不建議)

二、ClickHouse分布式叢集安裝

在後期建立表示範ClickHouse進階操作時,必須使用到ClickHouse叢集,由于ClickHouse發展非常迅速,幾乎每個月都會更新ClickHouse幾個版本,與之前的ClickHouse20.8版本相對比,新的ClickHouse版本安裝與配置有部分不同, 這裡我們選擇使用ClickHouse 21.9.4.35版本來重新進行分布式叢集搭建,采用rmp包的安裝方式。

我們可以從官網給定的下載下傳rpm包的位址下載下傳最新的ClickHouse rpm安裝包,位址如下:​​https://repo.yandex.ru/ClickHouse/rpm/stable/x86_64/​​

注意:這裡從ClickHouse19.4版本之後,隻需要下載下傳3個rpm安裝包即可,分别如下:

ClickHouse-common-static-21.9.4.35-2.x86_64.rpm
ClickHouse-server-21.9.4.35-2.noarch.rpm
ClickHouse-client-21.9.4.35-2.noarch.rpm      

1、分布式叢集安裝

ClickHouse分布式叢集安裝選擇三台節點,分别為node1,node2,node3,詳細安裝步驟如下:

1.1、選擇三台clicsskhouse節點,在每台節點上安裝ClickHouse需要的安裝包

這裡選擇node1、node2,node3三台節點,上傳安裝包,分别在每台節點上執行如下指令安裝ClickHouse:

rpm -ivh ./ClickHouse-common-static-21.9.4.35-2.x86_64.rpm
#注意在安裝以下rpm包時,讓輸入密碼,可以直接回車跳過
rpm -ivh ./ClickHouse-server-21.9.4.35-2.noarch.rpm
rpm -ivh ClickHouse-client-21.9.4.35-2.noarch.rpm      

1.2、安裝zookeeper叢集并啟動

搭建ClickHouse叢集時,需要使用Zookeeper去實作叢集副本之間的同步,是以這裡需要zookeeper叢集,zookeeper叢集安裝後可忽略此步驟。

1.3、配置外網可通路

在每台ClickHouse節點中配置/etc/ClickHouse-server/config.xml檔案第164行<listen_host>,如下:

<listen_host>::1</listen_host>
#注意每台節點監聽的host名稱配置目前節點host
<listen_host>node1</listen_host>      

1.4、在每台節點建立metrika.xml檔案,寫入以下内容

在node1、node2、node3節點上/etc/ClickHouse-server/config.d路徑下下配置metrika.xml檔案,預設ClickHouse會在/etc路徑下查找metrika.xml檔案,但是必須要求metrika.xml上級目錄擁有者權限為ClickHouse ,是以這裡我們将metrika.xml建立在/etc/ClickHouse-server/config.d路徑下,config.d目錄的擁有者權限為ClickHouse。

在metrika.xml中我們配置後期使用的ClickHouse叢集中建立分布式表時使用3個分片,每個分片有1個副本,配置如下:

vim /etc/ClickHouse-server/config.d/metrika.xml:

<yandex>
    <remote_servers>
        <ClickHouse_cluster_3shards_1replicas>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>node1</host>
                    <port>9000</port>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>node2</host>
                    <port>9000</port>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>node3</host>
                    <port>9000</port>
                </replica>
            </shard>
        </ClickHouse_cluster_3shards_1replicas>
    </remote_servers>
     
    <zookeeper>
        <node index="1">
            <host>node3</host>
            <port>2181</port>
        </node>
        <node index="2">
            <host>node4</host>
            <port>2181</port>
        </node>
        <node index="3">
            <host>node5</host>
            <port>2181</port>
        </node>
    </zookeeper>
    <macros>
        <shard>01</shard> 
        <replica>node1</replica>
    </macros>
    <networks>
        <ip>::/0</ip>
    </networks>
    <ClickHouse_compression>
        <case>
            <min_part_size>10000000000</min_part_size>
            <min_part_size_ratio>0.01</min_part_size_ratio>
            <method>lz4</method>
        </case>
    </ClickHouse_compression>
</yandex>      

對以上配置檔案中配置項的解釋如下:

  • remote_servers:

ClickHouse叢集配置标簽,固定寫法。注意:這裡與之前版本不同,之前要求必須以ClickHouse開頭,新版本不再需要。

  • ClickHouse_cluster_3shards_1replicas:

配置ClickHouse的叢集名稱,可自由定義名稱,注意叢集名稱中不能包含點号。這裡代表叢集中有3個分片,每個分片有1個副本。

分片是指包含部分資料的伺服器,要讀取所有的資料,必須通路所有的分片。

副本是指存儲分片備份資料的伺服器,要讀取所有的資料,通路任意副本上的資料即可。

  • shard:

分片,一個ClickHouse叢集可以分多個分片,每個分片可以存儲資料,這裡分片可以了解為ClickHouse機器中的每個節點,1個分片隻能對應1服務節點。這裡可以配置一個或者任意多個分片,在每個分片中可以配置一個或任意多個副本,不同分片可配置不同數量的副本。如果隻是配置一個分片,這種情況下查詢操作應該稱為遠端查詢,而不是分布式查詢。

  • replica:

每個分片的副本,預設每個分片配置了一個副本。也可以配置多個,副本的數量上限是由ClickHouse節點的數量決定的。如果配置了副本,讀取操作可以從每個分片裡選擇一個可用的副本。如果副本不可用,會依次選擇下個副本進行連接配接。該機制利于系統的可用性。

  • internal_replication:

預設為false,寫資料操作會将資料寫入所有的副本,設定為true,寫操作隻會選擇一個正常的副本寫入資料,資料的同步在背景自動進行。

  • zookeeper:

配置的zookeeper叢集,注意:與之前版本不同,之前版本是“zookeeper-servers”。

  • macros:

區分每台ClickHouse節點的宏配置,macros中标簽<shard>代表目前節點的分片号,标簽<replica>代表目前節點的副本号,這兩個名稱可以随意取,後期在建立副本表時可以動态讀取這兩個宏變量。注意:每台ClickHouse節點需要配置不同名稱。

  • networks:

這裡配置ip為“::/0”代表任意IP可以通路,包含IPv4和IPv6。

注意:允許外網通路還需配置/etc/ClickHouse-server/config.xml 參照第三步驟。

  • ClickHouse_compression:

MergeTree引擎表的資料壓縮設定,min_part_size:代表資料部分最小大小。min_part_size_ratio:資料部分大小與表大小的比率。method:資料壓縮格式。

注意:需要在每台ClickHouse節點上配置metrika.xml檔案,并且修改每個節點的 macros配置名稱。

#node2節點修改metrika.xml中的宏變量如下:
    <macros>
        <shard>02</replica> 
        <replica>node2</replica>
    </macros>

#node3節點修改metrika.xml中的宏變量如下:
<macros>
        <shard>03</replica> 
        <replica>node3</replica>
    </macros>      

1.5、在每台節點上啟動/檢視/重新開機/停止ClickHouse服務

首先啟動zookeeper叢集,然後分别在node1、node2、node3節點上啟動ClickHouse服務,這裡每台節點和單節點啟動一樣。啟動之後,ClickHouse叢集配置完成。

#每台節點啟動Clickchouse服務
service ClickHouse-server start

#每台節點檢視ClickHouse服務狀态
service ClickHouse-server status

#每台節點重新開機ClickHouse服務
service ClickHouse-server restart

#每台節點關閉Clikchouse服務
service clickhose-server stop      

1.6、檢查叢集配置是否完成

在node1、node2、node3任意一台節點進入ClickHouse用戶端,查詢叢集配置:

#選擇三台ClickHouse任意一台節點,進入用戶端
ClickHouse-client 
#查詢叢集資訊,看到下圖所示即代表叢集配置成功。
node1 :) select * from system.clusters;      
大資料ClickHouse進階(一):ClickHouse使用場景和叢集安裝
#查詢叢集資訊,也可以使用如下指令
node1 :) select cluster,host_name from system.clusters;      
大資料ClickHouse進階(一):ClickHouse使用場景和叢集安裝

2、ClickHouse目錄結構

ClickHouse叢集安裝完成之後會生成如下對應的目錄,每個目錄的介紹如下:

  • /etc/ClickHouse-server :

服務端的配置檔案目錄,包括全局配置config.xml 和使用者配置users.xml。

  • /var/lib/ClickHouse :

預設的資料存儲目錄,通常會修改,将資料儲存到大容量磁盤路徑中,此路徑可以通過/etc/ClickHouse-server/config.xml配置,配置标簽<path>對應的資料。

  • /var/log/cilckhouse-server :
  • ClickHouse:主程式可執行檔案
  • ClickHouse-server:一個指向ClickHouse可執行檔案的軟連接配接,供服務端啟動使用
  • ClickHouse-client:一個指向ClickHouse可執行檔案的軟連接配接,供用戶端啟動使用
  • 📢部落格首頁​
  • 📢歡迎點贊 👍 收藏 ⭐留言 📝 如有錯誤敬請指正!
  • 📢本文由 Lansonli 原創
  • 📢停下休息的時候不要忘了别人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活✨