Changing the ZooKeeper Storage Directory

Scenario

When the defined storage directory of ZooKeeper is incorrect, or when the storage plan of ZooKeeper is changed, log in to FusionInsight Manager to change the storage directory of ZooKeeper to ensure ZooKeeper runs properly. The storage directory of ZooKeeper includes the local data storage directory dataDir. Changing the ZooKeeper storage directory includes the following scenarios:

Impact on the System

Prerequisites

Procedure

Check the environment.

  1. Log in to FusionInsight Manager, choose Cluster > Name of the desired cluster > Services to check whether Running Status of ZooKeeper is Normal.

    • If yes, go to 3.
    • If no, the ZooKeeper status is unhealthy. Go to 2.

  2. Rectify the ZooKeeper fault.
  3. Determine whether to change the storage directory of the ZooKeeper role or that of a ZooKeeper instance:

    • To change the storage directory of the ZooKeeper role, go to 4.
    • To change the storage directory of a single ZooKeeper instance, go to 9.

Change the storage directory of the ZooKeeper role.

  1. Choose Cluster > Name of the desired cluster > Services > ZooKeeper > Stop to stop the ZooKeeper service.
  2. Log in to each node where the ZooKeeper service is installed as user root and perform the following operations:

    1. Create a target directory.

      For example, to create the target directory ${BIGDATA_DATA_HOME}/zookeeper2, run the following command:

      mkdir ${BIGDATA_DATA_HOME}/zookeeper2.

    2. Format the new disk, and mount the target directory to the new disk. For example, mount ${BIGDATA_DATA_HOME}/zookeeper2 to the new disk.
    3. Modify permissions on the new directory.

      For example, the new directory is ${BIGDATA_DATA_HOME}/zookeeper2.

      Run chmod 700 ${BIGDATA_DATA_HOME}/zookeeper2 and chown omm:wheel ${BIGDATA_DATA_HOME}/zookeeper2.

    4. Run the following commands to copy the original data to the new directory:

      For example, run cp -pr ${BIGDATA_DATA_HOME}/zookeeper/version-2/ ${BIGDATA_DATA_HOME}/zookeeper2/

      cp -pr ${BIGDATA_DATA_HOME}/zookeeper/myid ${BIGDATA_DATA_HOME}/zookeeper2/

  3. On FusionInsight Manager, choose Cluster > Name of the desired cluster > Service > ZooKeeper > Configuration to go to the configuration page of the ZooKeeper service.

    Set dataDir of ZooKeeper and quorumpeer to the new target directory, such as ${BIGDATA_DATA_HOME}/zookeeper2.

  4. Click Save, and then click OK. Restart the ZooKeeper service.

    Click Finish when the system displays "Operation successful". ZooKeeper is successfully started.

  5. Rename the original storage directory ${BIGDATA_DATA_HOME}/zookeeper. If the directory is a root directory that is mounted to an independent disk, remove the disk before renaming the directory and no further action is required.

Change the storage directory of a single ZooKeeper instance.

  1. Choose Cluster > Name of the desired cluster > Service > ZooKeeper > Instances. Select the ZooKeeper instance whose storage directory needs to be modified, and choose More > Stop Instance.
  2. Log in to the ZooKeeper node as user root, and perform the following operations:

    1. Create a target directory.

      For example, to create the target directory ${BIGDATA_DATA_HOME}/zookeeper2, run the following command:

      mkdir ${BIGDATA_DATA_HOME}/zookeeper2.

    2. Mount the target directory to the new disk. For example, mount ${BIGDATA_DATA_HOME}/yarn/data2 to the new disk.
    3. Modify permissions on the new directory.

      For example, to modify permissions on the ${BIGDATA_DATA_HOME}/yarn/data2 directory, run the following commands:

      chmod 700 ${BIGDATA_DATA_HOME}/zookeeper2 and chown omm:wheel ${BIGDATA_DATA_HOME}/zookeeper2

    4. Run the following commands to copy the original data to the new directory:

      For example, run cp -pr ${BIGDATA_DATA_HOME}/zookeeper/version-2/ ${BIGDATA_DATA_HOME}/zookeeper2/

      cp -pr ${BIGDATA_DATA_HOME}/zookeeper/myid ${BIGDATA_DATA_HOME}/zookeeper2/

  3. On FusionInsight Manager, click the specified ZooKeeper instance, and switch to the Instance Configuration page.

    Set dataDir of ZooKeeper and quorumpeer to the new target directory, such as ${BIGDATA_DATA_HOME}/zookeeper2.

  4. Click Save, and then click OK. Restart the ZooKeeper instance.

    Click Finish when the system displays "Operation successful". The ZooKeeper instance is successfully started.

  5. Rename the original storage directory ${BIGDATA_DATA_HOME}/zookeeper. If the directory is a root directory that is mounted to an independent disk, remove the disk before renaming the directory and no further action is required.