当前位置:首页 > 教程/笔记 > 正文内容

Clickhouse分布式配置(笔记)

clickhouse配置

首先编辑clickhouse-server下的config.xml文件,找到remote_servers节点

增加optional= true属性(这个属性默认是没有的)

然后在remote_servers配置的下方增加

<include_from>/mnt/metrika.xml</include_from>

最后配置如下:

<remote_servers incl="clickhouse_remote_servers" optional="true" >
    <!-- Test only shard config for testing distributed storage -->
    <test_shard_localhost>
        <shard>
            <replica>
                <host>localhost</host>
                <port>9000</port>
            </replica>
        </shard>
    </test_shard_localhost>
</remote_servers>
<include_from>/mnt/metrika.xml</include_from>

分布式配置文件

metrika.xml配置文件内容,这里直接给个模板样例:

<?xml version="1.0"?>
<yandex>
  <clickhouse_remote_servers> //这里的名称要与clickhouse配置文件里面的remote_servers的incl属性里面的名字保持一致
    <bm_cluster>//分片名称,可自定义
      <shard>
        <replica>
          <host>192.168.218.151</host>
          <port>9000</port>
          <user>default</user>
          <password>v84bzd6C</password>
        </replica>
        <replica>
          <host>192.168.218.152</host>
          <port>9000</port>
          <user>default</user>
          <password>v84bzd6C</password>
        </replica>
      </shard>
    </bm_cluster>
  </clickhouse_remote_servers>
  <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>

对于主端和分片节点端,需要放开9000端口!

分布式节点查询

配置完成后,在主设备端登录clickhouse客户端可进行查询,看配置是否生效!

查询方式

select * from system.clusters;

如果能看到配置里面的节点,则说明配置成功!

配置修改是实时生效的!

分布式表的创建

在主设备端将不再创建存储的数据表,但需要创建同名的分布式表。即把引擎改为分布式引擎,并配置分布式名称。

优缺点

该方案优点在于可将所有分片节点的数据集中在一起进行业务查询!

缺点就是,在分片节点中,如果1台节点发生故障导致无法连接,则整个分布式查询都会中断,无法查询!对于节点的状态要求比较严格!在实际场景中如果使用该方案,需对节点的状态进行监控,实时变更配置文件,保证分布式配置里面的节点都是可用的

相关的配置项

skip_unavailable_shards

启用或禁用跳过不可用的分片。如果分片的所有副本都不可用,则认为分片不可用。默认0,禁止跳过,可选值0、1

distributed_product_mode

更改分布式子查询的行为。

当查询包含分布式表的乘积,即当分布式表的查询包含分布式表的非GLOBAL子查询时,ClickHouse将应用此设置。

限制条件:

仅适用于IN和JOIN子查询。

仅当FROM部分使用包含多个分片的分布式表时。

如果子查询涉及一个包含多个分片的分布式表。

不用于远程功能。

可设置的值:

deny:默认值。 禁止使用这些类型的子查询(返回“ Double-distributed in / JOIN子查询被拒绝”异常)。

local:将子查询中的数据库和表替换为目标服务器(碎片)的本地查询,而保留普通的IN / JOIN。

global:用GLOBAL IN / GLOBAL JOIN替换IN / JOIN查询。

allow:允许使用这些类型的子查询。

send_progress_in_http_headers

在clickhouse-server响应中启用或禁用X-ClickHouse-Progress HTTP响应标头。默认0,可选0、1

replace_running_query

使用HTTP接口时,可以传递'query_id'参数。这是用作查询标识符的任何字符串。如果此时已存在来自具有相同query_id的相同用户的查询,则行为取决于replace_running_query参数:

0(默认值):引发异常(如果已经在运行具有相同“ query_id”的查询,则不允许运行查询)。

1 :取消旧查询,然后开始运行新查询。

上一篇:itseanPage博客主题 (2023-02-08)
下一篇:Clickhouse安装与部署(笔记) (2023-03-02)