clickhouse

2021/03/21

参考资料

  • 官网地址:https://clickhouse.com/
  • 下载地址:
  • 文档地址:https://clickhouse.tech/docs/zh/
    • https://clickhouse.com/docs/zh
  • OLAP系列之分析型数据库clickhouse https://www.cnblogs.com/yangmeichong/category/2328488.html

clickhouse 安装

前提:

  • 计划安装clickhouse的机器需要设置 FQDN ,且均需要在 /etc/hosts 下添加其他节点的 FQDN
  • zk集群部署

zookeeper 集群安装和配置

部署步骤
* 下载 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.2/zookeeper-3.6.2.tar.gz
* 解压至  /opt/zookeeper/apache-zookeeper-3.6.2-bin
* 新建目录 /opt/zookeeper/zk_data/data   /opt/zookeeper/zk_data/log
* 配置 /opt/zookeeper/apache-zookeeper-3.6.2/conf/zoo.cfg

tickTime=2000
initLimit=30000
syncLimit=10
maxClientCnxns=2000
autopurge.snapRetainCount=10
autopurge.purgeInterval=1
preAllocSize=131072
snapCount=3000000

maxSessionTimeout=60000000
dataDir=/opt/zookeeper/zk_data/data
dataLogDir=/opt/zookeeper/zk_data/log
server.1={host1}:2888:3888
server.2={host2}:2888:3888
server.3={host3}:2888:3888

* 新建 文件/opt/zookeeper/zk_data/data/myid  值为 server.${num} 中的 num  
  `echo $num > /opt/zookeeper/zk_data/data/myid`

* 环境变量
export ZOOKEEPER_HOME=/opt/zookeeper/apache-zookeeper-3.6.2-bin  
export PATH=$PATH:$ZOOKEEPER_HOME/bin

* 依次启动  `zkServer.sh start`

clickhouse部署步骤

  • 参考网址
  • https://clickhouse.tech/
  • https://clickhouse.tech/docs/zh/
  • https://github.com/ClickHouse
* 下载
  wget https://github.com/ClickHouse/ClickHouse/releases/download/v20.11.3.3-stable/clickhouse-client-20.11.3.3-2.noarch.rpm
  wget https://github.com/ClickHouse/ClickHouse/releases/download/v20.11.3.3-stable/clickhouse-common-static-20.11.3.3-2.x86_64.rpm
  wget https://github.com/ClickHouse/ClickHouse/releases/download/v20.11.3.3-stable/clickhouse-common-static-dbg-20.11.3.3-2.x86_64.rpm
  wget https://github.com/ClickHouse/ClickHouse/releases/download/v20.11.3.3-stable/clickhouse-server-20.11.3.3-2.noarch.rpm
  wget https://github.com/ClickHouse/ClickHouse/releases/download/v20.11.3.3-stable/clickhouse-test-20.11.3.3-2.noarch.rpm

  ## 可能的依赖(视情况而定,无需全部安装)
  yum -y install expect perl-JSON-XS perl-Data-Dumper python3
  
  或者(视情况而定,无需全部安装)
  yum install libicu unixODB
  yum install perl-JSON-XS -y
  yum -y install autoconf
  yum install expect

* 依次安装,当缺少依赖时,需参考 `可能的依赖`
  rpm -ivh clickhouse-common-static-20.11.3.3-2.x86_64.rpm
  rpm -ivh clickhouse-common-static-dbg-20.11.3.3-2.x86_64.rpm
  rpm -ivh clickhouse-server-20.11.3.3-2.noarch.rpm
  rpm -ivh clickhouse-test-20.11.3.3-2.noarch.rpm
  rpm -ivh clickhouse-client-20.11.3.3-2.noarch.rpm
  
* 集群配置
  cd /etc/clickhouse-server

  ## 1. vim config.xml, 文件权限755, 参考资料:https://www.cnblogs.com/xibuhaohao/articles/14474697.html
    <logger> 标签内为日志相关配置,现网根据实际情况和磁盘情况配置相应的日志级别和日志保存路径,最好使用容量较大的磁盘
    
    <interserver_http_host>${填 hostname -f 返回的值,不存在需建立}</interserver_http_host>
        
    <!--设置时区-->
    <timezone>Asia/Shanghai</timezone>
    
    <!--集群相关的外部配置文件,不存在则新建此文件-->
    <include_from>/etc/clickhouse-server/metrika.xml</include_from>
    
    <!--TCP端口,按需修改,此处修改为 24001-->
    <tcp_port>24001</tcp_port>
    <!--备份间数据交互端口-->
    <interserver_http_port>25001</interserver_http_port>
    <!--数据存储目录, 最好使用容量较大的磁盘,磁盘路径用户设置为 clickhouse -->
    <path>/var/lib/clickhouse/</path>
     <!--查询时临时数据文件存储目录,最好使用容量较大的磁盘, 磁盘路径用户设置为 clickhouse -->
    <tmp_path>/var/lib/clickhouse/tmp/</tmp_path>  
    <!-- clickhouse_remote_servers 来源  metrika.xml
    同时, remote_servers 标签内的集群配置可以删除
    --> 
    <remote_servers incl="clickhouse_remote_servers" />
   
    <!-- 访问地址 -->
    <listen_host>0.0.0.0</listen_host>
   更好的配置如下: 
    <listen_host>::</listen_host>
   
    <!--
     Path in ZooKeeper to queue with DDL queries
    ddl_101_102 可以替换或者不配置 '/ddl_101_102',
    此处使用 '/ddl_101_102' 因开发环境集群的机器ip为 x.x.x.101 和 x.x.x.102
     -->
    <path>/clickhouse/task_queue/ddl_101_102</path>
    <!-- 值0表示您可以删除所有表而不受任何限制。1 表示超过50G的表无法删除 -->
    <max_table_size_to_drop>0</max_table_size_to_drop>
    
  ## 2. vim /etc/metrika.xml,文件权限777
    <yandex>
        <!-- ck集群节点 -->
        <clickhouse_remote_servers>
            <!-- 1个分片名称 , 此名称较重要,可不修改 -->
            <perftest_2shards_2replicas>
                <shard>
                    <!-- 权重 -->
                    <weight>1</weight>
                    <internal_replication>true</internal_replication>
                    <replica>
                        <host>集群机器1 HOST host -f </host>
                        <!-- config.xml 的 tcp_port -->
                        <port>24001</port>
                    </replica>
                    <replica>
                        <host>集群机器2 HOST host -f </host>
                        <port>24001</port>
                    </replica>
                </shard>
            </perftest_2shards_2replicas>
        </clickhouse_remote_servers>
    
        <!--zookeeper相关配置-->
        <zookeeper-servers>
            <node index="1">
                <host>zk_host1</host>
                <port>2181</port>
            </node>
            <node index="2">
                <host>zk_host2</host>
                <port>2181</port>
            </node>
            <node index="3">
                <host>zk_host1</host>
                <port>2181</port>
            </node>
        </zookeeper-servers>
    
        <macros>
            <!-- 同一个shard中,分片id相同,此处是 集群机器1+集群机器2, 都可配置为 
            shard_${host1 ip 第四段}_${host2 ip 第四段}
            -->
            <shard>shard_101_102</shard>
            <!--当前节点主机名 , 每个主机的配置值不一样-->
            <replica>{取 host -f 返回值}</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>
                <!--压缩算法lz4压缩比zstd快, 更占磁盘-->
                <method>lz4</method>
            </case>
        </clickhouse_compression>
    </yandex>
     
   修改 /etc/metrika.xml 权限  
   `chown clickhouse:clickhouse /etc/clickhouse-server/metrika.xml`  
   root启动的话,需要修改vim /usr/lib/systemd/system/clickhouse-server.service 内容,user、group改为root

  ## 3. user.xml   
   user.xml 中已经包含默认用户  default , 此处为方便管理, 增加 test 账号, 以便 使用 jdbc 连接  
   增加位置在  <users></users> 标签内, 与用户 default 的标签 <default></default> 平级。
      <users>
        <!-- 用户  test 的相关配置 -->
        <test>
            <!-- 使用默认值 -->
            <quota>default</quota>
            <!-- 使用默认值 -->
            <profile>default</profile>
            <networks incl="networks" replace="replace">
                <ip>::/0</ip>
            </networks>
            <!-- 密码可自由配置 -->
            <password>123456</password>
        </test>
      </users>
* 创建数据目录:mkdir /data/clickhouse, 赋权给clickhouse用户,
    chown clickhouse:clickhouse /data/clickhouse
    
* 集群启动, 依次使用 `systemctl clickhouse-server start` 启动集群 

* 其他命令
    停止集群单实例 systemctl clickhouse-server stop
    重启集群单实例 systemctl clickhouse-server restart

* 检验集群
   clickhouse-client -m --host 某集群端口 --port ${config.xml 的 tcp_port}
   使用    select * from system.clusters; 检查集群信息
 
* 配置说明
日志地址 /var/log/clickhouse-server/
基本配置 /etc/clickhouse-server/config.xml
集群配置 /etc/metrika.xml
用户配置 /etc/clickhouse-server/users.xml

* 注意配置文件权限755或者给到程序启动的用户

问题记录

1.常用命令

## 链接
clickhouse-client --port 9000 -h 127.0.0.1 -m
clickhouse-client -u default --password 123456 --port 9000 -h 127.0.0.1 -m

## 查看集群节点
select * from system.clusters   //perftest_1shards_2replicas

## 单个节点查询语句,仅查询当前节点上的readonly表
select table,zookeeper_path,replica_path from system.replicas where is_readonly;

##  
select hostname() AS host,database,table,is_session_expired,is_readonly,future_parts,
zookeeper_exception
FROM clusterAllReplicas('perftest_1shards_2replicas',system.replicas) WHERE is_readonly ORDER BY host;

SELECT * FROM system.zookeeper WHERE path = '/clickhouse'

## 退出
exit; 

8123 端口:这是 ClickHouse 的 HTTP 端口,用于提供基于 HTTP 的查询接口。通过该端口可以使用 HTTP 请求与 ClickHouse 服务器进行交互执行查询、获取查询结果等操作。
9000 端口:这是 ClickHouse 的默认服务器端口,用于客户端与 ClickHouse 服务器进行通信。客户端应用程序可以通过该端口连接到 ClickHouse 服务器,并执行查询、插入和更新等数据库操作。
9004 端口:这是 ClickHouse 的分布式表引擎(Distributed Table Engine)使用的端口。当 ClickHouse 使用分布式表引擎进行数据分片和分布式查询时,节点之间会通过该端口进行通信。
9005 端口:这是 ClickHouse 的分布式表引擎(Distributed Table Engine)使用的备份(Replica)端口。当 ClickHouse 使用分布式表引擎进行数据备份和冗余存储时,节点之间会通过该端口进行数据同步和复制。
9009 端口:这是 ClickHouse 的远程服务器管理(Remote Server Management)端口。通过该端口,可以使用 ClickHouse 客户端工具(如 clickhouse-client)远程管理 ClickHouse 服务器,包括执行管理命令、配置修改等操作

2.ClickHouse-常见问题 https://blog.csdn.net/qq_38304392/article/details/125299917

3.OLAP系列之分析型数据库clickhouse备份方式(五) https://www.cnblogs.com/yangmeichong/p/17577565.html

Post Directory

扫码关注公众号:暂无公众号
发送 290992
即可立即永久解锁本站全部文章