本文为您介绍ClickHouse服务的配置项。

前提条件

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

注意事项

由于ClickHouse配置采用XML文件形式,所以相对比较灵活,可以进行多层嵌套。自定义配置时规则如下:
  • 如果配置可以直接填写在yandex标签下,则可以直接新增。
  • 如果配置包含多层嵌套,每层直接需要使半角句号(.)进行连接。

    例如,在server-users中添加新的用户aliyun,可以设置key为users.aliyun.password,value为自定义的密码。

  • 请勿将XML类型作为key或者value填写到自定义配置中。

操作步骤

  1. 进入ClickHouse页面。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击相应集群所在行的详情
    5. 在左侧导航栏,选择集群服务 > ClickHouse
  2. 在ClickHouse服务页面,单击配置页签。
    CK-configure

    服务配置项如下:

    • server-metrika

      该服务配置项用于生成metrika.xml,其默认被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_default ClickHouse允许配置不同的quota以灵活的使用不同的资源限制。修改该配置项可以修改名为default的quota设置。如果需要添加新的quota设置,您可以添加自定义设置。
      clickhouse_remote_servers 用来自定义集群的分片和副本信息。默认值为创建ClickHouse集群时设置的Shard和Replica数量所生成的拓扑。
      例如,创建集群时设置2个Shard和2个Replica,则clickhouse_remote_servers值如下所示:
      <cluster_emr>
        <shard>
          <weight>1</weight>
          <internal_replication>true</internal_replication>
          <replica>
            <host>emr-header-1.cluster-12345</host>
            <port>9000</port>
          </replica>
          <replica>
            <host>emr-worker-1.cluster-12345</host>
            <port>9000</port>
          </replica>
        </shard>
        <shard>
          <weight>1</weight>
          <internal_replication>true</internal_replication>
          <replica>
            <host>emr-worker-2.cluster-12345</host>
            <port>9000</port>
          </replica>
          <replica>
            <host>emr-worker-3.cluster-12345</host>
            <port>9000</port>
          </replica>
        </shard>
      </cluster_emr>
      例如,服务器上包含4块磁盘时,则storage_configuration值如下所示:
      <disks>
        <disk1>
          <path>/mnt/disk1/clickhouse/</path>
          <keep_free_space_bytes>10485760</keep_free_space_bytes>
        </disk1>
        <disk2>
          <path>/mnt/disk2/clickhouse/</path>
          <keep_free_space_bytes>10485760</keep_free_space_bytes>
        </disk2>
        <disk3>
          <path>/mnt/disk3/clickhouse/</path>
          <keep_free_space_bytes>10485760</keep_free_space_bytes>
        </disk3>
        <disk4>
          <path>/mnt/disk4/clickhouse/</path>
          <keep_free_space_bytes>10485760</keep_free_space_bytes>
        </disk4>
      </disks>
      <policies>
        <hdd_in_order>
          <volumes>
            <single>
              <disk>disk1</disk>
              <disk>disk2</disk>
              <disk>disk3</disk>
              <disk>disk4</disk>
            </single>
          </volumes>
        </hdd_in_order>
      </policies>
    • client-config

      该服务配置项用于生成clickhouse-client所使用的config.xml

      配置项 描述
      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 readlinetip_colors_and_formatting
      prompt_by_server_display_name.default
      prompt_by_server_display_name.test
      user 设置clickhouse-client使用的用户。默认值为default。
    • server-users

      该服务配置项用来生成clickhouse-server进程所使用的users.xml

      配置项 描述
      users.default.networks.host default用户允许访问的主机名,默认值为空。
      profiles.default.use_uncompressed_cache 用于设置名为default的profile中use_uncompressed_cache的值。
      • 1:默认值,表示使用未压缩数据块的缓存。
      • 0:不使用未压缩数据块的缓存。
      users.default.networks.host_regexp default用户允许访问的主机名的正则表达式,默认值为空。
      profiles.default.max_memory_usage 用于设置名为default的profile中max_memory_usage的值。修改该参数可以设置单个查询时所能够使用的最大内存。

      默认值为10,000,000,000,单位为Byte。

      users.default.profile default用户默认使用的profile名称。默认值为default。
      profiles.readonly.readonly 用于设置名为readonly的profile中readonly的值。
      • 1:使用名为readonly的profile,只允许执行读操作。
      • 0:不开启readonly。
      users.default.networks.ip default用户允许访问的IP地址,默认值为::/0表示所有IP均可访问。
      users.default.password ClickHouse Server中default用户的密码。默认值为空。
      注意 不建议使用此配置项,您可以添加自定义参数users.default.password_sha256_hexusers.default.password_double_sha1_hex以设置密码。
      • sha256_hex:表示SHA256产生的密钥的十六进制字符串。
      • double_sha1_hex:表示通过两次SHA1产生的密钥的十六进制字符串。
      users.default.quota default用户默认使用的quota配置。默认值为default。
      profiles.default.load_balancing 用于设置名为default的profile中load_balancing的值。可以设置在分布式查询处理中选择副本的策略,策略详情,请参见Settings
    • server-config

      该服务配置项用来生成clickhouse-server进程所使用的config.xml

      配置项 描述
      tcp_port 通过TCP协议与客户端通信的端口。默认值为9000。
      logger.count 存档的ClickHouse日志文件个数。当存档的日志文件个数达到该参数设置的值时,ClickHouse会将最早的存档删除。默认存档个数为10。
      logger.errorlog ClickHouse Server中错误日志的输出路径。默认值为/var/log/clickhouse-server/clickhouse-server.err.log
      logger.level 日志的等级,默认等级为trace。可以配置的等级从严格到宽松依次为none(关闭日志)、fatal、critical、error、warning、notice、information、debug和trace。
      logger.size 日志文件的大小。当文件达到该参数设置的值时,ClickHouse会将其存档并重命名,并创建一个新的日志文件。默认大小为1000 M。
      logger.path ClickHouse Server正常输出的日志文件,默认为/var/log/clickhouse-server/clickhouse-server.log,会输出符合logger.level所指定的日志等级的日志。
      access_control_path ClickHouse 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,则queries会被记录到表中。
      • 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_nsquery_profiler_cpu_time_period_ns其中任意一个值非0,则会将query profiler记录的stack trace存放到表中。
      • 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_name ClickHouse Server端设置的客户端默认提示信息。默认为空。
      builtin_dictionaries_reload_interval 重新加载内置字典的间隔时间,单位为秒。默认值为3600。
      umask 文件权限掩码。默认值为027,表示其他用户(操作系统用户)无法读取日志和数据等文件,相同组的用户仅可以读取。
      uncompressed_cache_size 表引擎使用MergeTree时,为解压后的block所建立的Cache大小。如果设置为0,则表示不启用Cache。默认值为0。
      timezone 设置服务器的时区。默认值为Asia/Shanghai
      max_session_timeout Session最大超时时间,单位为秒。默认值为3600。
      default_session_timeout Session默认超时时间,单位为秒。默认值为60。
      max_open_files 打开文件的最大数量。当此值设置为空时,ClickHouse会使用操作系统设定的max_open_files。默认值为262144。
      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_timeout ClickHouse在关闭连接之前等待传入请求的秒数,默认值为3。
      max_connections 允许连接的最大数量。默认为4096。
      dns_cache_update_period 设置更新存储在ClickHouse内部DNS缓存中的IP地址的周期。默认值为15,单位为秒。

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

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

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

      users_config 包含用户配置、访问权限、设置配置文件和资源限制配置等配置的文件路径。默认值为users.xml
      dictionaries_lazy_load 延迟加载字典:
      • true:会在第一次使用时创建字典,如果字典创建失败,则使用该字典的函数将引发异常。
      • false:服务器启动时创建所有字典,如果出现错误,则服务器直接退出。
      默认值为true。
      listen_host ClickHouse服务器所监听的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/

后续步骤

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