更新时间:2024-04-29 GMT+08:00

ClickHouse快速入门

ClickHouse为您提供方便易用、灵活稳定的云端ClickHouse托管服务。只需要几分钟,便可完成海量数据查询数据仓库的搭建,简单轻松地完成对数据的实时查询分析,提升数据价值挖掘的整体效率。云数据仓库ClickHouse是一种基于MPP(大规模并行处理)架构的数仓服务,基于ClickHouse优异的查询性能,查询效率数倍于传统数据仓库。

背景信息

假定这是一张学生成绩表信息,使用客户端实现业务操作:

  • 创建用户信息表demo_t。
  • 在用户信息中新增访问性别、科目。
  • 根据用户user_id查询用户的基本信息。
  • 业务结束后,删除用户信息表。
    表1 成绩表

    user_id

    name

    sex

    subject

    score

    time

    10000

    A

    1

    语文

    89

    2023-07-01 09:00:00

    10001

    B

    0

    数学

    132

    2023-07-01 09:00:00

    10002

    C

    0

    数学

    90

    2023-07-02 09:00:00

    10003

    D

    0

    英语

    120

    2023-07-01 14:00:00

    10004

    E

    1

    语文

    101

    2023-07-01 09:00:00

    10005

    F

    1

    语文

    110

    2023-07-01 09:00:00

    表2 参数说明

    参数

    说明

    10000

    用户id,每个用户唯一识别id。

    2023-07-01 09:00:00

    数据入库时间。

    A

    学生姓名。

    1

    性别女(0代表男生)。

    语文

    代表学科。

    89

    代表学成绩。

步骤一:购买ClickHouse集群

  1. 登录表格存储服务控制台。
  2. 在控制台左上角选择区域。
  3. 单击“集群管理”进入集群管理界面。
  4. 单击集群管理界面右上角的“购买集群”,进入购买集群页面配置相关参数。
  5. 单击“立即购买”,进入确认规格页面,确认无误,单击“完成”。
  6. 返回集群列表查看创建集群进度,当集群状态为“服务中”时,集群创建成功,详细参见创建ClickHouse集群

步骤二:下载ClickHouse客户端

  1. 登录表格存储服务控制台。
  2. 在控制台左上角选择区域。
  3. 单击“帮助”,进入帮助页面。
  4. 单击帮助页面右侧“常用链接 > ClickHouse客户端下载”,下载客户端安装包。

步骤三:准备弹性云服务

  1. 购买弹性云服务器。
    1. 登录ECS控制台。
    2. 单击管理控制台左上角的,选择区域。
    3. 单击左侧的服务列表图标,选择“计算 > 弹性云服务器 ECS”。
    4. 单击“购买弹性云服务器”。
    5. 配置弹性云服务器参数。
      1. 选择CPU架构和规格。
        图1 规格图
      2. 选择镜像和磁盘规格。
        图2 选择镜像和磁盘规格
  2. 单击下一步:网络配置。
    1. 选择VPC和安全组。
      图3 VPC图
    2. 选择购买弹性公网IP,公网带宽选择“按流量计费”。
      图4 公网IP图
  3. 单击下一步“高级配置”。

    配置云服务器名称和密码。

    图5 高级配置
  4. 单击下一步“确认配置”,确认配置参数。
    图6 确认配置参数页面
  5. 选择“企业项目”,勾选“协议”,确认配置信息后,单击“立即购买”。
  6. 返回弹性云服务器列表页面,查看弹性云服务器的创建进度。

    当弹性云服务器的状态为“运行中”时,表示创建完成。

步骤四:安装ClickHouse客户端

用户在弹性云服务器里可以通过手动安装客户端的方法安装客户端。

  1. 使用SSH登录工具(如PuTTY)通过“弹性IP”远程登录到Linux弹性云服务器。

    具体登录操作步骤请参见《弹性云服务器用户指南》中的“登录Linux弹性云服务器 > SSH密码方式登录”。

  2. 步骤二中下载的客户端传输到Linux弹性云服务器。
  3. 安装客户端,连接集群。
    1. 使用SSH登录工具,通过弹性IP远程登录到Linux弹性云服务器。

      具体登录操作步骤请参见《弹性云服务器用户指南》中的“ SSH密码方式登录”。

    2. 进入SSH工具的根目录。
      cd /
    3. 在根目录中新建一个文件夹。
      mkdir 文件夹名
    4. 进入新建的目录中。
      cd /文件夹名/
    5. 将客户端放在新建的目录下。
    6. 解压客户端。
      tar  -zxf   客户端包名
    7. 加载so。
      sh install.sh
    8. 进入bin目录,加权限。
      cd bin/

      加权限。

      chmod 700 clickhouse
    9. 然后执行以下命令连接ClickHouse集群,端口
      非安全集群连接命令
      ./clickhouse client --host 集群内网地址   --port 端口 --user admin --password password

      安全集群连接命令,详细操作请参见安全集群连接步骤

      ./clickhouse client --host 集群内网地址   --port 端口 --user admin --password password --secure --config-file /root/config.xml
      • 集群内网地址:集群详情页面中集群访问地址,这里替换成您自己购买的集群的访问地址。
      • password为您购买集群时设置的密码,如果有特殊符号,特殊符号前面需要\进行转义,如果密码整体用单引号括起来,则特殊字符不需要转义。
      表3 自定义安全规则组

      方向

      策略

      协议端口/范围

      类型

      目的/源地址

      用途

      出方向

      允许

      全部

      IPv4/IPv6

      0.0.0.0/0

      出方向放行。

      入方向

      允许

      8123

      CloudTable ClickHouse集群所在的安全组。

      ClickHouse的Http协议端口。

      允许

      9000

      ClickHouse的TCP协议端口。

      允许

      8443

      ClickHouse的Https协议端口。

      允许

      9440

      ClickHouse的安全TCP安全端口。

步骤五:插入数据

执行以下命令,使用ClickHouse集群快速创建数据表,并对表数据进行查询。
  1. 创建数据库。
    create database DB_demo;
  2. 使用数据库。
    use DB_demo;
  3. 创建表。
    create table DB_demo_t(user_id Int32,name String,sex Tinyint ,subject String,score Int32,time datetime)engine=TinyLog;
  4. 插入数据。
    insert into DB_demo_t(user_id,name,sex,subject,score,time) values('10000','A','1','语文','89','2023-07-01 09:00:00');
    insert into DB_demo_t(user_id,name,sex,subject,score,time) values('10001','B','0','数学','132','2023-07-01 09:00:00');
    insert into DB_demo_t(user_id,name,sex,subject,score,time) values('10002','C','0','数学','90','2023-07-02 09:00:00');
    insert into DB_demo_t(user_id,name,sex,subject,score,time) values('10003','D','0','英语','120','2023-07-01 14:00:00');
    insert into DB_demo_t(user_id,name,sex,subject,score,time) values('10004','E','1','语文','101','2023-07-01 09:00:00');
    insert into DB_demo_t(user_id,name,sex,subject,score,time) values('10005','F','1','语文','110','2023-07-01 09:00:00');
  5. 查询数据。
    • 查询导入的数据。
      host-172-16-13-95 :) select * from DB_demo_t;
      SELECT *
      FROM DB_demo_t
      Query id: 4e119f77-0592-4131-bbe2-31f42bc069a1
      ┌─user_id─┬─name─┬─sex─┬─subject─┬─score─┬────────────────time─┐
      │   10000 │ A    │   1 │ 语文   │    89 │ 2023-07-01 09:00:00 │
      │   10001 │ B    │   0 │ 数学   │   132 │ 2023-07-01 09:00:00 │
      │   10002 │ C    │   0 │ 数学   │    90 │ 2023-07-02 09:00:00 │
      │   10003 │ D    │   0 │ 英语   │   120 │ 2023-07-01 14:00:00 │
      │   10004 │ E    │   1 │ 语文   │   101 │ 2023-07-01 09:00:00 │
      │   10005 │ F    │   1 │ 语文   │   110 │ 2023-07-01 09:00:00 │
      └─────────┴──────┴─────┴────────┴───────┴─────────────────────┘
      6 rows in set. Elapsed: 0.004 sec.
  6. 删除数据。
    • 删除表。
      drop table DB_demo_t;
    • 删除数据库。
      drop database DB_demo;