
# 准备本地应用开发环境
#### 准备开发环境
在进行应用开发时，要准备的开发和运行环境如[表1]所示。
 表1开发环境 
| 准备项       | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|
| 操作系统      | - 开发环境：Windows系统，支持Windows 7以上版本。  - 运行环境：Linux系统。 如需在本地调测程序，运行环境需要和集群业务平面网络互通。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 安装JDK     | 开发和运行环境的基本配置，版本要求如下： 服务端和客户端仅支持集群自带的OpenJDK，不允许替换。 对于客户应用需引用SDK类的Jar包运行在客户应用进程中的： MRS 3.6.0-LTS之前版本： - X86客户端： - Oracle JDK：支持1.8版本；  - IBM JDK：支持1.8.0.7.20和1.8.0.6.15版本。    - ARM客户端： - OpenJDK：支持1.8.0_272版本（集群自带JDK，可通过集群客户端安装目录中"JDK"文件夹下获取）。  - 毕昇JDK：支持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>。  - 毕昇JDK详细信息可参考<https://www.hikunpeng.com/zh/developer/devkit/compiler/jdk>。   |
| 安装和配置IDEA | 用于开发Flink应用程序的工具。版本要求：2019.1或其他兼容版本。 说明： MRS 3.6.0-LTS及之后版本： - 若使用Oracle JDK，请确保IntelliJ IDEA中的JDK配置为Oracle JDK。  - 若使用Open JDK，请确保IntelliJ IDEA中的JDK配置为Open JDK。  - 若使用毕昇JDK，请确保IntelliJ IDEA中的JDK配置为毕昇JDK。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 安装Scala   | Scala开发环境的基本配置。 版本要求： - MRS 3.2.0以前版本要求2.11.7。  - MRS 3.2.0至MRS 3.5.0版本要求2.12.7。  - MRS 3.6.0-LTS及之后版本要求2.12.15。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 安装Scala插件 | Scala开发环境的基本配置。版本要求：1.5.4。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 安装Maven   | 开发环境的基本配置。用于项目管理，贯穿软件开发生命周期。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 准备开发用户    | 参考[准备MRS应用开发用户](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_020002.html)进行操作，准备用于应用开发的集群用户并授予相应权限。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 7-zip     | 用于解压"\*.zip"和"\*.rar"文件，支持7-Zip 16.04版本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Python3   | 用于运行Flink Python作业。版本要求：Python3.7至Python3.10版本，MRS 3.6.0-LTS及之后要求Python3.8及以后版本。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
 #### 准备运行环境
进行应用开发时，需要同时准备代码的运行调测的环境，用于验证应用程序运行正常。
- 如果使用Linux环境调测程序，需在准备安装集群客户端的Linux节点并获取相关配置文件。
  1. 在节点中安装客户端，例如客户端安装目录为"/opt/hadoopclient"。客户端安装可参考[配置Flink应用安全认证](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_050010.html)。
     客户端机器的时间与集群的时间要保持一致，时间差小于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)。
     ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
     - 确保Flink客户端的"flink-conf.yaml"配置文件中的认证相关配置项已经配置正确，请参考[配置Flink应用安全认证](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_050010.html)章节的步骤5。
     
     - 安全模式下需要将客户端安装节点的业务IP地址以及Manager的浮动IP地址追加到"flink-conf.yaml"文件中的"jobmanager.web.allow-access-address"配置项中，IP地址之间使用英文逗号分隔。
     
     - MRS 3.6.0-LTS及之后版本，Flink升级JDK版本到JDK17，支持运行JDK17及以下版本（JDK8）编译的jar包，但是低版本的客户端不支持运行JDK17编译的jar包。
       
  
  2. 登录FusionInsight Manager页面，下载集群客户端软件包至主管理节点并解压，然后以**root** 用户登录主管理节点，进入集群客户端解压路径下，复制"FusionInsight_Cluster_1_Services_ClientConfig\\Flink\\config"路径下的所有配置文件至客户端节点，放置到与准备放置编译出的jar包同目录的"conf"目录下，用于后续调测，例如"/opt/hadoopclient/conf"。
     例如客户端软件包为"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 Flink/config/\* root@** *客户端节点IP地址* **:/opt/hadoopclient/conf**
     [准备MRS应用开发用户](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_020002.html)时获取的keytab文件也放置于该目录下，主要配置文件说明如[表2]所示。
      表2配置文件 
     | **文件名称**        | **作用**                |
     |:---|:---|
     | core-site.xml   | 配置Flink详细参数。          |
     | hdfs-site.xml   | 配置HDFS详细参数。           |
     | yarn-site.xml   | 配置Yarn详细参数。           |
     | flink-conf.yaml | Flink客户端配置文件。         |
     | user.keytab     | 对于Kerberos安全认证提供用户信息。 |
     | krb5.conf       | Kerberos Server配置信息。  |
        
     
  
  3. 检查客户端节点网络连接。 在安装客户端过程中，系统会自动配置客户端节点"hosts"文件，建议检查"/etc/hosts"文件内是否包含集群内节点的主机名信息，如未包含，需要手动复制解压目录下的"hosts"文件中的内容到客户端所在节点的hosts文件中，确保本地机器能与集群各主机在网络上互通。
     
  
  4. （可选）若运行Python作业，需额外配置如下：(适用于MRS 3.3.0及以后版本）
     1. 使用**root** 用户登录flink客户端安装节点，使用如下命令确认环境已成功安装Python 3.7及以后版本（MRS 3.6.0-LTS及之后要求Python3.8及以后版本）。
        **python3 -V**
        
     
     2. 进入python3安装路径，安装路径如"/srv/pyflink-example"，执行以下命令安装virtualenv。 **cd /srv/pyflink-example**
        **virtualenv venv --python=python3.x**
        **source venv/bin/activate**
        
     
     3. 执行以下命令将客户端安装目录下的"Flink/flink/opt/python/apache-flink-\*.tar.gz"文件复制到"/srv/pyflink-example"。 **cp** *客户端安装目录* **/Flink/flink/opt/python/apache-flink-\*.tar.gz /srv/pyflink-example**
        
     
     4. 执行以下命令安装依赖包，显示如下表示安装成功。 **python -m pip install apache-flink-libraries-\*.tar.gz**
        **python -m pip install apache-flink-** *版本号* **.tar.gz**
        ```
        ...
        Successfully built apache-flink
         Installing collected packages: apache-flink
          Attempting uninstall: apache-flink
           Found existing installation: apache-flink x.xx.x
           Uninstalling apache- flink-x.xx.x:
            Successfully uninstalled apache-flink-x.xx.x
        Successfully installed apache-flink-x.xx.x
        ```
        
      
   
 
