• 沒有找到結果。

处理步骤

4 使用 ClickHouse

4.1 从零开始使用 ClickHouse

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

前提条件

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

操作步骤

步骤1 安装客户端,具体请参考安装客户端章节。

步骤2 以客户端安装用户,登录安装客户端的节点。

步骤3 执行以下命令,切换到客户端安装目录。

cd /opt/hadoopclient 步骤4 执行以下命令配置环境变量。

source bigdata_env

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

kinit 组件业务用户

例如,kinit clickhouseuser。

步骤6 执行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]

...

详细命令使用请参考:https://clickhouse.tech/docs/zh/operations/。

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 相关参数使用说明如下表:

4-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_<na me>

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

----结束

4.2 ClickHouse 表引擎介绍

MergeTree 系列引擎

MergeTree用于高负载任务的最通用和功能最强大的表引擎,其主要有以下关键特 征:

● 基于分区键(partitioning key)的数据分区分块存储

● 数据索引排序(基于primary key和order by)

● 支持数据复制(带Replicated前缀的表引擎)

● 支持数据抽样

在写入数据时,该系列引擎表会按照分区键将数据分成不同的文件夹,文件夹内每列 数据为不同的独立文件,以及创建数据的序列化索引排序记录文件。该结构使得数据 读取时能够减少数据检索时的数据量,极大的提高查询效率。

● MergeTree 建表语法:

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]

( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2], ...

INDEX index_name1 expr1 TYPE type1(...) GRANULARITY value1, INDEX index_name2 expr2 TYPE type2(...) GRANULARITY value2 ) ENGINE = MergeTree()

ORDER BY expr [PARTITION BY expr]

[PRIMARY KEY expr]

[SAMPLE BY expr]

[TTL expr [DELETE|TO DISK 'xxx'|TO VOLUME 'xxx'], ...]

[SETTINGS name=value, ...]

使用示例:

CREATE TABLE default.test ( name1 DateTime, name2 String,