更新时间:2024-03-25 GMT+08:00

使用ClickHouse客户端

ClickHouse是面向联机分析处理的列式数据库,支持SQL查询,且查询性能好,特别是基于大宽表的聚合分析查询性能非常优异,比其他分析型数据库速度快一个数量级。

前提条件

已安装客户端,例如安装目录为“/opt/hadoopclient”。以下操作的客户端目录只是举例,请根据实际安装目录修改。在使用客户端前,需要先下载并更新客户端配置文件,确认Manager的主管理节点后才能使用客户端。

操作步骤

  1. 以客户端安装用户,登录安装客户端的节点。
  2. 执行以下命令,切换到客户端安装目录。

    cd /opt/hadoopclient

  3. 执行以下命令配置环境变量。

    source bigdata_env

  4. 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,当前用户需要具有创建ClickHouse表的权限,具体请参见ClickHouse用户及权限管理章节,为用户绑定对应角色。如果当前集群未启用Kerberos认证,则无需执行本步骤。

    1. 如果是MRS 3.1.0版本集群,则需要先执行:export CLICKHOUSE_SECURITY_ENABLED=true
    2. kinit 组件业务用户

      例如,kinit clickhouseuser。

  5. 执行ClickHouse组件的客户端命令。

    执行clickhouse -h,查看ClickHouse组件命令帮助。

    回显信息如下:

    Use one of the following commands:
    clickhouse local [args] 
    clickhouse client [args] 
    clickhouse benchmark [args] 
    clickhouse server [args] 
    clickhouse performance-test [args] 
    clickhouse extract-from-config [args] 
    clickhouse compressor [args] 
    clickhouse format [args] 
    clickhouse copier [args] 
    clickhouse obfuscator [args]
    ...

    MRS 3.1.0及之后版本,使用clickhouse client命令连接ClickHouse服务端:

    • 例如,当前集群未启用Kerberos认证,使用ssl安全方式登录:

      clickhouse client --host ClickHouse的实例IP --user 用户名 --password 密码 --port 9440 --secure

    • 例如,当前集群已启用Kerberos认证,使用ssl安全方式登录。

      Kerberos集群场景下没有默认用户,必须在Manager上创建用户,详细参考ClickHouse用户及权限管理

      使用kinit认证成功后,客户端登录时可以不携带--user和--password参数,即使用kinit认证的用户登录。

      clickhouse client --host ClickHouse的实例IP --port 9440 --secure

      相关参数使用说明如下表:

    表1 clickhouse client命令行参数说明

    参数名

    参数说明

    --host

    服务端的host名称,默认是localhost。您可以选择使用ClickHouse实例所在节点主机名或者IP地址。

    说明:

    ClickHouse的实例IP地址可登录集群FusionInsight Manager,然后选择“集群 > 服务 > ClickHouse > 实例”,获取ClickHouseServer实例对应的业务IP地址。

    --port

    连接的端口。

    • 如果使用ssl安全连接则默认端口为9440,并且需要携带参数--secure。具体的端口值可通过ClickHouseServer实例配置搜索“tcp_port_secure”参数获取。
    • 如果使用非ssl安全连接则默认端口为9000,不需要携带参数--secure。具体的端口值可通过ClickHouseServer实例配置搜索“tcp_port”参数获取。

    --user

    用户名。

    可以在Manager上创建该用户名并绑定对应的角色权限,具体可以参考ClickHouse用户及权限管理

    • 如果当前集群已启用Kerberos认证,使用kinit认证成功后,客户端登录时可以不携带--user和--password参数,即使用kinit认证的用户登录。Kerberos集群场景下没有默认用户,必须在Manager上创建该用户名。
    • 如果当前集群未启用Kerberos认证,客户端登录时可以指定Manager上创建的用户和密码。不携带用户和密码参数时则默认使用default用户登录。

    --password

    密码。 默认值:空字符串。该参数和--user参数配套使用,可以在Manager上创建用户名时设置该密码。

    --query

    使用非交互模式查询。

    --database

    默认当前操作的数据库。默认值:服务端默认的配置(默认是default)。

    --multiline

    如果指定,允许多行语句查询(Enter仅代表换行,不代表查询语句完结)。

    --multiquery

    如果指定,允许处理用;号分隔的多个查询,只在非交互模式下生效。

    --format

    使用指定的默认格式输出结果。

    --vertical

    如果指定,默认情况下使用垂直格式输出结果。在这种格式中,每个值都在单独的行上打印,适用显示宽表的场景。

    --time

    如果指定,非交互模式下会打印查询执行的时间到stderr中。

    --stacktrace

    如果指定,如果出现异常,会打印堆栈跟踪信息。

    --config-file

    配置文件的名称。

    --secure

    如果指定,将通过ssl安全模式连接到服务器。

    --history_file

    存放命令历史的文件的路径。

    --param_<name>

    带有参数的查询,并将值从客户端传递给服务器。具体用法详见https://clickhouse.tech/docs/zh/interfaces/cli/#cli-queries-with-parameters