Operator方式部署ClickHouse

Operator方式部署ClickHouse

简介


什么是 ClickHouse

ClickHouse 全称 Click Stream, Data WareHouse,是一个用于联机分析 (OLAP) 的列式数据库


管理系统 (DBMS)。由俄罗斯本土搜索引擎企业 Yandex 公司为了自己公司自家的 Web 流量分析产品 Yandex.Metrica 开发,后来经过演变,逐渐形成为现在的 ClickHouse。

ClickHouse 的优缺点

  • ClickHouse 的优点

ClickHouse 具有 ROLAP、在线实时查询、完整的 DBMS 功能支持、列式存储、不需要任何数据预处理、支持批量更新、拥有非常完善的 SQL 支持和函数、支持高可用、不依赖 Hadoop 复杂生态、开箱即用等许多特点。

在 1 亿数据集体量的情况下,ClickHouse 的平均响应速度是 Vertica 的 2.63 倍、InfiniDB 的 17 倍、MonetDB 的 27 倍、Hive 的 126 倍、MySQL 的 429 倍以及Greenplum 的 10 倍。测试结果:https://clickhouse.tech/benchmark/dbms/。

ClickHouse 虽然有这么多特点和优点,但显然也存在一些劣势:

  1. 没有完整的事务支持;

  2. 稀疏索引导致 ClickHouse 不擅长细粒度或者 key-value 类型数据的查询需求;

  3. 缺少高频率,低延迟的修改或删除已存在数据的能力。仅能用于批量删除或修改数据;

  4. 不擅长 join 操作,且语法特殊;

  5. 由于采用并行处理机制,即使一个查询也会使用一半 CPU 资源,所以不支持高并发




部署clickhouse operator


下载源码

  • • 项目地址

git clone https://github.com/Altinity/clickhouse-operator.git
  • • 镜像

# CRD镜像
vim ./clickhouse-operator-master/deploy/operator/clickhouse-operator-install-bundle.yaml
altinity/clickhouse-operator:0.17.0
altinity/metrics-exporter:0.17.0

# ClickHouse镜像
yandex/clickhouse-server:20.7

registry-vpc.cn-zhangjiakou.aliyuncs.com/lc-sc/clickhouse-operator:0.17.0
registry-vpc.cn-zhangjiakou.aliyuncs.com/lc-sc/metrics-exporter:0.17.0
registry-vpc.cn-zhangjiakou.aliyuncs.com/lc-sc/clickhouse-server:20.7

安装CRD

注:默认安装于kube-system空间

安装

1.进入工作目录
cd ./clickhouse-operator-master/deploy/operator

2.编辑配置文件,可自定义命名空间(卸载时需保持空间一致)
vim clickhouse-operator-install.sh

3.执行安装脚本
./clickhouse-operator-install.sh

卸载

  • • 指定OPERATOR_NAMESPACE后卸载,若不是kube-system,将会直接删除NAMESPACE,

./clickhouse-operator-delete.sh

安装ClickHouse集群

简单示例

  • • 进入工作目录

cd /clickhouse-operator-master/docs/chi-examples
  • • 部署安装

kubectl apply -f 01-simple-layout-02-1shard-2repl.yaml -n ck
  • • 更改Service

kubectl edit svc -n ck clickhouse-simple-01

去掉本地连接限制
将LoadBalancer改为Nodeport(非必须),并修改nodePort端口
  • • 查看集群状态

查看CRD
kubectl get ClickHouseInstallation -n ck
  • • 连接

连接地址:IP:NodePort
默认帐号密码:clickhouse_operator/clickhouse_operator_password
  • • 卸载

kubectl delete ClickHouseInstallation -n ck <NAME>

自定义安装

自定义存储,Service,集群规模,密码等

自定义Service

spec:
  defaults:
    templates:
      serviceTemplate: svc-template
  templates:
    serviceTemplates:
      - name: svc-template
        spec:
          ports:
            - name: http
              port: 8123
              nodePort: 31023
            - name: tcp
              port: 9000
              nodePort: 31090
          type: NodePort

自定义密码

  • • 生成 sha256sum的Hash值

da14f14a91a3eea9@Dev
PASSWORD=1f197c8508eb2da2@Dev; echo "$PASSWORD"; 
echo -n "$PASSWORD" | sha256sum | tr -d '-'



开发帐号
clickhouse_operator: da14f14a91a3eea9@Dev
002670a5d9dcf17207b916619ab2b2c4d9b6f0aee6c7a2018cc6fb3f70138415

管理员帐号
admin: 1f197c8508eb2da2@Dev
f321c64f4ac462975cf96fb9b89d70d8c10ebc6f29a80b3f97d39c271e1e5d1c
apiVersion: clickhouse.altinity.com/v1
kind: ClickHouseInstallation
metadata:
  name: "settings-03"
spec:
  configuration:
    users:
      clickhouse_operator/password_sha256_hex: 002670a5d9dcf17207b916619ab2b2c4d9b6f0aee6c7a2018cc6fb3f70138415
      admin/password_sha256_hex: f321c64f4ac462975cf96fb9b89d70d8c10ebc6f29a80b3f97d39c271e1e5d1c
      admin/networks/ip: "127.0.0.1/32"
      admin/profile: default
      admin/quota: default

自定义ClickHouseInstallation

  • • 参考04-replication-zookeeper-04-medium-AWS-persistent-volume.yaml

vim 00-replication-zookeeper-04-medium-AWS-persistent-volume.yaml
apiVersion: "clickhouse.altinity.com/v1"
kind: "ClickHouseInstallation"
metadata:
  name: "repl-04"
spec:
  defaults:
    templates:
      serviceTemplate: svc-template
  configuration:
    zookeeper:
      nodes:
        - host: zookeeper.ck
          port: 2181
    clusters:
      - name: replcluster
        templates:
          podTemplate: clickhouse-with-volume-template
        layout:
          shardsCount: 3
          replicasCount: 2
  templates:
    serviceTemplates:
      - name: svc-template
        spec:
          ports:
            - name: http
              port: 8123
              nodePort: 31023
            - name: tcp
              port: 9000
              nodePort: 31090
          type: NodePort
    podTemplates:
      - name: clickhouse-with-volume-template
        spec:
          containers:
            - name: clickhouse-pod
              image: yandex/clickhouse-server:20.7
              volumeMounts:
                - name: data
                  mountPath: /var/lib/clickhouse
              resources:
                limits:
                  memory: '4Gi'
                  cpu: '2'
                requests:
                  memory: '1Gi'
                  cpu: '0.5'
    volumeClaimTemplates:
      - name: data
        reclaimPolicy: Retain
        spec:
          # no storageClassName - means use default storageClassName
          storageClassName: alicloud-nas
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 10Gi
kubectl apply -f 00-replication-zookeeper-04-medium-AWS-persistent-volume.yaml

Operator方式部署ClickHouse

原文始发于微信公众号(背带裤的云原生):Operator方式部署ClickHouse

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/218733.html

(1)
青莲明月的头像青莲明月

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!