kudu数据目录切换(新增、删除或调整)

370 阅读2分钟

参考文档

kudu数据目录切换相对比较繁琐,记录下操作过程。

参考文档:change_dir_config

操作步骤

我这里是需要将原来的四个普通云磁盘改成一个新的ssd磁盘,原来四个盘的数据目录为:/data1/kudu/tserver,/data2/kudu/tserver,/data3/kudu/tserver,/data4/kudu/tserver

新的ssd磁盘准备数据存储的目录为:/data5/kudu/tserver

具体操作步骤如下:

  1. 首先在所有节点创建对应目录,并授权给kudu服务的用户,我这里是hadoop:

    ansible emr_core -m shell -a "sudo mkdir -p /data5/kudu/tserver"
    ansible emr_core -m shell -a "sudo chown -R hadoop:hadoop /data5/kudu"
    
  2. 逐台tserver节点进行一下操作:

    1. 将数据目录配置修改成新的数据目录路径,如果加就添加,减就删除即可,多个目录用英文逗号分隔。切记不要在管理页面执行一次性修改所有节点,不管是cm还是ambri或者公有云的大数据服务(官网这么提醒,我这边腾讯云大数据服务试过管理页面修改下发后会自动创建对应目录,导致重启的时候目录不为空启动失败)。

    2. 这里还分两种情况,如果kudu版本大于等于1.12。直接修改tserver.gflags:

      --fs_metadata_dir=/data5/kudu/tserver/meta
      --fs_wal_dir=/data5/kudu/tserver/wal
      --fs_data_dir=/data5/kudu/tserver
      

      重启对应节点。重启完后正常情况下会自动平衡数据,但是会存在不自动平衡,或者平衡不完整的情况。建议还是手动执行平衡。

      不过因为目录修改过后对应的tserver会生成新的uuid,导致master上旧的uuid还记录着而且是下限的状态,需要重启master节点:

      1661939420069.jpg 然后执行命令进行kudu数据平衡:

      kudu cluster rebalance <kudu_master>
      
      1. 如果kudu的版本小于1.12,按照官网说明(我是1.13的版本),修改配置文件前需要先停止对应的节点。然后修改完配置还得通过update_dirs命令修数据目录:

        sudo runuser -u hadoop  sh /usr/local/service/kudu/bin/kudu fs update_dirs --force --fs_wal_dir=/data5/kudu/tserver/wal --fs_data_dirs=/data5/kudu/tserver --fs_metadata_dir=/data5/kudu/tserver/meta
        

        执行完后再启动节点进行数据冲平衡。