阿里云 E-MapReduce ClickHouse 操作指南 03 期 — ClickHouse 运维-阿里云开发者社区

开发者社区> 阿里云EMR> 正文
登录阅读全文

阿里云 E-MapReduce ClickHouse 操作指南 03 期 — ClickHouse 运维

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

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


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


EMR ClickHouse 操作指南 — ClickHouse 运维

template (4).png

一、日志配置说明

——EMR 支持在控制台查看或配置日志参数,也支持在命令行中设置参数。

前提条件

已创建集群,详情请参见创建集群


Clickhouse 控制台日志配置

您可以在 ClickHouse 服务配置页面的服务配置区域,在 server-config 页签中查看或修改配置,或者在 ClickHouse 服务的配置页面,在搜索区域搜索 logger.,即可查看或修改所有的日志配置项。

image.png

参数描述
logger.level日志的等级,默认等级为 information。可以配置的等级从严格到宽松依次为
  • none:关闭日志。
  • fatal:致命信息。
  • critical:危险信息。
  • error:错误信息。
  • warning:警告信息。
  • notice:普通但需要注意的信息。
  • information(默认值):重要或者您感兴趣的信息。
  • debug:调试信息。
  • trace:程序执行路径跟踪信息。
logger.pathClickHouse Server 正常输出的日志文件,默认为/var/log/clickhouse-server/clickhouse-server.log,会输出符合 logger.level 所指定的日志等级的日志。
logger.errorlogClickHouse Server 中错误日志的输出路径。默认值为/var/log/clickhouse-server/clickhouse-server.err.log。
logger.size日志文件的大小。当文件达到该参数设置的值时,ClickHouse 会将其存档并重命名,并创建一个新的日志文件。默认值为1000M
logger.count存档的 ClickHouse 日志文件个数。当存档的日志文件个数达到该参数设置的值时,ClickHouse 会将最早的存档删除。默认值为10

ClickHouse 客户端日志配置

您可以通过配置客户端日志,来接收来自服务端的日志,默认接收 fatal 级别的日志。

  1. 通过 SSH 方式登录集群,详情请参见登录集群
  2. 基本操作示例。
  • 查看每次执行的日志。
    1. 执行以下命令, 启动 clickhouse-client。
      clickhouse-client
    2. 您可以执行以下命令,设置参数 send_logs_level 查看每次执行的日志。
      set send_logs_level='debug';


返回信息如下所示。

image.png

  • 在 clickhouse-client 启动时,您可以执行以下命令,将日志保存到指定的文件中。

clickhouse-client --send_logs_level=trace --log-level=trace --server_logs_file='/tmp/query.log'


二、系统表说明

——系统表存储于 System 数据库中,仅提供数据读取功能,不能被删除或更改,但可以对其进行分离(detach)操作。大多数系统表将其数据存储在 RAM 中,一个 ClickHouse 服务在刚启动时便会创建此类系统表。


背景信息

常用系统表如下:

  • system.clusters
  • system.query_log
  • system.zookeeper
  • system.replicas
  • system.storage_policies
  • system.disks

更多系统表信息,请参见ClickHouse官方文档


system.clusters

——该表包含了配置文件中可用的集群及其服务器的信息。

参数数据类型描述
clusterString集群名。
shard_numUInt32集群中的分片数,从1开始。
shard_weightUInt32写数据时该分片的相对权重。
replica_numUInt32分片的副本数量,从1开始。
host_nameString配置中指定的主机名。
host_addressString从 DNS 获取的主机 IP 地址。
portUInt16连接到服务器的端口。
userString连接到服务器的用户名。
errors_countUInt32此主机无法访问副本的次数。
slowdowns_countUInt32在与对端请求建立连接时导致副本更改的 slowdown 的次数。
estimated_recovery_timeUInt32在复制副本错误计数归零并被视为恢复正常之前剩余的秒数。

示例:您可以执行以下命令,查看表信息。

SELECT * FROM system.clusters LIMIT 2 FORMAT Vertical;


返回信息如下。

image.png

system.query_log

——该表包含了已执行查询的相关信息。例如,开始时间、处理持续时间和错误消息。


system.query_log 表中记录了两种查询:

  • 客户端直接运行的初始查询。
  • 由其它查询启动的子查询(用于分布式查询执行)。 对于这些类型的查询,有关父查询的信息显示在initial_*列。


根据查询的状态(请参见type列),每个查询在查询日志表中创建一行或两行记录:

  • 如果查询执行成功,则会创建typeQueryStartQueryFinish的两行记录信息。
  • 如果在查询处理期间发生错误,则会创建typeQueryStartExceptionWhileProcessing的两行记录信息。
  • 如果在启动查询之前发生错误,则会创建typeExceptionBeforeStart的一行记录信息。
参数数据类型描述
typeEnum8执行查询时的事件类型。取值如下:
  • 'QueryStart' = 1:查询成功启动。
  • 'QueryFinish' = 2:查询成功完成。
  • 'ExceptionBeforeStart' = 3:查询执行前有异常。
  • 'ExceptionWhileProcessing' = 4 :查询执行期间有异常。
event_dateDate查询开始日期。
event_timeDateTime查询开始时间。
event_time_microsecondsDateTime64以微秒精度查询开始时间。
query_start_timeDateTime查询执行的开始时间。
query_start_time_microsecondsDateTime64以微秒精度查询执行的开始时间。
query_duration_msUInt64查询消耗的时间。单位为毫秒。
read_rowsUInt64从参与了查询的所有表和表函数读取的字节总数。包括常用的子查询,IN和JOIN的子查询。对于分布式查询read_rows包括在所有副本上读取的字节总数。 每个副本发送它的read_rows值,并且查询的发起方将所有接收到的和本地的值汇总。 缓存卷不会影响此值。
read_bytesUInt64从参与了查询的所有表和表函数读取的总字节数。包括常用的子查询,IN和JOIN的子查询。对于分布式查询read_bytes包括在所有副本上读取的字节总数。 每个副本发送它的read_bytes值,并且查询的发起方将所有接收到的值和本地的值汇总。 缓存卷不会影响此值。
written_rowsUInt64对于INSERT查询,为写入的行数。 对于其它查询,值为0。
written_bytesUInt64对于INSERT查询时,为写入的字节数。 对于其它查询,值为0。
result_rowsUInt64SELECT查询结果的行数,或INSERT的行数。
result_bytesUInt64存储查询结果的RAM量。
memory_usageUInt64查询使用的内存。
queryString查询语句。
exceptionString异常信息。
exception_codeInt32异常码。
stack_traceString如果查询成功完成,则为空字符串。
is_initial_queryUInt8查询类型。取值如下:
  • 0:客户端发起的查询。
  • 1:由另一个查询发起的,作为分布式查询的一部分。
userString发起查询的用户。
query_idString查询ID。
addressIpv6发起查询的客户端IP地址。
portUInt16发起查询的客户端端口。
initial_userString初始查询的用户名(用于分布式查询执行)。
initial_query_idString初始查询的ID(用于分布式查询执行)。
initial_addressIpv6运行父查询的IP地址。
initial_portUInt16进行父查询的客户端端口。
interfaceUInt8发起查询的接口。取值如下:
  • 1:TCP
  • 2:HTTP
os_userString运行clickhouse-client的操作系统的用户名。
client_hostnameString运行clickhouse-client或其他TCP客户端的机器的主机名。
client_nameStringclickhouse-client或其他TCP客户端的名称。
client_revisionUInt32clickhouse-client或其他TCP客户端的Revision。
client_version_majorUInt32clickhouse-client或其他TCP客户端的Major Version。
client_version_minorUInt32clickhouse-client或其他TCP客户端的Minor Version。
client_version_patchUInt32clickhouse-client或其他TCP客户端的Patch component。
http_methodUInt8发起查询的HTTP方法。取值如下:
  • 0:TCP接口的查询
  • 1:GET
  • 2:POST
http_user_agentStringHTTP查询中传递的HTTP请求头UserAgent。
quota_keyString在quotas配置里设置的quota key.

详细信息可以参见配额

revisionUInt32ClickHouse revision。
ProfileEventsMap(String,UInt64)其它事件的指标,可以在表system.events中找到相关的描述。
SettingsMap(String,String)客户端运行查询时更改的设置。要启用对设置的日志记录更改,请将log_query_settings参数设置为1。
thread_idsArray(UInt64)参与查询的线程数。
Settings.NamesArray(String)客户端运行查询时更改的设置的名称。 要启用对设置的日志记录更改,请将log_query_settings参数设置为1。
Settings.ValuesArray(String)Settings.Names列中列出的设置的值。

示例:您可以执行以下命令,查看表信息。

SELECT * FROM system.query_log LIMIT 1 FORMAT Vertical;


返回信息如下。

lALPD3W5PjwvoM3NA2fNA4U_901_871.png

system.zookeeper

——该表可以查到 ZooKeeper 中的节点信息。


如果未配置 ZooKeeper,则该表不存在。 允许从配置中定义的 ZooKeeper 集群读取数据。 查询必须具有path=条件,或使用WHERE子句设置了 path IN 条件,这对应于 ZooKeeper 中要获取数据的子对象的路径。


查询语句SELECT * FROM system.zookeeper WHERE path = '/clickhouse',输出/clickhouse节点的对所有子路径的数据。如果需要输出所有根节点的数据,请写入路径为‘/’。 如果path中指定的路径不存在,则将提示异常。


查询语句SELECT * FROM system.zookeeper WHERE path IN ('/', '/clickhouse'),输出//clickhouse节点上所有子节点的数据。 如果path中指定的路径不存在,则将提示异常。它可以用于一批 ZooKeeper 路径的查询。

参数数据类型描述
nameString节点的名字。
pathString节点的路径。
valueString节点的值。
dataLengthInt32节点的值长度。
numChildrenInt32子节点的个数。
czxidInt64创建该节点的事务ID。
mzxidInt64最后修改该节点的事务ID。
pzxidInt64最后删除或者增加子节点的事务ID。
ctimeDateTime节点的创建时间。
mtimeDateTime节点的最后修改时间。
versionInt32节点版本和节点被修改的次数。
cversionInt32最后删除或者增加子节点的事务ID。
aversionInt32ACL的修改次数。
ephemeralOwnerInt64针对临时节点,拥有该节点的事务ID。

示例:您可以执行以下命令,查看表信息。

SELECT *
FROM system.zookeeper
WHERE path = '/clickhouse/tables/01-08/visits/replicas'
FORMAT Vertical

返回信息如下。

lALPD26eQPLjaOrNAvTNAtk_729_756.png

system.replicas

——该表包含本地服务所有复制表的信息和状态,可以用于监控。

参数数据类型描述
databaseString数据库名称。
tableString表名。
engineString表引擎名称。
is_leaderUInt8副本是否是领导者。

一次只有一个副本可以成为领导者。 领导者负责选择要执行的后台合并。


注意 可以对任何可用且在Zookeeper中具有会话的副本执行写操作,不管该副本是否为leader。

can_become_leaderUInt8副本是否可以当选为领导者。
is_readonlyUInt8副本是否处于只读模式。

如果配置中没有ZooKeeper的部分,在ZooKeeper中重新初始化会话时发生未知错误,以及在ZooKeeper中重新初始化会话时发生未知错误,则会打开此模式。

is_session_expiredUInt8与ZooKeeper的会话已经过期。用法基本上与is_readonly相同。
future_partsUInt32由于尚未完成的插入或合并而显示的数据部分的数量。
parts_to_checkUInt32队列中用于验证的part的数量。 如果怀疑part可能损坏了,则将其放入验证队列。
zookeeper_pathString在ZooKeeper中的表数据路径。
replica_nameStringZooKeeper中的副本名称。同一表的不同副本具有不同的名称。
replica_pathStringZooKeeper中副本数据的路径。 与 zookeeper_path/replicas/replica_path下的内容相同。
columns_versionInt32表结构的版本号。 表示执行ALTER的次数。 如果副本有不同的版本,则意味着部分副本还没有进行所有的更改。
queue_sizeUInt32等待执行的操作的队列大小。 操作包括插入数据块、合并和某些其它操作。 它通常与future_parts一致。
inserts_in_queueUInt32需要插入的数据块的数量。

数据的插入通常很快。 如果该数值很大,则说明有问题。

merges_in_queueUInt32等待进行合并的数量。

有时合并时间很长,因此此值可能长时间大于零。

part_mutations_in_queueUInt32等待进行的突变的数量。
queue_oldest_timeDateTime如果queue_size大于0,则显示何时将最早的操作添加到队列。
inserts_oldest_timeDateTime
merges_oldest_timeDateTime
part_mutations_oldest_timeDateTime
log_max_indexUInt64一般活动日志中的最大条目数。


注意 存在与ZooKeeper的活动会话时才具有非零值。

log_pointerUInt64副本复制到其执行队列的常规活动日志中的最大条目数,再加一。 如果log_pointer比log_max_index小,则说明有问题。


注意 存在与ZooKeeper的活动会话时才具有非零值。

last_queue_updateDateTime上次更新队列的时间。


注意 存在与ZooKeeper的活动会话时才具有非零值。

absolute_delayUInt64当前副本最大延迟时间。单位为秒。


注意 存在与ZooKeeper的活动会话时才具有非零值。

total_replicasUInt8此表的已知副本总数。
active_replicas UInt8在ZooKeeper中具有会话的此表的副本的数量(即正常运行的副本的数量)。

示例:您可以执行以下命令,查看表信息。

SELECT * FROM system.replicas WHERE table = 'visits' FORMAT Vertical


返回信息如下。

image.png

system.storage_policies

——该表包含了有关存储策略和卷的优先级相关的信息。

参数数据类型描述
policy_nameString存储策略的名称。
volume_nameString存储策略中定义的卷的名称。
volume_priorityUInt64配置中定义的卷的优先级。
disksString存储策略中定义的磁盘名称。
max_data_part_sizeUInt64可以存储在磁盘卷上的数据part的最大值。
move_factorFloat64可用磁盘空间的比率。当比率超过配置参数的值时,数据将会被移动到下一个卷。

示例:您可以执行以下命令,查看表信息。

SELECT * FROM system.storage_policies


返回信息如下。

lALPD2sQwk5fVRRezQSo_1192_94.png

system.disks

——该表包含配置中定义的磁盘信息。

参数数据类型描述
nameString配置的磁盘名称。
pathString文件系统中挂载的磁盘路径。
free_spaceUInt64磁盘上的可用空间(Bytes)。
total_spaceUInt64磁盘的总空间(Bytes)。
keep_free_spaceUInt64磁盘上需要保持空闲的空间。定义在磁盘配置的keep_free_space_bytes 参数中。

示例:您可以执行以下命令,查看表信息。

SELECT * FROM system.disks;


返回信息如下。

image.png


三、监控

——EMR 上的 ClickHouse 集群提供了完善的监控体系,分为服务监控和节点监控两个维度。

背景信息

ClickHouse 集群服务监控只有 ClickHouse 和 Zookeeper 服务。在集群监控大盘的集群指标页面,可以查看不同组件的监控数据,可以根据需求选择时间粒度。


前提条件

已创建 ClickHouse 集群,详情请参见操作指南02期--快速入门


查看服务监控

  1. 进入监控大盘页面。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组。
    3. 单击上方的监控大盘页签。
  1. 单击上方的集群指标页签。
  2. 查看 ZOOKEEPER 服务和 ClickHouse 服务的监控数据。
    • 单击 HOST,选择 ZOOKEEPER 服务。

lALPD3zUO4ZsndfNBLrNCf4_2558_1210.png

    • 单击 HOST,选择 CLICKHOUSE 服务。

lALPD4d8t3TCe5TNBNDNCf8_2559_1232.png

ClickHouse 的监控指标分为3组,分别来自 ClickHouse 的三个系统表 metrics、events 和 asynchronous_metrics。


查看节点监控

查看节点监控又分为节点部署状态和查看节点详细监控指标。

查看部署状态

  1. 进入集群详情页面。
    1. 登录阿里云 E-MapReduce 控制台。
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组。
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击相应集群所在行的详情
  1. 查看 Zookeeper 服务或 ClickHouse 服务的监控数据。
    1. 在左侧导航栏中,选择集群服务 > Zookeeper。ClickHouse服务,需要选择集群服务 > ClickHouse
    2. 单击部署拓扑页签。该页面展示了部署服务的进程的实时状态,方便您监控组件的情况。

lALPD4BhuitGs-3NAjTNBQw_1292_564.png

查看节点详细监控指标

  1. 进入监控大盘页面。
    1. 登录阿里云 E-MapReduce 控制台。
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组。
    3. 单击上方的监控大盘页签。
  1. 单击上方的集群指标页签。
  2. clusterid 下拉列表中,选择您创建的集群 ID,hostname 下拉列表中,选择节点名称。该页面展示了节点具体的监控指标的情况,包括 Load、Disk、内存、网络和 TCP 等信息。

lALPD3Irv5gs_PXNAlXNBjg_1592_597.png


四、配置项说明

—— EMR 的 ClickHouse 集群中,主要提供了四种服务配置项以配置 ClickHouse 集群,包括客户端配置、服务端配置、用户权限配置和拓展配置。


背景信息

ClickHouse 集群提供的四种服务配置项信息如下表。

配置项详细
客户端配置client-config
服务端配置server-config
拓展配置server-metrika
用户权限配置访问权限控制

前提条件

已创建 E-MapReduce 的 ClickHouse 集群,详情请参见创建集群


注意事项

由于 ClickHouse 配置采用 XML 文件形式,所以相对比较灵活,可以进行多层嵌套。自定义配置时规则如下:

  • 如果配置可以直接填写在 yandex 标签下,则可以直接新增。
  • 如果配置包含多层嵌套,每层需要直接使用半角句号(.)进行连接。例如,在 server-users 页签中,添加新的用户 aliyun,可以设置参数为 users.aliyun.password,参数值为密码,您可以自定义。
  • 自定义配置中,请勿使用 XML 类型作为参数或者参数值。


client-config

该服务配置项用于生成 clickhouse-client 所使用的 config.xml 文件。您可以在 EMR 控制台 ClickHouse 服务的配置页面,单击 client-config 页签,查看以下参数。

配置项描述
user设置clickhouse-client使用的用户。默认值为default。
password设置clickhouse-client进程使用的用户密码。默认值为空。
prompt_by_server_display_name.production

在使用clickhouse-client的时候,允许自定义提示符。设置这个选项以配置在不同的display_name情况下的提示符,例如在server-config选项中设置display_name为default时,所展示的提示符为prompt_by_server_display_name.default中所设置的值。设置提示符允许使用的颜色,请参见 Color prompts with readline  tip_colors_and_formatting

prompt_by_server_display_name.default

prompt_by_server_display_name.test

server-config

该服务配置项用来生成 clickhouse-server 进程所使用的 config.xml 文件。您可以在 EMR 控制台 ClickHouse 服务的配置页面,单击 server-config 页签,查看以下参数。

配置项描述
tcp_port通过TCP协议与客户端通信的端口。默认值为9000
logger.count存档的ClickHouse日志文件个数。当存档的日志文件个数达到该参数设置的值时,ClickHouse会将最早的存档删除。默认值为10
logger.errorlogClickHouse Server中错误日志的输出路径。默认值为/var/log/clickhouse-server/clickhouse-server.err.log。
logger.level日志的等级,默认等级为information。可以配置的等级从严格到宽松依次为none(关闭日志)、fatal、critical、error、warning、notice、information、debug和trace。
logger.size日志文件的大小。当文件达到该参数设置的值时,ClickHouse会将其存档并重命名,并创建一个新的日志文件。默认值为1000M
logger.pathClickHouse Server正常输出的日志文件,默认为/var/log/clickhouse-server/clickhouse-server.log,会输出符合logger.level所指定的日志等级的日志。
access_control_pathClickHouse Server用于存储SQL命令创建的用户和角色配置的文件夹的路径。默认值为/var/lib/clickhouse/access/。
user_files_path用户文件的目录。会在表的函数file()中被使用。默认值为/var/lib/clickhouse/user_files/。
path_to_regions_hierarchy_file用于ClickHouse内部字典,包含区域层次结构的文件的路径。默认值为空。
path_to_regions_names_files用于ClickHouse内部字典,包含区域名称的文件的路径。默认值为空。
distributed_ddl.path该参数指定了ZooKeeper中用于存储DDL查询队列的路径。默认值为/clickhouse/task_queue/ddl。默认情况下,ClickHouse的操作CREATE、DROP、ALTER和RENAME等都只会影响正在处理查询的这一台机器。设置distributed_ddl相关参数,允许ClickHouse的查询运行在集群中(当且仅当ZooKeeper被使用时)。
tmp_policy用于存放处理大型查询时产生的临时数据。默认值为空。

server-metrika服务配置项中的storage_configuration选项中设置的磁盘策略选择一个来设置。


说明 如果此项为空,则使用tmp_path,否则tmp_path会被忽略。

path包含数据的目录的路径,末尾必须加上正斜线(/)。默认值为/var/lib/clickhouse/。
https_port通过HTTPS连接到服务器的端口。指定此参数时,必须配置OpenSSL相关参数。如果指定了http_port,此参数会被忽略。默认值为空。
query_log.flush_interval_milliseconds如果在使用的profile中设置了log_queries=1,则会记录下参与了查询操作的线程信息,这些信息会被记录在表中。query_log系列参数可以来配置此行为,支持的系列参数如下:
  • flush_interval_milliseconds:用来设置内存中的数据被刷到表中的时间间隔,默认值为7500。
  • engine:用来设置表所用的引擎。默认值为空。


    注意 设置此项时请勿设置query_log.partition_by,否则可能会引发异常。


  • partition_by:用来设置表的分区键。默认值为toYYYYMM(event_date)。
  • database:用来设置表所在的库名,默认值为system。
  • table:用来设置表名,默认值为query_thread_log。
query_log.engine
query_log.partition_by
query_log.database
query_log.table
interserver_http_credentials.user如果表使用的引擎是Replicated*类型的,通常情况下,复制是不需要进行身份验证的,但可以通过设置这些参数开启身份验证。这个凭据仅用于副本之间的通信,与ClickHouse客户端的凭据无关。
  • user:用户名。默认值为空。
  • password:密码。默认值为空。
interserver_http_credentials.password
mlock_executable当ClickHouse启动后执行mlockall可以降低首个查询延迟,并防止在高IO负载下调出ClickHouse可执行文件。默认值为false。


说明 建议启用此选项,尽管启用此选项会导致启动时间增加几秒钟。

trace_log.table如果在使用的profile中query_profiler_real_time_period_ns和query_profiler_cpu_time_period_ns其中任意一个值非0,则会将query profiler记录的stack trace存放到表中。trace_log支持的系列参数如下:
  • database:用来设置表所在的库名,默认值为system。
  • table:用来设置表名,默认值为trace_log。
  • partition_by:用来设置表的分区键。默认值为toYYYYMM(event_date)。
  • engine:用来设置表所用的引擎。默认值为空。


    注意 设置此项时请勿设置trace_log.partition_by,否则可能会引发异常。

  • flush_interval_milliseconds:用来设置内存中的数据被刷到表中的时间间隔,默认值为7500。
trace_log.database
trace_log.partition_by
trace_log.engine
trace_log.flush_interval_milliseconds
disable_internal_dns_cache

值非0时禁用内部DNS缓存。默认值为0。


说明 推荐在环境经常变化的系统中使用。例如,Kubernetes。

listen_reuse_port是否允许Socket间复用相同的Port。取值如下:
  • 0(默认值):不允许Socket间复用相同的Port。
  • 1:允许Socket间复用相同的Port。
query_thread_log.table如果在使用的profile中设置log_query_threads=1,则会记录下参与了查询操作的线程信息,这些信息会被记录在表中。
  • database:用来设置表所在的库名,默认值为system。
  • table:用来设置表名,默认值为query_thread_log。
  • partition_by:用来设置表的分区键。默认值为toYYYYMM(event_date)。
  • engine:用来设置表所用的引擎。默认值为空。


    注意 设置此项时请勿设置query_thread_log.partition_by,否则可能会引发异常。

  • flush_interval_milliseconds:用来设置内存中的数据被刷新到表中的时间间隔,默认值为7500。
query_thread_log.database
query_thread_log.partition_by
query_thread_log.engine
query_thread_log.flush_interval_milliseconds
default_database默认数据库。默认值为default。
http_server_default_response访问ClickHouse的HTTP Server时,默认返回的页面。
display_nameClickHouse Server端设置的客户端默认提示信息。默认值为空。
builtin_dictionaries_reload_interval重新加载内置字典的间隔时间,单位为秒。默认值为3600。
umask文件权限掩码。默认值为027,表示其他用户(操作系统用户)无法读取日志和数据等文件,相同组的用户仅可以读取。
uncompressed_cache_size表引擎使用MergeTree时,为解压后的block所建立的Cache大小。默认值为0。

如果设置为0,则表示不启用Cache。

timezone设置服务器的时区。默认值为Asia/Shanghai。
max_session_timeoutSession最大超时时间,单位为秒。默认值为3600。
default_session_timeoutSession默认超时时间,单位为秒。默认值为60。
max_open_files

打开文件的最大数量。默认值为262144。


说明 该参数与操作系统有关联关系,当此值设置为空时,ClickHouse会使用操作系统设定的max_open_files

tmp_path用于处理大型查询的临时数据的路径,末尾必须带上正斜杠(/)。默认值为/var/lib/clickhouse/tmp/。
max_concurrent_queries可以同时处理查询的最大数量。默认值为100。
tcp_port_secure用于与客户端安全通信的TCP端口。默认值为空。


说明 配置此参数时,需要设置OpenSSL相关参数。

listen_try如果通过listen_host所指定的协议(IPv4或IPv6)不可用时,是否立刻退出:
  • 0(默认值):不立即退出。
  • 1:立即退出。
mysql_port通过MySQL协议与客户端通信的端口。
keep_alive_timeoutClickHouse在关闭连接之前等待传入请求的秒数,单位为秒。默认值为3。
max_connections允许连接的最大数量。默认值为4096。
dns_cache_update_period设置更新存储在ClickHouse内部DNS缓存中的IP地址的周期,单位为秒。默认值为15。

更新会在单独系统线程中异步进行。

path_to_regions_names_files用于ClickHouse内部字典的,包含区域名称的文件的路径。默认为空。
include_fromClickHouse Server中的配置文件是利用XML编写的,其中有一些XML标签中包含了incl属性,这些标签的内容是可以被include_from配置所引用的文件中对应的配置所替换的。默认值为/etc/ecm/clickhouse-conf/clickhouse-server/metrika.xml。
interserver_http_portClickHouse服务器之间交换数据的端口。默认值为9009。
dictionaries_config外部字典的配置文件路径。路径可以包含通配符半角句号(.)、星号(*)和半角问号(?)。默认值为*_dictionary.xml。
http_port通过HTTP连接到服务器的端口。默认值为8123。

ClickHouse官方JDBC也通过此端口访问ClickHouse,请参见clickhouse-jdbc

users_config包含用户配置、访问权限、设置配置文件和资源限制配置等配置的文件路径。默认值为users.xml。
dictionaries_lazy_load延迟加载字典。取值如下:
  • true(默认值):会在第一次使用时创建字典,如果字典创建失败,则使用该字典的函数将引发异常。
  • false:服务器启动时创建所有字典,如果出现错误,则服务器直接退出。
listen_hostClickHouse服务器所监听的IP地址。可以指定IPv4和IPv6的地址,如果指定::则代表允许所有地址。可以设置多个IP地址,多个IP地址以逗号(,)分割。例如,127.0.0.1,localhost。默认值为0.0.0.0。
default_profile默认会使用的profile。默认值为default。
mark_cache_size表引擎使用MergeTree时,mark索引所使用的Cache大小的近似值。默认值为5368709120,单位为Byte。
listen_backlog设置backlog的数量。默认值为64。
format_schema_path存放输入数据Schema的目录。默认值为/var/lib/clickhouse/format_schemas/。

server-metrika

该服务配置项用于生成 metrika.xml 文件,其默认被 ClickHouse Server 的 config 所引用。您可以在 EMR 控制台 ClickHouse 服务的配置页面,在默认的 server-config 页签,查看以下参数。

配置项描述
clickhouse_compression为使用MergeTree相关引擎的表设置数据压缩,详细信息请参见Server Settings。默认值为空。

如果需要使用ClickHouse的压缩,请自行添加配置。

storage_configuration用来指定自定义的磁盘信息。阿里云E-MapReduce默认会自动为每块磁盘创建ClickHouse的数据目录,并且为这些磁盘创建一个HDD in order的磁盘策略。
zookeeper_servers用来配置ClickHouse集群所使用的ZooKeeper信息。默认值为创建ClickHouse集群时同时创建的ZooKeeper的值。多个ZooKeeper节点时,请使用英文逗号(,)进行分隔,例如,emr-header-1.cluster-12345:2181,emr-worker-1.cluster-12345:2181,emr-worker-2.cluster-12345:2181
quotas_defaultClickHouse允许配置不同的quota以灵活的使用不同的资源限制。修改该配置项可以修改名为default的quota设置。如果需要添加新的quota设置,您可以添加自定义设置。
clickhouse_remote_servers用来自定义集群的分片和副本信息。默认值为创建ClickHouse集群时设置的Shard和Replica数量所生成的拓扑。

例如,创建集群时设置2个 Shard 和2个 Replica,则 clickhouse_remote_servers 值如下所示:

lALPD3lGvOIuCKXNAlrNApk_665_602.png

例如,服务器上包含4块磁盘时,则 storage_configuration 值如下所示:

lALPD4d8t3VG6UXNArjNAtE_721_696.png

相关文档

ClickHouse 参数的详情信息,可以参见以下官方文档:


后续步骤

如果需要修改或添加配置项,请参见管理组件参数


五、访问权限控制

—— EMR 的 ClickHouse 集群中,主要提供了四种服务配置项以配置 ClickHouse 集群,包括客户端配置、服务端配置、用户权限配置和拓展配置。


背景信息

用户访问权限配置在 server-users 和 server-metrika 文件中,包含 users、profiles 和 quotas 三部分配置。详细配置信息:

  • users 配置
  • profiles 配置
  • quotas 配置


说明 ClickHouse 服务的客户端配置、服务端配置和拓展配置的详细信息,请参见前文配置项说明。


前提条件

已创建 E-MapReduce 的 ClickHouse 集群


users 配置

您可以在 ClickHouse 服务配置页面的服务配置区域,查看或修改配置。users 配置在 server-users 页签中。

lALPD3lGvOJ9syrNArLNBZ0_1437_690.png

参数描述
users.default.networks.hostdefault用户允许访问的主机名,默认值为空。

多个主机名时,可以使用英文逗号(,)分隔。

users.default.networks.host_regexpdefault用户允许访问的主机名的正则表达式,默认值为空。

多个表达式时,可以使用英文逗号(,)分隔。

users.default.networks.ipdefault用户允许访问的IP地址。默认值为::/0, 表示允许所有IP地址访问。

多个IP地址时,可以使用英文逗号(,)分隔。


注意 请确保users.default.networks.ipusers.default.networks.hostusers.default.networks.host_regexp三个参数中,至少有一个参数值不为空,否则可能会导致网络不通。

users.default.profiledefault用户默认使用的profile名称。默认值为default
users.default.password

ClickHouse Server中default用户的密码。默认值为空。


注意 不建议使用此配置。建议您添加自定义参数users.default.password_sha256_hexusers.default.password_double_sha1_hex以设置密码。

  • users.default.password_sha256_hex:SHA256产生的密钥的16进制字符串。
  • users.default.password_double_sha1_hex:通过两次SHA1产生的密钥的16进制字符串。
users.default.quotadefault用户默认使用的quota配置。默认值为default

profiles 配置

您可以在 ClickHouse 服务配置页面的服务配置区域,查看或修改配置。profiles 配置在 server-users 页签中。

参数描述
profiles.default.max_memory_usage用于设置名为default的profile中max_memory_usage的值。修改该参数可以设置单个查询时所能够使用的最大内存。

默认为10,000,000,000,单位为byte。

profiles.default.use_uncompressed_cache用于设置名为default的profile中use_uncompressed_cache的值。
  • 1(默认值):表示使用未压缩数据块的缓存。
  • 0:表示不使用未压缩数据块的缓存。
profiles.default.load_balancing用于设置名为default的profile中load_balancing的值。可以设置在分布式查询处理中选择副本的策略。

策略详细信息,请参见Settings

profiles.readonly.readonly用于设置名为readonly的profile中readonly的值。
  • 1:使用名为readonly的profile,只允许执行读操作。
  • 0:不开启readonly。

quotas 配置

您可以在 ClickHouse 服务配置页面的服务配置区域,查看或修改配置。quotas 配置在 server-metrika 页签中。

quotas_default:ClickHouse 允许配置不同的 quota 以灵活的使用不同的资源限制。修改该配置项可以修改名为 default 的 quota 设置(users.default.quota)。如果需要添加新的 quota 设置,你可以单击右上角的自定义配置,详细操作请参见添加组件参数


后续

您已经学习了 ClickHouse 运维,本系列还包括其他内容:



获取更详细的信息,点击下方链接查看:

EMR官网:https://www.aliyun.com/product/emapreduce

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


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

lALPD26eQMAeAf_NAd7NAvs_763_478.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

阿里巴巴开源大数据技术团队成立阿里云EMR技术圈, 每周推送前沿技术文章,直播分享经典案例、在线答疑,营造纯粹的开源大数据氛围,欢迎加入!加入钉钉群聊阿里云E-MapReduce交流2群,点击进入查看详情 https://qr.dingtalk.com/action/joingroup?code=v1,k1,cNBcqHn4TvG0iHpN3cSc1B86D1831SGMdvGu7PW+sm4=&_dt_no_comment=1&origin=11

官方博客
最新文章
相关文章
官网链接