
# 准备Hive应用开发和运行环境
#### 准备开发环境
Hive组件可以使用Java（JDBC和HCatalog）、Python、Python3接口进行应用开发，要准备的开发和运行环境分别如下表所示。
表1JDBC/Hcatalog开发环境 
| **准备项**            | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|
| 操作系统               | - 开发环境：Windows系统，支持Windows7以上版本。  - 运行环境：Windows系统或Linux系统。 如需在本地调测程序，运行环境需要和集群业务平面网络互通。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| 安装JDK              | 开发和运行环境的基本配置。版本要求如下： 服务端和客户端仅支持自带的OpenJDK，版本为1.8.0_272，不允许替换。 对于客户应用需引用SDK类的Jar包运行在客户应用进程中的： MRS 3.6.0-LTS之前版本： - X86客户端：Oracle JDK：支持1.8版本；IBM JDK：支持1.8.5.11版本。  - TaiShan客户端：OpenJDK：支持1.8.0_272版本。   MRS 3.6.0-LTS及之后版本： - X86客户端： - OpenJDK：支持JDK 8、JDK 17和JDK 21。  - 毕昇JDK：支持JDK 8、JDK 17和JDK 21。  - Oracle JDK：支持JDK 8、JDK 17和JDK 21。    - ARM客户端： - OpenJDK：支持JDK 8、JDK 17和JDK 21。  - 毕昇JDK：支持JDK 8、JDK 17和JDK 21。  - Oracle JDK：支持JDK 8、JDK 17和JDK 21。     说明： 基于安全考虑，服务端只支持TLS V1.2及以上的加密协议。 IBM JDK默认只支持TLS V1.0，若使用IBM JDK，请配置启动参数"com.ibm.jsse2.overrideDefaultTLS"为"true"，设置后可以同时支持TLS V1.0/V1.1/V1.2，详情参见<https://www.ibm.com/support/knowledgecenter/zh/SSYKE2_8.0.0/com.ibm.java.security.component.80.doc/security-component/jsse2Docs/matchsslcontext_tls.html#matchsslcontext_tls>。 |
| 安装和配置IntelliJ IDEA | 用于开发Hive应用程序的工具。版本要求如下： JDK使用1.8版本，IntelliJ IDEA使用2019.1或其他兼容版本。 说明： - 若使用IBM JDK，请确保IntelliJ IDEA中的JDK配置为IBM JDK。  - 若使用Oracle JDK，请确保IntelliJ IDEA中的JDK配置为Oracle JDK。  - 若使用Open JDK，请确保IntelliJ IDEA中的JDK配置为Open JDK。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 安装Maven            | 开发环境的基本配置。用于项目管理，贯穿软件开发生命周期。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 准备开发用户             | 参考[准备MRS应用开发用户](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_020002.html)进行操作，准备用于应用开发的集群用户并授予相应权限。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 7-zip              | 用于解压"\*.zip"和"\*.rar"文件，支持7-Zip 16.04版本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   
表2Python开发环境 
| 准备项          | 说明                                                                                                         |
|:---|:---|
| 操作系统         | 开发环境和运行环境：Linux系统。                                                                                         |
| 安装Python     | 用于开发Hive应用程序的工具，版本要求不低于2.6.6，最高不超过2.7.13。                                                                  |
| 安装setuptools | Python开发环境的基本配置，版本要求5.0以上。                                                                                 |
| 准备开发用户       | 参考[准备MRS应用开发用户](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_020002.html)进行操作，准备用于应用开发的集群用户并授予相应权限。 |
   
![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
Python开发工具的详细安装配置可参见[配置Hive Python样例工程](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_110010.html)。
表3Python3开发环境 
| 准备项          | 说明                                                                                                         |
|:---|:---|
| 操作系统         | 开发环境和运行环境：Linux系统。                                                                                         |
| 安装Python3    | 用于开发Hive应用程序的工具，版本要求不低于3.6，最高不超过3.8。                                                                       |
| 安装setuptools | Python3开发环境的基本配置，版本要求为47.3.1。                                                                              |
| 准备开发用户       | 参考[准备MRS应用开发用户](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_020002.html)进行操作，准备用于应用开发的集群用户并授予相应权限。 |
   
![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
Python3开发工具的详细安装配置可参见[配置Hive Python3样例工程](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_110011.html)。
#### 准备运行环境
进行应用开发时，需要同时准备代码的运行调测的环境，用于验证应用程序运行正常。
- 如果本地Windows开发环境和集群业务平面网络互通，可下载集群客户端到本地，获取相关调测程序所需的集群配置文件及配置网络连通后，然后直接在Windows中进行程序调测。
  1. 下载并解压客户端软件包。
     - MRS 3.3.0之前版本，[登录FusionInsight Manager页面](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0129.html)，选择"集群 \> 概览 \> 更多 \> 下载客户端"，"选择客户端类型"设置为"仅配置文件"，单击"确定"，等待客户端文件包生成后根据浏览器提示下载客户端到本地并解压。
     
     - MRS 3.3.0及之后版本，[登录FusionInsight Manager页面](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0129.html)，在"主页"右上方单击"下载客户端"，"选择客户端类型"设置为"仅配置文件"，单击"确定"，等待客户端文件包生成后根据浏览器提示下载客户端到本地并解压。
     
     
     例如，客户端文件压缩包为"FusionInsight_Cluster_1_Services_Client.tar"，解压后得到"FusionInsight_Cluster_1_Services_ClientConfig_ConfigFiles.tar"，继续解压该文件。解压到本地PC的"D:\\FusionInsight_Cluster_1_Services_ClientConfig_ConfigFiles"目录下（路径中不能有空格）。
     
  
  2. 进入客户端解压路径"FusionInsight_Cluster_1_Services_ClientConfig_ConfigFiles\\Hive\\config"，手动将配置文件导入到Hive样例工程的配置文件目录中（通常为"resources"文件夹）。 [准备MRS应用开发用户](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_020002.html)时获取的keytab文件也放置于该目录下，主要配置文件说明如[表4]所示。
      表4配置文件 
     | **文件名称**               | **作用**                |
     |:---|:---|
     | hivemetastore-site.xml | 配置Hive详细参数。           |
     | hiveclient.properties  | Hive客户端连接相关配置参数。      |
     | user.keytab            | 对于Kerberos安全认证提供用户信息。 |
     | krb5.conf              | Kerberos Server配置信息。  |
     | core-site.xml          | Hadoop客户端相关配置参数。      |
        
     
  
  3. 在应用开发过程中，如需在本地Windows系统中调测应用程序，需要复制解压目录下的"hosts"文件中的内容到客户端所在节点的hosts文件中，确保本地机器能与解压目录下"hosts"文件中所列出的各主机在网络上互通。
     ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
     - 当客户端所在主机不是集群中的节点时，配置客户端网络连接，可避免执行客户端命令时出现错误。
     
     - Windows本地hosts文件存放路径举例："C:\\WINDOWS\\system32\\drivers\\etc\\hosts"。
       
   

- 如果使用Linux环境调测程序，需在准备安装集群客户端的Linux节点并获取相关配置文件。
  1. 在节点中安装客户端，例如客户端安装目录为"/opt/client"。 客户端机器的时间与集群的时间要保持一致，时间差小于5分钟。
     集群的Master节点或者Core节点使用客户端可参考[集群内节点使用MRS客户端](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0090.html)，MRS集群外客户端的安装操作可参考[集群外节点使用MRS客户端](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0091.html)。
     
  
  2. [登录FusionInsight Manager页面](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0129.html)，下载集群客户端软件包至主管理节点并解压，然后以**root** 用户登录主管理节点，进入集群客户端解压路径下，复制"FusionInsight_Cluster_1_Services_ClientConfig/Hive/config"路径下的所有配置文件至客户端节点，放置到与准备放置编译出的jar包同目录的"src/main/resources"目录下，用于后续调测，例如"/opt/client/src/main/resources"。
     例如客户端软件包为"FusionInsight_Cluster_1_Services_Client.tar"，下载路径为主管理节点的"/tmp/FusionInsight-Client"：
     **cd /tmp/FusionInsight-Client**
     **tar -xvf FusionInsight_Cluster_1_Services_Client.tar**
     **tar -xvf FusionInsight_Cluster_1_Services_ClientConfig.tar**
     **cd FusionInsight_Cluster_1_Services_ClientConfig**
     **scp Hive/config/\* root@** *客户端节点IP地址* **:/opt/client/src/main/resources**
     [准备MRS应用开发用户](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_020002.html)时获取的keytab文件也放置于该目录下，主要配置文件说明如[表5]所示。
      表5配置文件 
     | **文件名称**               | **作用**                |
     |:---|:---|
     | hivemetastore-site.xml | 配置Hive详细参数。           |
     | hiveclient.properties  | 配置Hive详细参数。           |
     | user.keytab            | 对于Kerberos安全认证提供用户信息。 |
     | krb5.conf              | Kerberos Server配置信息。  |
     | core-site.xml          | 配置Hive详细参数。           |
        
     
  
  3. 检查客户端节点网络连接。 在安装客户端过程中，系统会自动配置客户端节点"hosts"文件，建议检查"/etc/hosts"文件内是否包含集群内节点的主机名信息，如未包含，需要手动复制解压目录下的"hosts"文件中的内容到客户端所在节点的hosts文件中，确保本地机器能与集群各主机在网络上互通。
     
   
 
