configuração do modo de cluster clickhouse

1. Soluções comuns para clusters distribuídos

plano características
Solução 1: MergeTree + Distribuído 1. Nenhuma cópia. 2. Não é necessário zk. 3. Somente tabelas locais podem ser escritas
Solução 2: MergeTree + distribuído + replicação de cluster 1. Grave a tabela de cluster. 2. Use o mecanismo de replicação de cluster para resolver o problema da réplica. 3. Não há necessidade de usar zk
Solução 3: ReplicatedMergeTree + Distribuído 1. Escreva a tabela local e distribua-a através do zk como uma cópia. 2. Grave na tabela local e leia a tabela de cluster. 3. Altamente dependente de zk

 Aqui, como os dados são importados da tabela hive, não há necessidade de cópia, então escolha a opção um

2. Arquivo de configuração independente

A Clickhouse pode usar substituições para gravar alguns itens de configuração separadamente em um arquivo. A vantagem disso é que é conveniente para o gerenciamento e não precisa manter o config.xml toda vez

3. Arquivo de configuração

1)users.xml

Como está gravando em uma tabela local, você pode configurar uma nova conta somente leitura dedicada à tabela distribuída para ler a tabela distribuída. Adicione a configuração na tag <users>. Observe que password_sha256_hex precisa criar uma senha por você mesmo. O método é: 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

Adicione a tag include_from e o atributo incl

1. Adicione uma configuração sob a tag <yandex>, o que significa introduzir um arquivo de configuração adicional /etc/clickhouse-server/metrika.xml

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

2. Modifique a tag <remote_servers> e adicione o atributo incl, indicando que a tag remote_servers foi substituída pela tag ck_remote_servers (configurada em metrika.xml)

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

3) metrika.xml

Crie um arquivo de configuração de tabela distribuída, o seguinte é um arquivo de configuração completo

<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) Crie uma tabela distribuída

Após reiniciar o serviço, crie uma tabela distribuída:

-- 创建本地表,多个节点都需要创建
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;

Guess you like

Origin blog.csdn.net/cakecc2008/article/details/122829314