
# 在Flink WebUI和Linux中调测Flink应用
#### 操作场景
IoTDB应用程序支持在安装了Flink客户端的Linux环境和安装了Flink WebUI的环境中运行。在程序代码完成开发后，您可以上传Jar包至准备好的环境中运行。
#### 前提条件
- 集群已安装Flink组件，并且添加了FlinkServer实例。
- 已安装包含Flink服务的集群客户端，例如安装路径如：/opt/client。
- 当客户端所在主机不是集群中的节点时，需要在客户端所在节点的**hosts**文件中设置主机名和IP地址映射。主机名和IP地址请保持一一对应。
 
#### 操作步骤
1. 构建Jar包。
   
   - 在IntelliJ IDEA中，在生成Jar包之前配置工程的Artifacts信息。
     1. 在IDEA主页面，选择"File \> Project Structures..."进入"Project Structure"页面。
     
     2. 在"Project Structure"页面，选择"Artifacts"，单击"+"并选择"From modules with dependencies..."。
        图1添加Artifacts   
        ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001182697747.png "点击放大") 
     
     3. 选择"extract to the target JAR"后，单击"OK"。 ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001136298464.png "点击放大")
        
     
     4. 您可以根据实际情况设置Jar包的名称、类型以及输出路径。 为避免导入不必要Jar包引起Jar包冲突，您只需要加载IoTDB相关的基础Jar包，分别是：
        - flink-iotdb-connector-\*
        
        - flink-tsfile-connector-\*
        
        - hadoop-tsfile-\*
        
        - influxdb-thrift-\*
        
        - iotdb-antlr-
        
        - iotdb-session-\*
        
        - iotdb-thrift-\*
        
        - iotdb-thrift-commons-\*
        
        - isession-\*
        
        - libthrift-\*
        
        - iotdb-session-\*
        
        - iotdb-thrift-\*
        
        - service-rpc-\*
        
        - tsfile-\*
        
        
        单击"OK"。
        ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001365561034.png "点击放大")
        
     
     5. 在IDEA主页面，选择"Build \> Build Artifacts..."进入"Build Artifact"页面，选择"Action \> Build"。 ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001689960221.png "点击放大")
        ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001182697749.png)
        
     
     6. 编译成功后，右下角会有"Build completed successfully"，相应的Jar包会在"Output Directory"目录中产生。
      
   
   
   
   
2. 运行Flink作业。 
   - 场景一：使用Flink WebUI界面运行Flink作业
     1. 使用具有FlinkServer WebUI管理权限的用户登录集群的FusionInsight Manager，选择"集群 \> 服务 \> Flink"，单击概览页面"Flink WebUI"后的超链接地址进入FlinkServer WebUI界面。
     
     2. 进入FusionInsight Flink WebUI后，选择当前应用下的"作业管理 \> 新建作业"，创建作业。 ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001153938320.png "点击放大")
        
     
     3. 选择"类型"为"Flink Jar"，输入待创建的作业名称，选择作业类型，单击"确定"开始进行作业配置。 ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001182537841.png "点击放大")
        
     
     4. 上传[1]生成的Jar包，"Main Class"选择"指定"，并在下面的类名填写要执行的类，然后单击"提交"。
        例如，"com.huawei.bigdata.iotdb.FlinkIoTDBSink"为执行[FlinkIoTDBSink样例程序](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_490018.html)的开发程序，或"com.huawei.bigdata.iotdb.FlinkIoTDBSource"为执行[FlinkIoTDBSource样例程序](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_490019.html)的开发程序。
        ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001182696651.png "点击放大")
        
      
   
   - 场景二：使用Flink客户端在Linux环境下提交Flink作业
     1. 将[1]生成的Jar包放入Linux环境的Flink运行环境下（即Flink客户端），如"/opt/client"。
     
     
     
     2. 在Linux环境中运行Flink应用程序，需要先启动Flink集群。在Flink客户端下执行**yarn session** 命令，启动flink集群。执行命令例如：
        ```
        bin/yarn-session.sh -jm 1024 -tm 1024
        ```
        
     
     3. 运行**flink-example.jar** 样例程序。
        在终端另开一个窗口，进入Flink客户端目录，调用bin/flink run脚本运行代码。
        ```
        bin/flink flink run --class com.huawei.bigdata.iotdb.FlinkIoTDBSink /opt/client/Flink/flink/flink-example.jar
        ```
        其中"com.huawei.bigdata.iotdb.FlinkIoTDBSink"执行的[FlinkIoTDBSink样例程序](https://support.huaweicloud.com/devg-lts-mrs/mrs_07_490018.html)开发程序。
        
      
   
   
   
   
 
#### 查看调测结果
1. 查看作业是否执行成功：
   - 使用Flink WebUI Flink Server WebUI上状态返回运行成功，则执行成功，详细日志可以通过"操作 \> 更多 \> 作业详情"查看。
     图2在Flink WebUI查看运行结果   
     ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001909580636.png "点击放大") 
   
   - 使用Flink客户端： 使用运行用户登录FusionInsight Manager，进入Yarn服务的原生页面，找到对应作业的Application，单击Application名称，进入到作业详情页面。
     - 若作业尚未结束，可单击"Tracking URL"链接进入到Flink的原生页面，查看作业的运行信息。
     
     - 若作业已运行结束，对于在session中提交的作业，可以单击"Tracking URL"链接登录Flink原生页面查看作业信息。
       图3在Yarn WebUI查看作业信息   
       ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001943699837.png "点击放大") 
      
    
2. 验证作业执行结果：
   - FlinkIoTDBSink执行结果验证： 在IoTDB客户端执行以下命令，查看数据是否已经从Flink写入到IoTDB中。
     **SQLselect \* from root.sg.d1**
     图4查看写入的数据内容   
     ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001909420644.png) 
   
   - FlinkIoTDBSource执行结果验证：
     1. 使用运行用户登录FusionInsight Manager，选择"集群 \> 服务 \> HDFS"，单击"NameNode WebUI"右侧的超链接进入HDFS WebUI界面。
     
     2. 选择"Utilities \> Browse the file system"。
        图5进入"Browse the file system"页面   
        ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001909580640.png "点击放大") 
     
     3. 进入"/tmp/logs/*执行用户名* /bucket-logs-tfile/*任务ID* /*Flink任务ID* "目录，将该目录下文件全部下载到本地。
        图6获取作业日志文件   
        ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001943699849.png "点击放大") 
     
     4. 在[2.c]下载的文件中搜索"root.sg.d1"，如下图显示则表示数据从IoTDB中读取成功。
        图7读取IoTDB数据成功   
        ![](https://support.huaweicloud.com/devg-lts-mrs/zh-cn_image_0000001909420652.png "点击放大") 
      
    
 
