美文网首页
clickhouse-部署详解

clickhouse-部署详解

作者: 做量化的程序员 | 来源:发表于2020-04-28 16:53 被阅读0次

    Clickhouse 安装部署

    部署为3个节点的集群,数据无副本。单机则不需要配置metrika.xml文件即可。

    环境
    • centos7
    • ClickHouse 19.14
    • 可以采用安装yum源的方式,但是下载较慢,不如自己下载需要的RPM,直接安装,官方yum源安装方式参见
    https://clickhouse.tech/docs/en/getting_started/install/
    
    
    RPM方式
    • 下载地址
    https://packagecloud.io/altinity/clickhouse
    
    • 需要的包
     # 需要的依赖 yum install -y libicu unixODBC
    clickhouse-server-common-*
    clickhouse-server-*
    clickhouse-common-static-*
    clickhouse-client-*
    
    • 安装下载的包


      image
    rpm -ivh ./* 
    

    编写配置文件

    • RPM安装之后,默认会在 /etc/clickhouse-server/ 创建基础配置文件,我们依然使用这个目录作为配置文件目录即可,当然也可以将自己新建目录,启动clickhouse-server 的时候知道配置文件路径即可,这里采用默认路径来管理配置文件,需要编写3个配置文件,config.xml,metrika.xml,users.xml, 其中metrika.xmlusers.xml 是为了方便管理配置自己创建的,在config.xml中引用这两个配置文件即可
    • 具体配置文件信息在集群目录下查看即可,这里选择一台机器配置放置如下


    config.yaml

    主要配置服务端口、ip、文件存储目录,系统配置、zk配置等参数。本文不涉及zk配置。并且开启query_log,方便后期做监控。

    文件中注释很详细,根据需要配置即可。

    metrika.yaml

    集群配置、压缩算法配置。本示例集群名为default_cluster,可定义多个。名称自定义,创建分布式表时指定对应的集群名称实现灵活使用数据。

    
    <yandex>
    <!-- 集群配置 -->
    <clickhouse_remote_servers>
        <default_cluster>
            <!-- 数据分片1 -->
            <shard>
     <internal_replication>false</internal_replication>
                <replica>
                    <host>机器host</host>
                    <port>9000</port>
       <user>账号</user>
                    <password>密码</password>
                </replica>
            </shard>
            <!-- 数据分片2 -->
            <shard>
               <replica>
                    <host>机器host</host>
                    <port>9000</port>
       <user>账号</user>
                    <password>密码</password>
                </replica>
            </shard>
            <!-- 数据分片3 -->
            <shard>
                <replica>
                    <host>机器host</host>
                    <port>9000</port>
      <user>账号</user>
                    <password>密码</password>
                </replica>
            </shard>
        </default_cluster>
    </clickhouse_remote_servers>
    
    <macros>
        <cluster>default_cluster</cluster>
        <replica>机器host‘</replica>
        <shard>1</shard>
    </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>
    
    users.xml
    • 主要定义用户名密码<users>标签中配置。

    结构资料:

    <users>
        <!-- If user name was not specified, 'default' user is used. -->
        <user_name>
            <password></password>
            <!-- Or -->
            <password_sha256_hex></password_sha256_hex>
    
            <networks incl="networks" replace="replace">
            </networks>
        
            <!-- 指定引用profiles配置 -->
            <profile>profile_name</profile>
          
             <!-- 指定引用quotas配置 -->
            <quota>default</quota>
    
            <databases>
                <database_name>
                    <table_name>
                        <filter>expression</filter>
                    <table_name>
                </database_name>
            </databases>
        </user_name>
        <!-- Other users settings -->
    </users>
    

    密码可以以明文或SHA256(十六进制格式)指定
    不建议使用明文;

    • 铭文密码把密码写入password标签中
    • 要使用其SHA256散列分配密码,请将其放置在 password_sha256_hex标签中
    密码生成示例:`PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
    

    结果的第一行是密码。 第二行是相应的SHA256哈希

    • 用户在使用时的配置参数<profiles>中配置。

    官方配置文档介绍很详细,在实际使中还需要自己优化。自己就踩过不少坑,以后有机会和大家分享。

    load_balancing指定用于分布式查询处理的副本选择算法

    *   随机(默认情况下)load_balancing = random
    *   最近的主机名 load_balancing = nearest_hostname
    *   按顺序 load_balancing = in_order
    *   第一次或随机 load_balancing = first_or_random
    
    • 配额设置,单个用户最大能用的资源多少<quotas>。配额文档

    start.sh (启动脚本由supervisor调用)

    #!/bin/sh
    TZ=Asia/Shanghai clickhouse-server --config-file=/etc/clickhouse-server/config.xml --pid-file=/etc/clickhouse-server/clickhouse.pid
    

    Supervisor 管理clickhouse

    • 安装部署
    设置
    # 具体 nofile大小,根据你们实际情况定
    echo 12553500 > /proc/sys/fs/file-max
    echo 12553500 > /proc/sys/fs/nr_open
    vi /etc/security/limits.conf 加入
    * soft nofile 1000000
    * hard nofile 1000000
     echo 0 | sudo tee /proc/sys/vm/overcommit_memory
     echo 'never' | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
    vi /usr/lib/systemd/system/supervisord.service 加入
    LimitNOFILE=409600
    LimitNPROC=409600
    
    
    yum安装
    yum install epel-release
    yum install -y supervisor
    systemctl enable supervisord # 开机自启动
    systemctl start supervisord  # 启动supervisord服务
    
    Supervisor管理clickhouse进程配置
    • 进入/etc/supervisord.d/ 目录下创建如下配置文件
    • clickhouse.ini
    [program:clickhouse]
    redirect_stderr=true
    stdout_logfile=/var/log/supervisor/clickhouse-server.log
    stdout_logfile_maxbytes=10MB
    stdout_logfile_backups=10
    command= sh /etc/clickhouse-server/start.sh
    timeout = 60*60
    user=root
    autostart=true
    autorestart=true
    startsecs=10
    startretries=1
    stopasgroup=true
    killasgroup=true
    environment=LC_ALL='en_US.UTF-8',LANG='en_US.UTF-8',LC_LANG='en_US.UTF-8'
    
    • 执行命令启动Clickhouse
    supervisorctl reread    
    supervisorctl update clickhouse
    
    • clicent 连接 默认default用户|非默认 -u
    clickhouse-client --host 127.0.0.1 --password yourpass --port 9000 -m
    
    • 日志的分布式表
      以后做clickhouse监控可以用到。
      根据system.query_log表结构创建query_log_all表。
    CREATE TABLE system.query_log_all AS system.query_log ENGINE = Distributed(default_cluster, system, query_log);
    

    结语

    • 至此Clickhouse在其中一台机器上就安装完毕了,其他各台机器同样的方式安装即可,上边列出的配置信息,是列出了三个分片,无副本,不依赖zk。

    相关文章

      网友评论

          本文标题:clickhouse-部署详解

          本文链接:https://www.haomeiwen.com/subject/pbmaihtx.html