クリックハウスクラスターモードの設定

1. 分散クラスターの一般的なソリューション

プラン 特徴
解決策 1: MergeTree + 分散 1. コピーは禁止です。2. zk は必要ありません。3. ローカルテーブルのみ書き込み可能
ソリューション 2: MergeTree + 分散 + クラスター レプリケーション 1. クラスターテーブルを書き込みます。2. クラスター複製メカニズムを使用して、レプリカの問題を解決します。3. zkを使用する必要はありません
ソリューション 3: ReplicatedMergeTree + 分散 1. ローカル テーブルを作成し、zk を介してコピーとして配布します。2. ローカル テーブルに書き込み、クラスター テーブルを読み取ります。3. zk への依存度が高い

 ここでは、データがハイブ テーブルからインポートされるため、コピーの必要がないため、オプション 1 を選択します。

2. 独立した設定ファイル

Clickhouse は置換を使用して、いくつかの構成項目をファイルに個別に書き込むことができます。この利点は、管理に便利であり、毎回 config.xml をメンテナンスする必要がないことです。

3. 設定ファイル

1)users.xml

ローカル テーブルに書き込むため、分散テーブルを読み取るための分散テーブル専用の読み取り専用アカウントを新規に設定できます。<users> タグ内に設定を追加します。なお、password_sha256_hex は自分でパスワードを作成する必要があります。メソッドは次のとおりです: echo -n '123456' | sha256sum | tr -d '-'

        <clst_read>
            <password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
            <networks>
                <ip>::/0</ip>
            </networks>

            <!-- Settings profile for user. -->
            <profile>readonly</profile>

            <!-- Quota for user. -->
            <quota>default</quota>
        </clst_read>

2)config.xml

include_fromタグとincl属性を追加

1. <yandex> タグの下に構成を追加します。これは、追加の構成ファイル /etc/clickhouse-server/metrika.xml を導入することを意味します。

<include_from>/etc/clickhouse-server/metrika.xml</include_from>     <!-- 设置集群配置文件 -->

2. <remote_servers> タグを変更し、incl 属性を追加して、remote_servers タグが ck_remote_servers タグ (metrika.xml で構成) に置き換えられることを示します。

<remote_servers incl="ck_remote_servers">  <!-- 指定incl -->

3) メトリカ.xml

分散テーブル構成ファイルを作成します。完全な構成ファイルは次のとおりです。

<yandex>
    <ck_remote_servers>  <!--标签名,用于替换 config.xml中的remote_servers标签-->
       <dw_cluster> <!--集群名称 -->
            <shard>
                <replica>
                    <host>ip</host>
                    <port>9100</port>
                    <user>clst_read</user> <!-- 专门配置的一个集群只读账号 -->
                    <password>123456</password>
                </replica>
            </shard>
            <shard>
                <replica>
                    <host>ip</host>
                    <port>9100</port>
                    <user>clst_read</user>
                    <password>123456</password>
                </replica>
            </shard>
        </dw_cluster>
    </ck_remote_servers>
</yandex>

4) 分散テーブルを作成する

サービスを再起動した後、分散テーブルを作成します。

-- 创建本地表,多个节点都需要创建
create table dw_local.hits(p Date, i Int32) ENGINE =MergeTree order by p;
-- 插入本地表数据,节点1
insert into dw_local.hits(p,i) values('2021-01-01',1),('2021-01-01',2),('2021-01-02',3),('2021-01-02',4);

-- 插入本地表数据,节点2
insert into dw_local.hits(p,i) values('2021-01-01',5),('2021-01-01',6),('2021-01-02',7),('2021-01-02',8);

-- 创建分布式表:
-- dw.hits :分布式表名
-- dw_cluster:集群名称
-- dw_local:本地表的库名
-- hits:本地表名
CREATE TABLE IF NOT EXISTS dw.hits   (p Date, i Int32) ENGINE = Distributed(dw_cluster, dw_local, hits);

-- 查询分布式表
select * from dw.hits t limit 10;

-- 查询本地表
select * from dw_local.hits t limit 10;

おすすめ

転載: blog.csdn.net/cakecc2008/article/details/122829314