
# 使用ZooKeeper客户端
ZooKeeper是一个开源的，高可靠的，分布式一致性协调服务。ZooKeeper设计目标是用来解决那些复杂，易出错的分布式系统难以保证数据一致性的。不必开发专门的协同应用，十分适合高可用服务保持数据一致性。
#### 背景信息
在使用客户端前，除主管理节点以外的客户端，需要下载并更新客户端配置文件。
#### 操作步骤
MRS 2.x及以前版本集群执行以下操作：
1. 下载客户端配置文件。
   
   1. 登录MRS控制台，在左侧导航栏选择"现有集群"，单击待操作集群的名称。
   
   2. 选择"组件管理"。
      ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
      针对MRS 1.8.10及之前版本，登录MRS Manager页面，具体请参见[访问MRS Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0102.html)，然后选择"服务管理"。
      
   
   3. 单击"下载客户端"。 "客户端类型"选择"仅配置文件"，"下载路径"选择"服务器端"，单击"确定"开始生成客户端配置文件，文件生成后默认保存在主管理节点"/tmp/MRS-client"。
      图1仅下载客户端的配置文件   
      ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0265958852.png) 
   
   
   
   
2. 登录MRS Manager的主管理节点。 
   1. 在MRS控制台，选择"现有集群"，单击集群名称，在"节点管理"页签中查看节点名称，名称中包含"master1"的节点为Master1节点，名称中包含"master2"的节点为Master2节点。 MRS Manager的主备管理节点默认安装在集群Master节点上。在主备模式下，由于Master1和Master2之间会切换，Master1节点不一定是MRS Manager的主管理节点，需要在Master1节点中执行命令，确认MRS Manager的主管理节点。命令请参考[2.d]。
      
   
   2. 以**root** 用户使用密码方式登录Master1节点。操作方法，请参见[登录集群节点](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0083.html)章节。
   
   3. 切换至**omm** 用户。
      *sudo su - root*
      *su - omm*
      
   
   4. 执行以下命令确认MRS Manager的主管理节点。
      sh ${BIGDATA_HOME}/om-0.0.1/sbin/status-oms.sh
      回显信息中"HAActive"参数值为"active"的节点为主管理节点（如下例中"mgtomsdat-sh-3-01-1"为主管理节点），参数值为"standby"的节点为备管理节点（如下例中"mgtomsdat-sh-3-01-2"为备管理节点）。
      ```
      Ha mode
      double
      NodeName              HostName                      HAVersion          StartTime                HAActive             HAAllResOK           HARunPhase 
      192-168-0-30          mgtomsdat-sh-3-01-1           V100R001C01        2014-11-18 23:43:02      active               normal               Actived    
      192-168-0-24          mgtomsdat-sh-3-01-2           V100R001C01        2014-11-21 07:14:02      standby              normal               Deactived
      ```
      
   
   5. 使用**root** 用户登录MRS Manager的主管理节点，例如"192-168-0-30"节点，并执行以下命令切换到**omm** 用户。
      *sudo su - omm*
      
   
   
   
   
3. 执行以下命令切换到客户端安装目录。例如"/opt/client"。 
   **cd /opt/client**
   
   
4. 执行以下命令，更新主管理节点的客户端配置。
   
   **sh refreshConfig.sh /opt/client** *客户端配置文件压缩包完整路径*
   例如，执行命令：
   **sh refreshConfig.sh /opt/client/tmp/MRS-** **c** **lient/MRS_Services_Client.tar**
   界面显示以下信息表示配置刷新更新成功：
   ```
   ReFresh components client config is complete.
    Succeed to refresh components client config.
   ```
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
   对于MRS 1.8.5及之后版本集群，步骤[1]\~[4]的操作也可以参考[更新客户端（3.x之前版本）](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2130.html)页面的方法二操作。
   
   
5. 在Master节点使用客户端。 
   1. 在已更新客户端的主管理节点，例如"192-168-0-30"节点，执行以下命令切换到客户端目录。 **cd /opt/client**
      
   
   2. 执行以下命令配置环境变量。 *source bigdata_env*
      
   
   3. 如果当前集群已启用Kerberos认证，执行以下命令认证当前用户，具体请参见[准备开发用户](https://support.huaweicloud.com/devg-mrs/mrs_06_0361.html)创建对应用户。如果当前集群未启用Kerberos认证，则无需执行此命令。
      kinit MRS集群用户
      例如，kinit zookeeperuser。
      
   
   4. 直接执行ZooKeeper组件的客户端命令。 **zkCli.sh -server *\<*** *ZooKeeper节点主机名\>:\<port\>*
      例如：***zkCli.sh -server node-master1DGhZ:2181***
      
   
   
   
   
6. 运行ZooKeeper客户端命令。 
   1. 创建ZNode。
      ```
      create /test
      ```
      
   
   2. 查看ZNode信息。
      ```
      ls /
      ```
      
   
   3. 向ZNode中写入数据。
      ```
      set /test "zookeeper test"
      ```
      
   
   4. 查看写入ZNode中的数据。
      ```
      get /test
      ```
      
   
   5. 删除创建的ZNode。
      ```
      delete /test
      ```
      
   
   
   
   
MRS 3.x及以后版本集群执行以下操作：
1. 下载客户端配置文件。 
   1. 登录FusionInsight Manager页面，具体请参见[访问FusionInsight Manager（MRS 3.x及之后版本）](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2124.html)。
   
   2. 选择"集群 \> *待操作集群的名称* \> 概览 \> 更多 \> 下载客户端"。
   
   3. 下载集群客户端。 "选择客户端类型"选择"仅配置文件"，选择平台类型，单击"确定"开始生成客户端配置文件，文件生成后默认保存在主管理节点"/tmp/FusionInsight-Client/"。
      
   
   
   
   
2. 登录Manager的主管理节点。 
   1. 以**root**用户登录任意部署Manager的节点。
   
   2. 执行以下命令确认主备管理节点。 **sh ${BIGDATA_HOME}/om-server/om/sbin/status-oms.sh**
      界面打印信息中"HAActive"参数值为"active"的节点为主管理节点（如下例中"node-master1"为主管理节点），参数值为"standby"的节点为备管理节点（如下例中"node-master2"为备管理节点）。
      ```
      HAMode 
      double 
      NodeName             HostName        HAVersion          StartTime                HAActive             HAAllResOK           HARunPhase  
      192-168-0-30         node-master1    V100R001C01        2020-05-01 23:43:02      active               normal               Actived     
      192-168-0-24         node-master2    V100R001C01        2020-05-01 07:14:02      standby              normal               Deactived
      ```
      
   
   3. 以**root** 用户登录主管理节点，并执行以下命令切换到**omm** 用户。
      *sudo su - omm*
      
   
   
   
   
3. 执行以下命令切换到客户端安装目录。例如"/opt/client"。 
   **cd /opt/client**
   
   
4. 执行以下命令，更新主管理节点的客户端配置。 
   **sh refreshConfig.sh /opt/client** *客户端配置文件压缩包完整路径*
   例如，执行命令：
   **sh refreshConfig.sh /opt/client /tmp/FusionInsight-C** **lient/** **FusionInsight_Cluster_1_Services_Client.tar**
   界面显示以下信息表示配置刷新更新成功：
   ```
   ReFresh components client config is complete.
   Succeed to refresh components client config.
   ```
   
   

5. 在Master节点使用客户端。 
   1. 在已更新客户端的主管理节点，例如"192-168-0-30"节点，执行以下命令切换到客户端目录。 **cd /opt/client**
      
   
   2. 执行以下命令配置环境变量。 *source bigdata_env*
      
   
   3. 如果当前集群已启用Kerberos认证，执行以下命令认证当前用户，具体请参见[角色管理](https://support.huaweicloud.com/usermanual-mrs/admin_guide_000148.html)配置拥有对应权限的角色，参考[创建用户](https://support.huaweicloud.com/usermanual-mrs/admin_guide_000137.html)为用户绑定对应角色。如果当前集群未启用Kerberos认证，则无需执行此命令。
      *kinit MRS 集群用户*
      例如，**kinit zookeeperuser**。
      
   
   4. 直接执行ZooKeeper组件的客户端命令。 **zkCli.sh -server *\<*** *ZooKeeper节点主机名\>:\<port\>*
      例如：**zkCli.sh -server node-master1DGhZ:2181**
      
   
   
   
   
6. 运行ZooKeeper客户端命令。 
   1. 创建ZNode。
      ```
      create /test
      ```
      
   
   2. 查看ZNode信息。
      ```
      ls /
      ```
      
   
   3. 向ZNode中写入数据。
      ```
      set /test "zookeeper test"
      ```
      
   
   4. 查看写入ZNode中的数据。
      ```
      get /test
      ```
      
   
   5. 删除创建的ZNode。
      ```
      delete /test
      ```
      
   
   
   
   
 
