88### 1.2 执行环境
99
1010* Java: JDK8及以上
11- * Flink集群: 1.4,1.5,1.8(单机模式不需要安装Flink集群)
11+ * Flink集群: 1.4,1.5,1.8,1.9,1.10 (单机模式不需要安装Flink集群)
1212* 操作系统:理论上不限
1313* kerberos环境需要在flink-conf.yaml配置security.kerberos.login.keytab以及security.kerberos.login.principal参数,配置案例:
1414```
@@ -29,17 +29,16 @@ zookeeper.sasl.login-context-name: Client
2929
3030```
3131mvn clean package -Dmaven.test.skip
32-
3332```
3433
3534####可运行的目录结构:
3635```
3736|
3837|-----bin
3938| |--- submit.sh 任务启动脚本
40- |-----lib
41- | |--- sql.launcher.jar 包存储路径,是任务提交的入口(需要手动移动到该目录)
42- |-----plugins : 插件包存储路径(mvn 打包之后会自动将jar移动到该目录下)
39+ |-----lib: launcher包存储路径,是任务提交的入口
40+ | |--- sql.launcher.jar
41+ |-----sqlplugins : 插件包存储路径(mvn 打包之后会自动将jar移动到该目录下)
4342| |--- core.jar
4443| |--- xxxsource
4544| |--- xxxsink
@@ -49,15 +48,208 @@ mvn clean package -Dmaven.test.skip
4948
5049#### 1.4.1 启动命令
5150
51+ ``` shell script
52+ # 脚本启动
53+ sh submit.sh
54+ -mode yarn
55+ -name flink1.10_yarnSession
56+ -sql F:\d tstack\s tressTest\f linkStreamSql\1 .10_dev\s ql\f link1100.sql
57+ -localSqlPluginPath F:\d tstack\p roject\f linkStreamSQL\p lugins
58+ -remoteSqlPluginPath F:\d tstack\p roject\f linkStreamSQL\p lugins
59+ -flinkconf F:\d tstack\f link\f link-1.10.0\c onf
60+ -yarnconf F:\d tstack\f linkStreamSql\y arnConf_node1
61+ -flinkJarPath F:\d tstack\f link\f link-1.10.0\l ib
62+ -pluginLoadMode shipfile
63+ -confProp {\" time.characteristic\" :\" eventTime\" ,\" logLevel\" :\" info\" }
64+ -yarnSessionConf {\" yid\" :\" application_1586851105774_0014\" }
65+ ```
66+ ``` shell script
67+ # 通过idea启动 程序入口类LaucherMain
68+ # Run/Debug Configurations中设置Program arguments
69+ -mode yarnPer
70+ -sql /home/wen/Desktop/flink_stream_sql_conf/sql/stressTest.sql
71+ -name stressTestAll
72+ -localSqlPluginPath /home/wen/IdeaProjects/flinkStreamSQL/plugins
73+ -remoteSqlPluginPath /home/wen/IdeaProjects/flinkStreamSQL/plugins
74+ -flinkconf /home/wen/Desktop/flink_stream_sql_conf/flinkConf
75+ -yarnconf /home/wen/Desktop/flink_stream_sql_conf/yarnConf_node1
76+ -flinkJarPath /home/wen/Desktop/dtstack/flink-1.8.1/lib
77+ -pluginLoadMode shipfile
78+ -confProp {\" time.characteristic\" :\" eventTime\" ,\" logLevel\" :\" info\" }
79+ -queue c
80+ ```
81+ #### 1.4.2 命令参数说明
82+ * ** mode**
83+ * 描述:执行模式,也就是flink集群的工作模式
84+ * local: 本地模式
85+ * standalone: 提交到独立部署模式的flink集群
86+ * yarn: 提交到yarn模式的flink集群,该模式下需要提前启动一个yarn-session,使用默认名"Flink session cluster"
87+ * yarnPer: yarn per_job模式提交(即创建新flink application),默认名为flink任务名称
88+ * 必选:否
89+ * 默认值:local
90+
91+ * ** name**
92+ * 描述:flink 任务对应名称。
93+ * 必选:是
94+ * 默认值:无
95+
96+ * ** sql**
97+ * 描述:待执行的flink sql所在路径 。
98+ * 必选:是
99+ * 默认值:无
100+
101+ * ** localSqlPluginPath**
102+ * 描述:本地插件根目录地址,也就是打包后产生的plugins目录。
103+ * 必选:是
104+ * 默认值:无
105+
106+ * ** remoteSqlPluginPath**
107+ * 描述:flink执行集群上的插件根目录地址(将打包好的插件存放到各个flink节点上,如果是yarn集群需要存放到所有的nodemanager上)。
108+ * 必选:否
109+ * 默认值:无
110+
111+ * ** addjar**
112+ * 描述:扩展jar路径,当前主要是UDF定义的jar;
113+ * 必选:否
114+ * 默认值:无
115+
116+ * ** confProp**
117+ * 描述:一些参数设置
118+ * 必选:是 (如无参数填写空json即可)
119+ * 默认值:{}
120+ * 可选参数:
121+ * sql.ttl.min: 最小过期时间,大于0的整数,如1d、1h(d\D:天,h\H:小时,m\M:分钟,s\s:秒)
122+ * sql.ttl.max: 最大过期时间,大于0的整数,如2d、2h(d\D:天,h\H:小时,m\M:分钟,s\s:秒),需同时设置最小时间,且比最小时间大5分钟
123+ * state.backend: 任务状态后端,可选为MEMORY,FILESYSTEM,ROCKSDB,默认为flinkconf中的配置。
124+ * state.checkpoints.dir: FILESYSTEM,ROCKSDB状态后端文件系统存储路径,例如:hdfs://ns1/dtInsight/flink180/checkpoints。
125+ * state.backend.incremental: ROCKSDB状态后端是否开启增量checkpoint,默认为true。
126+ * sql.env.parallelism: 默认并行度设置
127+ * sql.max.env.parallelism: 最大并行度设置
128+ * time.characteristic: 可选值[ ProcessingTime|IngestionTime|EventTime]
129+ * sql.checkpoint.interval: 设置了该参数表明开启checkpoint(ms)
130+ * sql.checkpoint.mode: 可选值[ EXACTLY_ONCE|AT_LEAST_ONCE]
131+ * sql.checkpoint.timeout: 生成checkpoint的超时时间(ms)
132+ * sql.max.concurrent.checkpoints: 最大并发生成checkpoint数
133+ * sql.checkpoint.cleanup.mode: 默认是不会将checkpoint存储到外部存储,[ true(任务cancel之后会删除外部存储)|false(外部存储需要手动删除)]
134+ * flinkCheckpointDataURI: 设置checkpoint的外部存储路径,根据实际的需求设定文件路径,hdfs://, file://
135+ * jobmanager.memory.mb: per_job模式下指定jobmanager的内存大小(单位MB, 默认值:768)
136+ * taskmanager.memory.mb: per_job模式下指定taskmanager的内存大小(单位MB, 默认值:768)
137+ * taskmanager.num: per_job模式下指定taskmanager的实例数(默认1)
138+ * taskmanager.slots:per_job模式下指定每个taskmanager对应的slot数量(默认1)
139+ * savePointPath:任务恢复点的路径(默认无)
140+ * allowNonRestoredState:指示保存点是否允许非还原状态的标志(默认false)
141+ * restore.enable:是否失败重启(默认是true)
142+ * failure.interval:衡量失败率的时间段,单位分钟(默认6m)
143+ * delay.interval:连续两次重启尝试间的间隔,单位是秒(默认10s)
144+ * logLevel: 日志级别动态配置(默认info)
145+ * [prometheus 相关参数](docs/prometheus.md) per_job可指定metric写入到外部监控组件,以prometheus pushgateway举例
146+
147+
148+ * ** flinkconf**
149+ * 描述:flink配置文件所在的目录(单机模式下不需要),如/hadoop/flink-1.10.0/conf
150+ * 必选:否
151+ * 默认值:无
152+
153+ * ** yarnconf**
154+ * 描述:Hadoop配置文件(包括hdfs和yarn)所在的目录(单机模式下不需要),如/hadoop/etc/hadoop
155+ * 必选:否
156+ * 默认值:无
157+
158+ * ** flinkJarPath**
159+ * 描述:per_job 模式提交需要指定本地的flink jar存放路径
160+ * 必选:否
161+ * 默认值:无
162+
163+ * ** queue**
164+ * 描述:per_job 模式下指定的yarn queue
165+ * 必选:否
166+ * 默认值:default
167+
168+ * ** pluginLoadMode**
169+ * 描述:per_job 模式下的插件包加载方式。classpath:从每台机器加载插件包,shipfile:将需要插件从提交的节点上传到hdfs,不需要每台安装插件
170+ * 必选:否
171+ * 默认值:classpath
172+
173+ * ** yarnSessionConf**
174+ * 描述:yarn session 模式下指定的运行的一些参数,[可参考](https://ci.apache.org/projects/flink/flink-docs-release-1.8/ops/cli.html),目前只支持指定yid
175+ * 必选:否
176+ * 默认值:{}
177+
178+ ## 1.5 任务样例
179+
52180```
53- sh submit.sh -sql D:\sideSql.txt
54- -name xctest
55- -remoteSqlPluginPath /opt/dtstack/150_flinkplugin/sqlplugin
56- -localSqlPluginPath D:\gitspace\flinkStreamSQL\plugins
57- -addjar \["udf.jar\"\]
58- -mode yarn
59- -flinkconf D:\flink_home\kudu150etc
60- -yarnconf D:\hadoop\etc\hadoopkudu
61- -confProp \{\"time.characteristic\":\"EventTime\",\"sql.checkpoint.interval\":10000\}
62- -yarnSessionConf \{\"yid\":\"application_1564971615273_38182\"}
63- ```
181+ # 一个kafka join all维表 sink kafka的样例
182+ CREATE TABLE MyTable(
183+ id bigint,
184+ name varchar,
185+ address varchar
186+ )WITH(
187+ type = 'kafka10',
188+ bootstrapServers = '172.16.101.224:9092',
189+ zookeeperQuorm = '172.16.100.188:2181/kafka',
190+ offsetReset = 'latest',
191+ topic = 'tiezhu_test_in',
192+ groupId = 'flink_sql',
193+ timezone = 'Asia/Shanghai',
194+ topicIsPattern = 'false',
195+ parallelism = '1'
196+ );
197+
198+ CREATE TABLE sideTable(
199+ id bigint,
200+ school varchar,
201+ home varchar,
202+ PRIMARY KEY(id),
203+ PERIOD FOR SYSTEM_TIME
204+ )WITH(
205+ type='mysql',
206+ url='jdbc:mysql://172.16.8.109:3306/tiezhu',
207+ userName='dtstack',
208+ password='you-guess',
209+ tableName='stressTest',
210+ cache='ALL',
211+ parallelism='1',
212+ asyncCapacity='100'
213+ );
214+
215+ CREATE TABLE MyResult(
216+ id bigint,
217+ name varchar,
218+ address varchar,
219+ home varchar,
220+ school varchar
221+ )WITH(
222+ type = 'kafka10',
223+ bootstrapServers = '172.16.101.224:9092',
224+ zookeeperQuorm = '172.16.100.188:2181/kafka',
225+ offsetReset = 'latest',
226+ topic = 'tiezhu_test_out',
227+ parallelism = '1'
228+ );
229+
230+
231+ insert
232+ into
233+ MyResult
234+ select
235+ t1.id AS id,
236+ t1.name AS name,
237+ t1.address AS address,
238+ t2.school AS school,
239+ t2.home AS home
240+ from
241+ (
242+ select
243+ id,
244+ name,
245+ address
246+ from
247+ MyTable
248+ ) t1
249+ left join sideTable t2
250+ on t2.id = t2.id;
251+ ```
252+
253+ # 招聘
254+ 1.大数据平台开发工程师,想了解岗位详细信息可以添加本人微信号ysqwhiletrue,注明招聘,如有意者发送简历至
[email protected] 。
255+
0 commit comments