本文为您介绍创建 ClickHouse 集群的详细操作步骤和相关配置。
创建集群分为四步,软件设置-->硬件设置-->其他设置-->预览确认。
登录 EMR 控制台。
在顶部菜单栏中,根据实际场景,下拉选择地域和项目空间。
在总览界面,单击创建集群,进入集群创建页面。
在创建集群页面,选择分析场景为交互式查询,集群类型为 ClickHouse,根据需要选择相应的产品版本,支持 EMR-3.0.1、EMR-3.1.0 及以上版本。不同版本说明详见版本概述。
ClickHouse 集群创建第一步软件设置中,可以选择服务是否为高可用,高可用时,Zookeeper 必须为 3节点,ClickHouse 数据为 2副本。
说明
推荐在生产环境中使用高可用模式,保证服务稳定,数据不丢失。 非高可用模式,只用于测试场景。
在硬件设置中,完成以下实例设置信息,其余配置信息详见硬件设置。
注意
VPC、子网等网络配置在集群创建后无法更改,请合理规划网络。
配置项 | 说明 |
---|---|
Replica 与 Shard 配置 | 设置集群 Replica 与 Shard 配置:
确定这两者数值,即可确定 Core 节点的数量。 |
节点选型配置 |
|
硬件设置配置完成后,单击下一步,完成集群其他信息配置,包含集群名称、机器密钥或密码等。
最后预览之前步骤设置的相关参数,确认无误后,查看并勾选“同意服务条款”后,单击立即创建,提交创建集群。
详见创建集群。
创建集群成功后,可直接使用 ClickHouse 服务。如需要修改 ClickHouse 的相关配置,可在集群列表界面选择需要管理的 ClickHouse 集群,进入集群详情 > 服务列表 > ClickHouse 服务 > 服务参数查看或修改相应参数。
注意
修改参数后需要保存并重启相应组件。
ClickHouse 服务启动后可以使用 ClickHouse 的客户端连接集群, 执行创建 database,table,插入并查询数据等操作。
以下是一个样例 SQL 操作。
登录到 ClickHouse 集群的 Core 实例节点中,可以使用 SSH 登录或者 ECS 远程登录的方式,示例为远程登录方式:
单击集群列表 > 服务列表 > ClickHouse > 部署拓扑页签,进入 ClickHouse 组件服务的部署拓扑。
单击组件名称下 (emr-core-1 主机名称)的 ECS ID,跳转进入到云服务器的实例界面,点击右上角的远程连接按钮。
选择一种远程连接方式(推荐选择 ECS Terminal),并输入集群相关认证信息,登录到 ClickHouse 集群的 Core 实例节点命令行环境中,以执行相关命令行操作。
使用 ClickHouse 客户端连接 ClickHouse 的当前节点:
-- 切换到 ClickHouse 目录 cd /usr/lib/emr/current/clickhouse/ -- 执行客户端命令,连接 ClickHouse 集群 ./clickhouse-client
CREATE DATABASE IF NOT EXISTS helloworld ON CLUSTER cluster_emr;
-- 创建本地数据表 CREATE TABLE helloworld.my_first_table ON CLUSTER cluster_emr ( user_id UInt32, message String, timestamp DateTime, metric Float32 ) ENGINE = MergeTree() PRIMARY KEY (user_id, timestamp); -- 创建分布式表 CREATE TABLE IF NOT EXISTS helloworld.my_first_table_dist ON CLUSTER cluster_emr ( user_id UInt32, message String, timestamp DateTime, metric Float32 ) ENGINE = Distributed(cluster_emr, helloworld, my_first_table, rand());
INSERT INTO helloworld.my_first_table_dist (user_id, message, timestamp, metric) VALUES (101, 'Hello, ClickHouse!', now(), -1.0 ), (102, 'Insert a lot of rows per batch', yesterday(), 1.41421 ), (102, 'Sort your data based on your commonly-used queries', today(), 2.718 ), (101, 'Granules are the smallest chunks of data read', now() + 5, 3.14159 )
select * from helloworld.my_first_table_dist;