
# Flink Client CLI介绍
#### 常用CLI
Flink常用的CLI如下所示：
1. yarn-session.sh
   - 可以使用yarn-session.sh启动一个常驻的Flink集群，接受来自客户端提交的任务。启动一个有3个TaskManager实例的Flink集群示例如下：
     ```
     bin/yarn-session.sh
     ```
     
   
   
   
   - yarn-session.sh的其他参数可以通过以下命令获取：
     ```
     bin/yarn-session.sh -help
     ```
     
    
2. Flink
   - 使用flink命令可以提交Flink作业，作业既可以被提交到一个常驻的Flink集群上，也可以使用单机模式运行。
     - 提交到常驻Flink集群上的一个示例如下：
       ```
       bin/flink run ../examples/streaming/WindowJoin.jar
       ```
       ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
       用户在用该命令提交任务前需要先用yarn-session启动Flink集群。
       
     
     - 以yarn-cluster模式运行作业的一个示例如下：
       ```
       bin/flink run -m yarn-cluster ../examples/streaming/WindowJoin.jar
       ```
       ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
       通过参数-m yarn-cluster使作业以yarn-cluster模式运行，该模式为指定作业单独启动一个Flink集群来执行。
       
     
     - 列出所有的作业（包含JobID）：
       ```
       bin/flink list
       ```
       
     
     - 取消作业：
       ```
       bin/flink cancel <JobID>
       ```
       
     
     - 停止作业（仅流式作业）：
       ```
       bin/flink stop <JobID>
       ```
       ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
       取消和停止作业的区别如下：
       - 取消作业：执行"cancel"命令时，指定作业会立即收到cancel()方法调用ASAP。如果调用结束后作业仍然没有停止，Flink会定期开始中断执行线程直至作业停止。
       
       - 停止作业："stop"命令仅适用于Flink源（source）实现了StoppableFunction接口的作业。"stop"命令会等待所有资源都正确关闭。相比"cancel"命令，"stop"停止作业的方式更为优雅，但可能导致停止作业失败。
         
      
   
   - flink脚本的其他参数可以通过以下命令获取：
     ```
     bin/flink --help
     ```
     
    
#### 注意事项
- 如果yarn-session.sh使用-z配置特定的zookeeper的namespace，则在使用flink run时必须使用-yid指出applicationID，使用-yz指出zookeeper的namespace，前后namespace保持一致。 举例：
  ```
  bin/yarn-session.sh -z YARN101
  ```
  ```
  bin/flink run -yid application_****_**** -yz YARN101 examples/streaming/WindowJoin.jar
  ```
  
 
- 如果yarn-session.sh不使用-z配置特定的zookeeper的namespace，则在使用flink run时不要使用-yz指定特定的zookeeper的namespace。 举例：
  ```
  bin/yarn-session.sh
  ```
  ```
  bin/flink run examples/streaming/WindowJoin.jar
  ```
  
- 如果使用flink run -m yarn-cluster时启动集群则可以使用-yz指定一个zookeeper的namespace。
- 不能同时启动两个或两个以上的集群来共享一个namespace。
- 用户在启动集群或提交作业时如果使用了-z配置项，则在删除、停止及查询作业、触发savepoint时也要使用-z配置项指明namespace。
 
