天天看點

大資料ClickHouse(二):多種安裝方式​多種安裝方式

​多種安裝方式

Clickhouse官網為:https://clickhouse.tech/

在官網中可以看到ClickHouse可以基于多種方式安裝,rpm安裝、tgz安裝包安裝、docker鏡像安裝、源碼編譯安裝等。這裡我們使用rpm安裝包安裝。目前Clickhouse僅支援Linux系統且cpu必須支援SSE4.2指令集,可以通過以下指令查詢Linux是否支援:

grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"           

複制

如果伺服器不支援SSE4.2指令集,則不能下載下傳預編譯安裝包,需要通過源碼編譯特定版本進行安裝。

一、rpm安裝包下載下傳

ClickHouse rpm安裝包查詢位址為:https://packagecloud.io/Altinity/clickhouse

這裡需要在linux中使用wget指令下載下傳對應的clickHouse版本。選擇一台伺服器建立/software目錄并進入此目錄,在目前目錄下執行如下指令下載下傳ClickHouse需要的rpm安裝包,這裡隻需要下載下傳以下四個rpm安裝包即可。

wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-common-20.8.3.18-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-20.8.3.18-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-client-20.8.3.18-1.el7.x86_64.rpm/download.rpm           

複制

二、​​​​​​​單節點安裝

選擇一台伺服器,将下載下傳好的clickHouse安裝包直接安裝即可,安裝順序如下:

rpm -ivh clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm
rpm -ivh clickhouse-server-common-20.8.3.18-1.el7.x86_64.rpm
rpm -ivh clickhouse-server-20.8.3.18-1.el7.x86_64.rpm
rpm -ivh clickhouse-client-20.8.3.18-1.el7.x86_64.rpm           

複制

這裡也可以在目前節點直接執行如下指令,也可以按照依賴關系安裝各個rpm包:

rpm -ivh ./clickhouse-*.rpm           

複制

Preparing... ################################# [100%]

Updating / installing...

1:clickhouse-server-common-20.8.3.1################################# [ 25%]

2:clickhouse-common-static-20.8.3.1################################# [ 50%]

3:clickhouse-server-20.8.3.18-1.el7################################# [ 75%]

Create user clickhouse.clickhouse with datadir /var/lib/clickhouse

4:clickhouse-client-20.8.3.18-1.el7################################# [100%]

Create user clickhouse.clickhouse with datadir /var/lib/clickhouse

1、目錄介紹

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

  • /etc/clickhouse-server : 服務端的配置檔案目錄,包括全局配置config.xml 和使用者配置users.xml。
  • /var/lib/clickhouse : 預設的資料存儲目錄,通常會修改,将資料儲存到大容量磁盤路徑中。
  • /var/log/cilckhouse-server : 預設儲存日志的目錄,通常會修改,将資料儲存到大容量磁盤路徑中。
  • 在/usr/bin下會有可執行檔案:

clickhouse:主程式可執行檔案

clickhouse-server:一個指向clickhouse可執行檔案的軟連接配接,供服務端啟動使用。

clickhouse-client:一個指向clickhouse可執行檔案的軟連接配接,供用戶端啟動使用。

2、啟動&停止服務

啟動clickhouse-server服務:

service clickhouse-server start           

複制

啟動clickhouse服務後可以使用指令行用戶端連接配接到服務:

# client用戶端連接配接到ch服務
clickhouse-client 
# 或者使用指令:
clickhouse-client --host localhost --port 9000           

複制

ClickHouse client version 20.8.3.18.

Connecting to localhost:9000 as user default.

Connected to ClickHouse server version 20.8.3 revision 54438.

node1 :)

#檢視9000 端口占用情況
[root@node5 bin]# yum install net-tools
[root@node5 bin]# netstat -tunlp |grep 9000

#檢視目前所有資料庫
show databases;           

複制

┌─name───────────────────────────┐

│ _temporary_and_external_tables │

│ default                        │

│ system                         │

└────────────────────────────────┘           

複制

​​​​​​​​
#檢視目前使用的資料庫
select database();           

複制

┌─database()─┐
│ default    │
└────────────┘           

複制

#退出用戶端
quit;           

複制

關閉ClickHouse服務:

service clickhouse-server stop           

複制

三、分布式安裝

1、clickhouse分布式安裝

Clickhouse支援分布式搭建,搭建步驟如下:

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

這裡選擇node1、node2,node3三台節點,分别按照clickhouse單節點安裝方式在每台節點上安裝clickhouse。

1.2、安裝zookeeper叢集并啟動

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

1.3、配置外網可通路

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

<listen_host>::</listen_host>           

複制

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

在node1、node2、node3節點上/etc/下配置metrika.xml檔案:

vim /etc/metrika.xml           

複制

<yandex>
    <clickhouse_remote_servers>
        <clickhouse_cluster_3shards_1replicas>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>node1</host>
                    <port>9000</port>
                </replica>
            </shard>
            <shard>
                <replica>
                    <internal_replication>true</internal_replication>
                    <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>
    </clickhouse_remote_servers>
     
    <zookeeper-servers>
        <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-servers>
    <macros>
        <replica>01</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>           

複制

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

  • clickhouse_remote_servers:

clickhouse叢集配置标簽,固定寫法。

  • clickhouse_cluster_3shards_1replicas:

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

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

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

  • shard:

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

  • replica:

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

  • internal_replication:

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

  • zookeeper-servers:

配置的zookeeper叢集

  • macros:

區分每台clickhouse節點的宏配置,每台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配置名稱。

1.5、在每台節點上啟動clickhouse服務

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

service clickhouse-server start           

複制

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

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

#選擇三台clickhouse任意一台節點,進入用戶端
clickhouse-client 
#查詢叢集資訊,看到下圖所示即代表叢集配置成功。
node1 :) select * from system.clusters;           

複制

大資料ClickHouse(二):多種安裝方式​多種安裝方式

四、​​​​​​​​​​​​​​rpm其他方式安裝問題

以上介紹clickhouse安裝方式是下載下傳好rpm包之後進行安裝,我們也可以自己配置clickhouse的yum源,直接使用yum指令進行安裝,不過這個過程是從外網直接下載下傳clickhouse安裝包之後自動進行安裝。配置如下:

1、​​​​​​​​​​​​​​添加官方存儲庫

選擇需要安裝clickhouse的節點執行如下指令,添加clickhouse的官方yum源:

[root@node1 ~]# yum -y install yum-utils
[root@node1 ~]# rpm --import https://repo.yandex.ru/clickhouse/CLICKHOUSE-KEY.GPG
[root@node1 ~]# yum-config-manager --add-repo https://repo.yandex.ru/clickhouse/rpm/stable/x86_64           

複制

Loaded plugins: fastestmirror

adding repo from: https://repo.yandex.ru/clickhouse/rpm/stable/x86_64

[repo.yandex.ru_clickhouse_rpm_stable_x86_64]

name=added from: https://repo.yandex.ru/clickhouse/rpm/stable/x86_64

baseurl=https://repo.yandex.ru/clickhouse/rpm/stable/x86_64

enabled=1

2、​​​​​​​​​​​​​​安裝clickhouse server和client

yum -y install clickhouse-server clickhouse-client           

複制

經過以上兩個步驟即可完成安裝,這裡安裝單機和安裝叢集都可以使用以上這種模式。

注意:在Centos7 中采用配置yum 源方式安裝ClickHouse啟動時使用指令:systemctl start clickhouse-server