
# 导入并配置ClickHouse样例工程
#### 背景信息
获取ClickHouse开发样例工程，将工程导入到IntelliJ IDEA开始样例学习。
#### 前提条件
确保本地PC的时间与集群的时间差要小于5分钟，若无法确定，请联系系统管理员。集群的时间可通过FusionInsight Manager页面右下角查看。
#### 操作场景
ClickHouse针对多个场景提供样例工程，帮助客户快速学习ClickHouse工程。
#### 操作步骤
1. 参考[获取MRS应用开发样例工程](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_010002.html)，获取样例代码解压目录中"src"目录下的样例工程文件夹"clickhouse-examples"以及Maven相关配置。
2. 在应用开发环境中，导入样例工程到IntelliJ IDEA开发环境。 
   1. 在IDEA界面选择"File \> New \> Project from Existing Sources"。 ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001252690754.png "点击放大")
      
   
   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](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_480007.html#mrs_07_480007__table14655123116410)中已准备好的开发用户。                                                                                                                                                                                                                                        |
   | password                    | 无默认值            | 开发用户对应的密码。 密码明文存储存在安全风险，建议在配置文件或者环境变量中密文存放，使用时解密，确保安全。 说明： - 如果是在Manager上新建的用户，首次使用前需要修改初始密码。  - JDBC连接方式不支持密码中带有\&。   |
   | clusterName                 | default_cluster | ClickHouse逻辑集群名称，保持默认值。                                                                                                                                                                                                                                                                                                                                    |
   | databaseName                | testdb          | 样例代码工程中需要创建的数据库名称，可以根据实际情况修改。                                                                                                                                                                                                                                                                                                                              |
   | tableName                   | testtb          | 样例代码工程中需要创建的表名称，可以根据实际情况修改。                                                                                                                                                                                                                                                                                                                                |
   | batchRows                   | 10000           | 一个批次写入数据的条数。                                                                                                                                                                                                                                                                                                                                               |
   | batchNum                    | 10              | 写入数据的总批次。                                                                                                                                                                                                                                                                                                                                                  |
      
   ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
   ClickHouse虽有集群能力，但没有统一的访问入口，客户端需要直接感知集群内所有的节点，易用性不好。ClickHouse提供了基于Loadbalance部署架构，可以将用户访问流量自动分发到多台后端节点，扩展系统对外的服务能力，实现更高水平的应用容错。客户端应用请求集群时，使用基于Nginx的ClickHouseBalancer控制节点来进行流量分发，无论集群写入的负载、读的负载以及应用接入的高可用性都具备了有力的保障。
   
   
 
