A是10机器集群(HA模式,独立集群),B作为提交机器。
从我实验效果来看,我是先启动一个sql-client的cli,如下命令:
./bin/sql-client.sh embedded -l $(pwd)/libs_sql -l $(pwd)/libs_udf
其中libs_sql中有:flink-connector-kafka_2.12-1.10.0.jar  
flink-connector-kafka-base_2.12-1.10.0.jar  flink-jdbc_2.12-1.10.0.jar  
flink-json-1.10.0.jar。然后A集群所有机器没有加这些包(Flink部署目录lib中没有)。A集群上其他任务提交的包中jar应该不致于会影响到我sql提交的任务。
结论是,我libs_sql中没有flink-json、flink-connector-kafka等的时候,提交sql任务会报错。加了的时候,提交sql任务不报错。
所以感觉貌似提交sql任务会将启动sql-client时候指定的lib相关包都上传吗?
————————————————————————————————————————————————————————

在 2020/8/13 下午3:10,“Jeff Zhang”<zjf...@gmail.com> 写入:

    你的10台机器是flink standalone还是 yarn集群 ?
    如果是yarn集群,那么只要把依赖放到机器A就可以了,如果是standalone的话,就要在B集群上部署了依赖了。
    
    另外你可以用zeppelin来提交flink sql 作业,zeppelin提供很多种添加第三方依赖的方法,具体可以参考文档
    https://www.yuque.com/jeffzhangjianfeng/gldg8w/rn6g1s
    或者加入钉钉群讨论,钉钉群号: 32803524
    
    
    Zhao,Yi(SEC) <zhaoy...@baidu.com> 于2020年8月13日周四 下午1:02写道:
    
    > 背景,我的flink集群(10机器)A,此外还有一个单独的flink机器(作为提交任务的机器)B。
    > 现在比较混乱,哪些jar需要放到A,哪些放到B。
    >
    >
    > (1)     kafka ssl
    > 
证书,这个肯定需要放到A,因为kafka提供的属性只是ssl证书的路径,真正读取证书是任务开始运行之后,因此这个路径必须是集群A可访问,B是否可访问其实无所谓。
    >
    > (2)
    >  
flink-sql情况下的kafak-client包。这个比较奇怪,从我的实验效果来看,貌似机器B上没有会报错,必须在启动sql-client的时候通过-j或-l参数指定jar路径,并包含kafka-client.jar,类似的还有flink-json等格式包。此外,这些包在集群A上都没有,但运行都正常。这么来看,我在sql-client中提交一个sql的时候,部分依赖应该是被打包并且上传到集群A的?这是怎么决定的呢?从我的sql中动态判定哪些包用到?还是咋的。
    >
    >
    >
    > 总结下,FlinkSQL使用sql-client命令行方式提交sql执行任务的场景下。最终运行时候哪些包需要用到sql-client端的包呢?
    >
    > 目前从实验来看Flink-json、各种connector的包都是用的sql-client的包。
    >
    >
    >
    
    -- 
    Best Regards
    
    Jeff Zhang
    

回复