zoukankan      html  css  js  c++  java
  • Clickhouse单机及集群部署详解

    一、ClickHouse简介

    ClickHouse是近年来备受关注的开源列式数据库,主要用于数据分析(OLAP)领域。目前国内社区火热,各个大厂纷纷跟进大规模使用:

    • 今日头条 内部用ClickHouse来做用户行为分析,内部一共几千个ClickHouse节点,单集群最大1200节点,总数据量几十PB,日增原始数据300TB左右。
    • 腾讯内部用ClickHouse做游戏数据分析,并且为之建立了一整套监控运维体系。
    • 携程内部从18年7月份开始接入试用,目前80%的业务都跑在ClickHouse上。每天数据增量十多亿,近百万次查询请求。
    • 快手内部也在使用ClickHouse,存储总量大约10PB, 每天新增200TB, 90%查询小于3S。

    在国外,Yandex内部有数百节点用于做用户点击行为分析,CloudFlare、Spotify等头部公司也在使用。

    二、ClickHouse指定版本单机安装与配置

    1、查看cpu是否支持sse4

    grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
    

    2、下载RPM离线安装包 

    (1)在线下载很慢,可以先下载离线rpm安装包,推荐到https://packagecloud.io/Altinity/clickhouse/下载对应的版本号。

    (2)在线下载RPM安装包

    sudo wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-client-19.17.4.11-1.el7.x86_64.rpm/download.rpm
    sudo wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-common-19.17.4.11-1.el7.x86_64.rpm/download.rpm
    sudo wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-common-static-19.17.4.11-1.el7.x86_64.rpm/download.rpm
    sudo wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-19.17.4.11-1.el7.x86_64.rpm/download.rpm
    sudo wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-test-19.17.4.11-1.el7.x86_64.rpm/download.rpm
    sudo wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-debuginfo-19.17.4.11-1.el7.x86_64.rpm/download.rpm

    后面两个RPM安装包可以不用下载

    3、使用rpm -ivh ./*.rpm 安装clickhouse,安装中可能会有依赖没有下载导致报错,安装完依赖继续安装,可以使用rpm -e *.rpm 移除已安装的安装包

    /etc/clickhouse-server   clickhouse服务的配置文件目录,包括:config.xml和users.xml
    /etc/clickhouse-client    clickhouse客户端的配置文件目录,里面只有一个config.xml并且默认为空
    /var/lib/clickhouse     clickhouse默认数据目录
    /var/log/clickhouse-server    clickhouse默认日志目录
    /etc/init.d/clickhouse-server   clickhouse启动shell脚本,用来方便启动服务的.
    /etc/security/limits.d/clickhouse.conf   最大文件打开数的配置,这个在config.xml也可以配置
    /etc/cron.d/clickhouse-server    clickhouse定时任务配置,默认没有任务,但是如果文件不存在启动会报错.
    /usr/bin    clickhouse编译好的可执行文件目录,主要有下面几个:
        clickhouse     clickhouse主程序可执行文件
        clickhouse-compressor
        clickhouse-client      是一个软链指向clickhouse,主要是客户端连接操作使用
        clickhouse-server     是一个软链接指向clickhouse,主要是服务操作使用

    4、配置clickhouse配置文件

    主要需要配置的文件是/etc/clickhouse-server/config.xml、/etc/clickhouse-server/users.xml

    (1)config.xml配置

    这部分配置clickhouse-server的日志存放目录以及http和tcp请求端口号

    配置clickhouse可以被远程ip访问

    这一部分是分别配置clickhouse的数据存放目录、临时文件存放目录、用户文件路径

    (2)users.xml

    <users></users>里面默认会有一个用户名为default的用户,密码默认为空,可以配置<password></password>设置用户密码

    新增加一个用户名为ck,密码为ckreadonly的用户,profile属性为readonly表示该用户是只读用户

    三、clickhosue单机在线安装最新版本clickhouse

    sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
    sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/clickhouse.repo
    sudo yum install clickhouse-server clickhouse-client
    sudo /etc/init.d/clickhouse-server start
    clickhouse-client

    按照上面步骤即可

    四、ClickHouse单机版连接与操作

    (1)启动clickhouse服务

    service clickhouse-server start/service clickhouse-server stop

    (2)启动clickhouse-client连接操作clickhouse

    clickhouse-client -h 172.16.2.161 -u default – password default

    (3)使用java操作clickhouse的jdbc驱动来访问clickhouse

    五、ClickHouse集群部署

    1、上面的clickhouse单机版安装比较容易,上面是从https://packagecloud.io/Altinity/clickhouse/下载的el7安装包,可能由于时间原因现在访问没有centos6的rpm包,所以在centos6上安装clickhouse的需要el6的rpm的安装包,可以从http://repo.yandex.ru/clickhouse/rpm/stable/x86_64/这里下载指定版本的clickhouse rpm64位包,主要是从该仓库中下载以下安装包:

    clickhouse-client-20.6.3.28-2.noarch.rpm
    clickhouse-common-static-20.6.3.28-2.x86_64.rpm
    clickhouse-server-20.6.3.28-2.noarch.rpm

    下载完毕后按照上面步骤二进行各个服务器节点的单机版本安装,对于配置config.xml和users.xml文件在一个节点配置后同步到其他集群节点中即可。

    2、部署zookeeper集群,在这里就不说了

    3、单机版和集群版的区别就是多了一个配置clickhouse分片和副本规则,创建配置文件/etc/metrika.xml,注意要在/etc目录下面

    <?xml version="1.0" encoding="utf-8"?>
    <yandex>
    <!-- 集群配置 -->
    <clickhouse_remote_servers>
    <perftest_3shards_1replicas>
    <!-- 数据分片1 -->
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>172.16.2.161</host>
    <port>9003</port>
    <user>default</user>
    <password>default</password>
    </replica>
    </shard>
    <!-- 数据分片2 -->
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>172.16.2.165</host>
    <port>9003</port>
    <user>default</user>
    <password>default</password>
    </replica>
    </shard>
    <!-- 数据分片3 -->
    <shard>
    <internal_replication>true</internal_replication>
    <replica>
    <host>172.16.2.241</host>
    <port>9003</port>
    <user>default</user>
    <password>default</password>
    </replica>
    </shard>
    </perftest_3shards_1replicas>
    </clickhouse_remote_servers>
    
    <zookeeper-servers>
    <node index="1">
    <host>172.16.2.232</host>
    <port>2181</port>
    </node>
    <node index="2">
    <host>172.16.2.233</host>
    <port>2181</port>
    </node>
    <node index="3">
    <host>172.16.2.234</host>
    <port>2181</port>
    </node>
    <node index="4">
    <host>172.16.2.235</host>
    <port>2181</port>
    </node>
    <node index="5">
    <host>172.16.2.236</host>
    <port>2181</port>
    </node>
    </zookeeper-servers>
    <macros>
    <shard>01</shard> <replica>172.16.2.161</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> <method>lz4</method> </case> </clickhouse_compression> </yandex>

    配置文件中配置的3分片1副本模式,配置完毕后同步到其他节点即可。

    4、按照步骤四里的方式在每一台集群节点上启动clickhouse服务并进入clickhouse-client客户端连接

    5、测试集群是否安装成功,使用select * from system.clusters

    出现这个说明安装成功,clickhouse tcp端口默认是9000我这因为端口占用所以修改成了9003端口了。

    create database jikewang on cluster perftest_3shards_1replicas;
    CREATE TABLE log_test ON CLUSTER perftest_3shards_1replicas
    (
        `ts` DateTime,
        `uid` String,
        `biz` String
    )
    ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/log_test', '{replica}')
    PARTITION BY toYYYYMMDD(ts)
    ORDER BY ts;

    以上代码为测试使用

    六、集群版clickhouse通过jdbc连接操作

  • 相关阅读:
    Input:type属性
    HttpServletRequest的方法详细说明
    leetcode 第一题 Two Num java
    python之路
    Elasticsearch template学习
    利用Supervisor来守护我们自己的进程
    安装与使用ansible-Centos6.5
    Elasticsearch的一个清理Index脚本
    用统计模拟的方法分析微信抢红包
    数据挖掘R与SQL
  • 原文地址:https://www.cnblogs.com/ya-qiang/p/13540016.html
Copyright © 2011-2022 走看看