更新时间:2024-10-31 GMT+08:00

导入并配置ClickHouse样例工程

背景信息

获取ClickHouse开发样例工程,将工程导入到IntelliJ IDEA开始样例学习。

前提条件

确保本地PC的时间与集群的时间差要小于5分钟,若无法确定,请联系系统管理员。集群的时间可通过FusionInsight Manager页面右下角查看。

操作场景

ClickHouse针对多个场景提供样例工程,帮助客户快速学习ClickHouse工程。

操作步骤

  1. 参考获取MRS应用开发样例工程,获取样例代码解压目录中“src”目录下的样例工程文件夹“clickhouse-examples”以及Maven相关配置。
  2. 在应用开发环境中,导入样例工程到IntelliJ IDEA开发环境。

    1. 在IDEA界面选择“File > New > Project from Existing Sources”。

    2. 在显示的“Select File or Directory to Import”对话框中,选择“clickhouse-examples”文件夹中的“pom.xml”文件,单击“OK”。
    3. 确认后续配置,单击“Next”,如无特殊需求,相关配置使用默认值即可。
    4. 选择推荐的JDK版本,单击“Finish”完成样例工程导入。

  3. 工程导入完成后,修改样例工程的“conf”目录下的“clickhouse-example.properties”文件,根据实际环境信息修改相关参数。

    loadBalancerIPList=
    sslUsed=false
    loadBalancerHttpPort=21425
    loadBalancerHttpsPort=21426
    CLICKHOUSE_SECURITY_ENABLED=true
    user=
    #密码明文存储存在安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全
    password=
    clusterName=default_cluster
    databaseName=testdb
    tableName=testtb
    batchRows=10000
    batchNum=10

    表1 配置说明表

    配置名称

    默认值

    含义

    loadBalancerIPList

    -

    必填参数,配置为LoadBalance的IP列表。

    登录Manager,选择“集群 > 服务 > ClickHouse > 实例”,查看所有ClickHouseBalancer实例对应的业务IP地址。

    多个IP地址使用逗号分隔,例如配置为“10.10.10.100,10.10.10.101”。

    sslUsed

    false

    是否启用ssl加密,安全模式集群建议配置为“true”。

    loadBalancerHttpPort

    21425

    LoadBalance的HTTP端口。

    登录FusionInsight Manager,选择“集群 > 服务 > ClickHouse > 实例”,单击对应的ClickHouseBalancer实例,选择“实例配置 > 全部配置”,搜索“lb_http_port”并获取其参数值,默认为21425。

    loadBalancerHttpsPort

    21426

    LoadBalance的HTTPS端口,若sslUsed配置为true,则此参数不允许为空。

    登录FusionInsight Manager,选择“集群 > 服务 > ClickHouse > 实例”,单击对应的ClickHouseBalancer实例,选择“实例配置 > 全部配置”,搜索“lb_https_port”并获取其参数值,默认为21426。

    CLICKHOUSE_SECURITY_ENABLED

    true

    ClickHouse安全模式开关,安全模式集群时该参数固定为true。

    user

    无默认值

    表1中已准备好的开发用户。

    password

    无默认值

    开发用户对应的密码。

    密码明文存储存在安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。

    说明:

    如果是在Manager上新建的用户,首次使用前需要修改初始密码。

    clusterName

    default_cluster

    ClickHouse逻辑集群名称,保持默认值。

    databaseName

    testdb

    样例代码工程中需要创建的数据库名称,可以根据实际情况修改。

    tableName

    testtb

    样例代码工程中需要创建的表名称,可以根据实际情况修改。

    batchRows

    10000

    一个批次写入数据的条数。

    batchNum

    10

    写入数据的总批次。

    ClickHouse虽有集群能力,但没有统一的访问入口,客户端需要直接感知集群内所有的节点,易用性不好。ClickHouse提供了基于Loadbalance部署架构,可以将用户访问流量自动分发到多台后端节点,扩展系统对外的服务能力,实现更高水平的应用容错。客户端应用请求集群时,使用基于Nginx的ClickHouseBalancer控制节点来进行流量分发,无论集群写入的负载、读的负载以及应用接入的高可用性都具备了有力的保障。