阿里云 E-MapReduce ClickHouse 操作指南 02期 — 快速入门

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 阿里云 E-MapReduce(简称EMR)是运行在阿里云平台上的一种大数据处理的系统解决方案。ClickHouse 作为开源的列式存储数据库,主要用于在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。而阿里云 EMR ClickHouse 则提供了开源 OLAP 分析引擎 ClickHouse 的云上托管服务。

阿里云 E-MapReduce(简称EMR)是运行在阿里云平台上的一种大数据处理的系统解决方案。ClickHouse 作为开源的列式存储数据库,主要用于在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。而阿里云 EMR ClickHouse 则提供了开源 OLAP 分析引擎 ClickHouse 的云上托管服务。


本系列文章将从以下几个方面详细介绍 EMR ClickHouse 的操作指南:


EMR ClickHouse 操作指南 — 快速入门


template (3).png

一、创建集群

——创建 ClickHouse 集群的详细操作步骤和相关配置。

前提条件

已在目标地域创建一个专有网络和交换机,详情请参见 使用专有网络使用交换机

背景信息

机型、内存和磁盘的设置,请参见 Usage Recommendations

操作步骤

  1. 进入创建集群页面
  1. 登录 阿里云E-MapReduce控制台
  2. 在顶部菜单栏处,根据实际情况选择地域和资源组。
  • 地域:创建的集群将会在对应的地域内,一旦创建不能修改。
  • 资源组:默认显示账号全部资源。
  1. 单击创建集群,进行创建。


  1. 配置集群信息。

创建集群时,您需要对集群进行软件配置、硬件配置和基础配置。

注意集群创建完成后,除了集群名称以外,其他配置均无法修改,所以在创建时请仔细确认各项配置。

  • 软件配置
配置项 说明
集群类型 选择 ClickHouse
产品版本 默认最新的软件版本。
必选服务 默认的服务组件,后期可以在管理页面中启停服务。
可选服务 根据您的实际需求选择其他的一些组件,被选中的组件会默认启动相关的服务进程。


说明 组件越多,对机器的配置要求也越高,所以在下面的步骤中您需要根据实际的组件数量进行机器选型,否则可能没有足够的资源运行这些服务。

高级设置 软件自定义配置:可指定 JSON 文件对集群中的基础软件(例如Hadoop、Spark 和 Hive 等)进行配置,详细使用方法请参见软件配置。默认不开启。
  • 硬件配置
区域 配置项 说明
付费类型 付费类型 默认包年包月。当前支持的付费类型如下:
  • 按量付费:一种后付费模式,即先使用再付费。按量付费是根据实际使用的小时数来支付费用,每小时计费一次,适合短期的测试任务或是灵活的动态任务。
  • 包年包月:一种预付费模式,即先付费再使用。


    说明:建议测试场景下使用按量付费,测试正常后再新建一个包年包月的生产集群正式使用。

网络配置 可用区 可用区为在同一地域下的不同物理区域,可用区之间内网互通。通常使用默认的可用区即可。
网络类型 默认专有网络。
VPC 选择在该地域的VPC。如果没有可用的VPC,单击创建VPC/子网(交换机)前往新建。
交换机 选择在对应 VPC 下可用区的交换机,如果在这个可用区没有可用的交换机,则需要新创建一个。
安全组名称

注意: 禁止使用 ECS 上创建的企业安全组。

您可以直接输入安全组名称来新建一个安全组。如果已有在使用的安全组,则可以直接选择使用。

安全组详情请参见 安全组概述

实例 选型配置 您可以根据需要选择实例规格,详情请参见实例规格族
  • 系统盘配置:根据需要选择 ESSD 云盘、SSD 云盘或者高效云盘。
  • 系统盘大小:根据需要调整磁盘容量,推荐至少120 GB。取值范围为50 ~ 2048 GB。
  • 数据盘配置:根据需要选择 ESSD 云盘、SSD 云盘或者高效云盘。
  • 数据盘大小:根据需要调整磁盘容量,推荐至少80 GB。取值范围为40 ~ 32768 GB。
  • ClickHouse 数量:默认4台。
  • 基础配置

     在基础信息区域,配置如下参数。

注意: 暂不支持高级配置区域的参数,因此请勿设置。

配置项 说明
集群名称 集群的名字,长度限制为1~64个字符,仅可使用中文、字母、数字、中划线(-)和下划线(_)。
Shard数量 分片的数量。不支持修改。


说明: 创建集群时,Shard 数量会被自动计算, Shard数量 = ClickHouse数量 ÷ Replica数量。请保证 ClickHouse 数量可以被 Replica 数量整除,否则无法创建集群。

Replica数量

副本的数量。默认为2。


说明: 如果需要保证 ClickHouse 集群的高可用,Replica数量至少为2。

挂载公网

集群是否挂载弹性公网IP地址,默认不开启。


说明: 不开启挂载公网,将无法使用EMR控制台访问链接与端口功能查看开源组件的 Web UI。

密钥对 关于密钥对的使用详情请参见 SSH密钥对
登录密码 设置 Master 节点的登录密码,密码规则:8~30个字符,且必须同时包含大写字母、小写字母、数字和特殊字符。

特殊字符包括:感叹号(!)、at(@)、井号(#)、美元符号($)、百分号(%)、乘方(^)、and(&)和星号(*)。

说明: 页面右边会显示您所创建集群的配置清单以及集群费用。根据不同的付费类型,展示不同的价格信息。


  • 选中 E-MapReduce 服务条款复选框。
  • 单击创建创建集群后可以通过刷新页面来查看进度,当集群状态显示为空闲时,集群创建成功。


二、快速使用 ClickHouse

——快速将数据随机写入 ClickHouse 集群各个节点的本地表

前提条件

已创建 ClickHouse 集群,详情参见上文。

操作步骤

  • 使用 SSH 方式登录 ClickHouse 集群,详情请参见登录集群


  • 执行以下命令,下载官方样例数据集。

curl https://datasets.clickhouse.tech/hits/tsv/hits_v1.tsv.xz | unxz --threads=`nproc` > hits_v1.tsv


  • 执行如下命令,启动 ClickHouse 客户端。

clickhouse-client


您也可以使用默认的 default 用户启动 ClickHouse 客户端。

clickhouse-client -u default--password


说明: 因为默认密码为空,所以直接按回车键,即可启动 ClickHouse 客户端。


  • 执行如下命令,创建数据库。

可以使用 on ClUSTER 参数在集群的所有节点创建数据库, 默认集群标识为cluster_emr。

CREATEDATABASEIFNOTEXISTS demo onCLUSTER cluster_emr


返回信息如下所示。

image.png

  • 在集群上的所有节点创建一张复制表(Replicated表)。

复制表(Replicated表)会根据副本的个数,实现数据的多副本,并实现数据的最终一致性。

CREATE TABLE demo.hits_local ON CLUSTER cluster_emr
(
    `WatchID` UInt64,
    `JavaEnable` UInt8,
    `Title` String,
    `GoodEvent` Int16,
    `EventTime` DateTime,
    `EventDate` Date,
    `CounterID` UInt32,
    `ClientIP` UInt32,
    `ClientIP6` FixedString(16),
    `RegionID` UInt32,
    `UserID` UInt64,
    `CounterClass` Int8,
    `OS` UInt8,
    `UserAgent` UInt8,
    `URL` String,
    `Referer` String,
    `URLDomain` String,
    `RefererDomain` String,
    `Refresh` UInt8,
    `IsRobot` UInt8,
    `RefererCategories` Array(UInt16),
    `URLCategories` Array(UInt16),
    `URLRegions` Array(UInt32),
    `RefererRegions` Array(UInt32),
    `ResolutionWidth` UInt16,
    `ResolutionHeight` UInt16,
    `ResolutionDepth` UInt8,
    `FlashMajor` UInt8,
    `FlashMinor` UInt8,
    `FlashMinor2` String,
    `NetMajor` UInt8,
    `NetMinor` UInt8,
    `UserAgentMajor` UInt16,
    `UserAgentMinor` FixedString(2),
    `CookieEnable` UInt8,
    `JavascriptEnable` UInt8,
    `IsMobile` UInt8,
    `MobilePhone` UInt8,
    `MobilePhoneModel` String,
    `Params` String,
    `IPNetworkID` UInt32,
    `TraficSourceID` Int8,
    `SearchEngineID` UInt16,
    `SearchPhrase` String,
    `AdvEngineID` UInt8,
    `IsArtifical` UInt8,
    `WindowClientWidth` UInt16,
    `WindowClientHeight` UInt16,
    `ClientTimeZone` Int16,
    `ClientEventTime` DateTime,
    `SilverlightVersion1` UInt8,
    `SilverlightVersion2` UInt8,
    `SilverlightVersion3` UInt32,
    `SilverlightVersion4` UInt16,
    `PageCharset` String,
    `CodeVersion` UInt32,
    `IsLink` UInt8,
    `IsDownload` UInt8,
    `IsNotBounce` UInt8,
    `FUniqID` UInt64,
    `HID` UInt32,
    `IsOldCounter` UInt8,
    `IsEvent` UInt8,
    `IsParameter` UInt8,
    `DontCountHits` UInt8,
    `WithHash` UInt8,
    `HitColor` FixedString(1),
    `UTCEventTime` DateTime,
    `Age` UInt8,
    `Sex` UInt8,
    `Income` UInt8,
    `Interests` UInt16,
    `Robotness` UInt8,
    `GeneralInterests` Array(UInt16),
    `RemoteIP` UInt32,
    `RemoteIP6` FixedString(16),
    `WindowName` Int32,
    `OpenerName` Int32,
    `HistoryLength` Int16,
    `BrowserLanguage` FixedString(2),
    `BrowserCountry` FixedString(2),
    `SocialNetwork` String,
    `SocialAction` String,
    `HTTPError` UInt16,
    `SendTiming` Int32,
    `DNSTiming` Int32,
    `ConnectTiming` Int32,
    `ResponseStartTiming` Int32,
    `ResponseEndTiming` Int32,
    `FetchTiming` Int32,
    `RedirectTiming` Int32,
    `DOMInteractiveTiming` Int32,
    `DOMContentLoadedTiming` Int32,
    `DOMCompleteTiming` Int32,
    `LoadEventStartTiming` Int32,
    `LoadEventEndTiming` Int32,
    `NSToDOMContentLoadedTiming` Int32,
    `FirstPaintTiming` Int32,
    `RedirectCount` Int8,
    `SocialSourceNetworkID` UInt8,
    `SocialSourcePage` String,
    `ParamPrice` Int64,
    `ParamOrderID` String,
    `ParamCurrency` FixedString(3),
    `ParamCurrencyID` UInt16,
    `GoalsReached` Array(UInt32),
    `OpenstatServiceName` String,
    `OpenstatCampaignID` String,
    `OpenstatAdID` String,
    `OpenstatSourceID` String,
    `UTMSource` String,
    `UTMMedium` String,
    `UTMCampaign` String,
    `UTMContent` String,
    `UTMTerm` String,
    `FromTag` String,
    `HasGCLID` UInt8,
    `RefererHash` UInt64,
    `URLHash` UInt64,
    `CLID` UInt32,
    `YCLID` UInt64,
    `ShareService` String,
    `ShareURL` String,
    `ShareTitle` String,
    `ParsedParams` Nested(Key1 String,Key2 String,Key3 String,Key4 String,Key5 String,ValueDouble Float64),
    `IslandID` FixedString(16),
    `RequestNum` UInt32,
    `RequestTry` UInt8
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/{database}/hits_local', '{replica}')
PARTITION BY toYYYYMM(EventDate)
ORDER BY (CounterID, EventDate, intHash32(UserID))
SAMPLE BY intHash32(UserID)

说明: {shard}{replica}是阿里云EMR为ClickHouse集群自动生成的宏定义,可以直接使用。


返回信息如下图所示。

image.png

  • 执行以下命令,创建分布式(Distributed)表。

分布式表不存储数据,仅仅是底层表的一个View,但可以在多个服务器上进行分布式查询。本例中使用随机函数rand(),表示数据会随机写入各个节点的本地表。

CREATETABLE demo.hits_all onCLUSTER cluster_emr AS demo.hits_local  ENGINE = Distributed(cluster_emr, demo, hits_local, rand())


  • 退出 ClickHouse 客户端,在样例数据的目录下执行以下命令,导入数据。

clickhouse-client--query"INSERT INTO demo.hits_all FORMAT TSV"--max_insert_block_size=100000 < hits_v1.tsv


  • 重新启动 ClickHouse 客户端,查看数据。

因为数据是随机写入的,各节点数据量可能不同。


  • 查看 emr-header-1 节点 demo.hits_all 的数据量。

           selectcount(*) from demo.hits_all

           返回信息如下。

    image.png

  • 查看 emr-header-1 节点 demo.hits_local 的数据量。

     selectcount(*) from demo.hits_local

           返回信息如下。

    image.png

  • 查看 emr-worker-1 节点 demo.hits_local 的数据量。


         说明 其余节点,您也可以按照以下步骤来查看 demo.hits_local 的数据量。

  1. 执行以下命令,在 Master 节点切换到 hadoop 账号。
    su hadoop                                          
  2. 执行以下命令,切换到 emr-worker-1 节点。
    ssh emr-worker-1                                
  3. 执行以下命令,查看 demo.hits_local 的数据量。

           selectcount(*) from demo.hits_local    

     返回信息如下。

    image.png

三、访问模式

访问 E-MapReduce(简称EMR)上的 ClickHouse 集群支持通过原生 JDBC 访问和通过负载均衡 SLB 访问两种方式

背景信息

  • 通过原生 JDBC 访问 ClickHouse 集群的架构图如下:

     image.png

  • 通过负载均衡器 SLB 访问 ClickHouse 集群的架构图如下:

     image.png

前提条件

  • 已创建 E-MapReduce 的 ClickHouse 集群,详情请参见前文。
  • 已创建 SLB 服务,详情请参见创建实例


注意: 如果是想通过负载均衡器SLB访问ClickHouse集群,则需要创建SLB服务。并且在创建SLB服务时,如果实例类型选择的是私网,则在选择专有网络时,必须选择与EMR ClickHouse集群相同的VPC。


通过原生 JDBC 访问 ClickHouse 集群

  • 获取主机的IP地址。
  • 登录 阿里云E-MapReduce控制台
  • 在顶部菜单栏处,根据实际情况选择地域和资源组
  • 单击上方的集群管理页签。
  • 集群管理页面,单击相应集群所在行的详情
  • 在左侧导航栏,单击主机列表在此页面您可以查看ClickHouse集群的IP地址。

image.png


通过负载均衡器 SLB 访问 ClickHouse 集群

通常情况下,ClickHouse 使用 SLB 服务仅需要配置 HTTP 及 TCP 两种协议的监听,如果您有需要,也可以配置HTTPS的监听。配置监听详情,请参见 添加TCP监听添加HTTP监听添加HTTPS监听


  • 注意:
  • TCP监听所使用的虚拟服务器组,其端口应为ClickHouse通过TCP连接到服务器的端口,默认为9000。您可以在EMR控制台ClickHouse服务的配置页面,在搜索区域搜索tcp_port参数,参数值即为TCP端口。
  • HTTP监听所使用的虚拟服务器组,其端口应为ClickHouse通过HTTP连接到服务器的端口,默认为8123。您可以在EMR控制台ClickHouse服务的配置页面,在搜索区域搜索http_port参数,参数值即为HTTP端口。


  • 实例管理页面,获取 SLB 的服务地址

    image.png


后续

您已经学习了 ClickHouse 快速入门,本系列还包括其他内容:

  • ClickHouse 概述
  • ClickHouse 运维
  • 数据导入
  • 常见问题




获取更详细的 EMR ClickHouse 相关信息,可至产品文档页查看:

https://help.aliyun.com/document_detail/212195.html


扫描下方二维码加入 EMR 相关产品钉钉交流群一起参与讨论吧!

lALPD26eQMAeAf_NAd7NAvs_763_478.png

相关实践学习
基于EMR Serverless StarRocks一键玩转世界杯
基于StarRocks构建极速统一OLAP平台
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
相关文章
|
1月前
|
存储 分布式计算 数据库
阿里云国际版设置数据库云分析工作负载的 ClickHouse 版
阿里云国际版设置数据库云分析工作负载的 ClickHouse 版
|
4月前
|
存储 大数据 关系型数据库
从 ClickHouse 到阿里云数据库 SelectDB 内核 Apache Doris:快成物流的数智化货运应用实践
目前已经部署在 2 套生产集群,存储数据总量达百亿规模,覆盖实时数仓、BI 多维分析、用户画像、货运轨迹信息系统等业务场景。
|
5月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用问题之如何对ClickHouse进行操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
存储 Cloud Native 大数据
国内独家|阿里云瑶池发布ClickHouse企业版:云原生Serverless新体验
全面升级为云原生架构,支持云原生按需弹性Serverless能力,解决了长期困扰用户的集群扩展效率和平滑性问题。
国内独家|阿里云瑶池发布ClickHouse企业版:云原生Serverless新体验
|
6月前
|
存储 容灾 Cloud Native
阿里云ClickHouse企业版正式商业化,为开发者提供容灾性更好、性价比更高的实时数仓
2024年4月23日,阿里云联合 ClickHouse Inc. 成功举办了企业版商业化发布会。阿里云 ClickHouse 企业版是阿里云和 ClickHouse 原厂 ClickHouse. Inc 独家合作的存算分离的云原生版本,支持资源按需弹性 Serverless,帮助企业降低成本的同时,为企业带来更多商业价值。
523 1
|
6月前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
6月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之sql读取mysql写入clickhouse,该如何操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
分布式计算
mapreduce 快速入门
mapreduce 案例 【2月更文挑战第14天】
69 2
|
6月前
|
SQL 运维 关系型数据库
阿里云DTS踩坑经验分享系列|如何使用DTS进行MySQL->ClickHouse同步
在使用阿里云DTS 进行MySQL->ClickHouse同步时,从准备工作,到创建任务,再到后期运维处理,新手可能会感到茫然和不知所措。为了帮助新手顺利过渡,本文将介绍使用阿里云DTS在进行MySQL到ClickHouse迁移时的最佳实践以及常见踩坑问题, 我们希望通过这篇文章,让您能无忧使用阿里云DTS进行数据迁移,享受ClickHouse带来的高效数据分析体验。
98746 12
阿里云DTS踩坑经验分享系列|如何使用DTS进行MySQL->ClickHouse同步
|
6月前
|
存储 SQL 搜索推荐
一文快速了解ClickHouse 战斗民族的开源搜索引擎(超详细解读+快速入门)
一文快速了解ClickHouse 战斗民族的开源搜索引擎(超详细解读+快速入门)
207 0
一文快速了解ClickHouse 战斗民族的开源搜索引擎(超详细解读+快速入门)

相关产品

  • 开源大数据平台 E-MapReduce