当EMR的ClickHouse集群数据存储空间不足时,则需要进行扩容操作。ClickHouse磁盘扩容分为云盘扩容和云盘挂载两种,本文主要介绍为您介绍如何挂载云盘。

背景信息

在使用EMR ClickHouse集群时,尽管在创建前已经做好数据规模的估算了,但随着业务的发展,EMR ClickHouse集群的存储可能依旧不够用,无论是临时扩容以应对临时的高峰(例如,应对大促时期的数据量),或是需要长期扩容以应对日益增长的数据,可能都需要对EMR ClickHouse集群的磁盘进行扩容。

如果ClickHouse集群当前所挂载的数据盘为ESSD云盘、SSD云盘或高效云盘等类型的云盘,则可以直接扩容云盘的容量而不需要修改任何配置。扩容详细信息,请参见扩容磁盘

前提条件

已在EMR控制台创建了ClickHouse集群,详情请参见创建集群

操作步骤

  1. 进入实例的云盘页面。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击相应集群所在行的详情
    5. 主机信息区域,单击目标实例的ECS ID
  2. 在ECS控制台创建云盘,详情请参见创建云盘
    创建云盘时,是否挂载选择为挂载到ECS实例。按量付费的集群,释放设置需要选择为云盘随实例释放
  3. 在目标实例的节点,挂载磁盘。
    1. 登录目标实例节点,详情请参见登录集群
    2. 执行lsblk命令,查看未挂载的磁盘。
      unmounted

      MOUNTPOINT下显示为空的即是未挂载的磁盘。

    3. 执行以下命令,格式化磁盘。
       mkfs.ext4 /dev/vdf
      注意 /dev/vdf为未挂载磁盘的名称,请根据实际情况替换为前一步骤中查找到的未挂载磁盘。
    4. 执行以下命令,创建挂载目录。
       mkdir -p /mnt/disk5
      注意 命令中的disk5表示disk的名称,可以是5到n,n取决于您需要挂载多少块盘。 本文示例是挂载disk5,请您根据实际情况修改。
    5. 执行以下命令,挂载磁盘。
      mount -t ext4 /dev/vdf /mnt/disk5
      注意 当前操作仅保证系统未重启可用,重启后磁盘不会自动挂载。
    6. 将磁盘挂载信息写入到/etc/fstab中,使磁盘在操作系统重启后自动挂载。
      1. 执行以下命令,打开fstab文件。
        vim /etc/fstab
      2. 添加以下内容至文件末尾。
        /dev/vdf /mnt/disk5 ext4 defaults,noatime,nofail 0 0
  4. 在挂载目录中创建clickhouse数据目录。
    1. 执行以下命令,创建clickhouse数据目录。
      mkdir -p /mnt/disk5/clickhouse
    2. 执行以下命令,修改目录权限。
      chown -R clickhouse:hadoop /mnt/disk5/clickhouse/
  5. 在EMR集群中的所有机器上,重复执行步骤1~步骤4
  6. 在EMR控制台,修改ClickHouse配置项。
    1. 进入ClickHouse配置页面。
      1. 登录阿里云E-MapReduce控制台
      2. 单击上方的集群管理页签。
      3. 集群管理页面,单击相应集群所在行的详情
      4. 在左侧导航栏中,选择集群服务 > ClickHouse
      5. 在ClickHouse服务页面,单击配置页签。
    2. 单击server-metrika页签,修改参数storage_configuration的参数值。
      具体修改点为以下两处:
      1. disks中增加扩容的磁盘信息。
        <disk5>
            <path>/mnt/disk5/clickhouse/</path>
            <keep_free_space_bytes>10485760</keep_free_space_bytes>
          </disk5>
      2. single中增加扩容的磁盘名称。
        <disk>disk5</disk>

      以EMR-3.38.0版本为例,修改后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>
        <disk5>
          <path>/mnt/disk5/clickhouse/</path>
          <keep_free_space_bytes>10485760</keep_free_space_bytes>
        </disk5>
      </disks>
      
      <policies>
        <default>
          <volumes>
            <single>
              <disk>disk1</disk>
              <disk>disk2</disk>
              <disk>disk3</disk>
              <disk>disk4</disk>
              <disk>disk5</disk>
            </single>
          </volumes>
        </default>
      </policies>
    3. 保存配置。
      1. 在ClickHouse服务的配置页面,单击保存
      2. 确认修改对话框中,输入执行原因,打开自动更新配置开关,单击确定
    4. 部署客户端配置。
      1. 在ClickHouse服务的配置页面,单击部署客户端配置
      2. 执行集群操作对话框中,输入执行原因,单击确定
      3. 确认对话框中,单击确定
  7. 检查配置是否完成。
    1. 使用SSH方式登录ClickHouse集群,详情请参见登录集群
    2. 执行如下命令,启动ClickHouse客户端。
      clickhouse-client -m
      您也可以使用默认的default用户启动ClickHouse客户端。
      clickhouse-client -m -u default --password
    3. 执行如下命令,查看磁盘信息。
      select * from system.disks;
      返回信息如下所示。
      ┌─name────┬─path───────────────────┬──free_space─┬─total_space─┬─keep_free_space─┬─type──┐
      │ default │ /var/lib/clickhouse/   │ 83830616064 │ 84014424064 │               0 │ local │
      │ disk1   │ /mnt/disk1/clickhouse/ │ 83820130304 │ 84003938304 │        10485760 │ local │
      │ disk2   │ /mnt/disk2/clickhouse/ │ 83928371200 │ 84003938304 │        10485760 │ local │
      │ disk3   │ /mnt/disk3/clickhouse/ │ 83928371200 │ 84003938304 │        10485760 │ local │
      │ disk4   │ /mnt/disk4/clickhouse/ │ 83928371200 │ 84003938304 │        10485760 │ local │
      │ disk5   │ /mnt/disk5/clickhouse/ │ 39782125568 │ 41996746752 │        10485760 │ local │
      └─────────┴────────────────────────┴─────────────┴─────────────┴─────────────────┴───────┘
                                          
    4. 执行如下命令,查看磁盘存储策略。
      select * from system.storage_policies;
      返回信息如下所示。
      ┌─policy_name──┬─volume_name─┬─volume_priority─┬─disks─────────────────────────────┬─volume_type─┬─max_data_part_size─┬─move_factor─┐
      │ default      │ default     │               1 │ ['default']                               │ JBOD        │                  0 │           0 │
      │ hdd_in_order │ single      │               1 │ ['disk1','disk2','disk3','disk4','disk5'] │ JBOD        │                  0 │         0.2 │     0 │         0.2 │
      └──────────────┴─────────────┴─────────────────┴───────────────────────────────────┴─────────────┴────────────────────┴─────────────┘
                                          
      当回显信息如上文所示时,表示磁盘扩容操作完成。