图10-34 Flink 系统加密传输方式
Flink整个系统有三种加密传输方式:
● 使用Yarn内部的加密传输方式:Flink yarn client与Yarn Resource Manager、
Yarn Resource Manager与Job Manager。
● SSL:Flink yarn client与JobManager、JobManager与TaskManager、
TaskManager与TaskManager。
● 使用Hadoop内部的加密传输方式:JobManager和HDFS、TaskManager和 HDFS、JobManager与ZooKeeper、TaskManager与ZooKeeper。
说明
Yarn内部和Hadoop内部都不需要用户配置加密,用户只需要配置SSL加密传输方式。
配置SSL传输,用户主要在客户端的“flink-conf.yaml”文件中做如下配置:
1. 打开SSL开关和设置SSL加密算法,配置参数如表10-6所示,请根据实际情况修改 对应参数值。
表10-6 参数描述
参数 参数值示例 描述
security.ssl.enabled true 打开SSL总开关 akka.ssl.enabled true 打开akka SSL开关 blob.service.ssl.enabled true 打开blob通道SSL开关 taskmanager.data.ssl.en
abled true 打开taskmanager之间
通信的SSL开关
应用开发指南 10 Flink 开发指南(安全模式)
参数 参数值示例 描述
2. 在Flink客户端的bin目录下,执行命令sh generate_keystore.sh <password>, 具体操作可参考认证和加密,表10-7中的配置项会被默认赋值,用户也可以手动 配置。
表10-7 参数描述
参数 参数值示例 描述
security.ssl.keystore ${path}/flink.keystore keystore的存放路径,
“flink.keystore”表示 用户通过generate_keystore.sh*工 具生成的keystore文件名 称。
security.ssl.keystore-password 123456 keystore的password,
“123456”表示需要用 户输入自定义设置的密 码值。
security.ssl.key-password 123456 ssl key的password,
“123456”表示需要用 户输入自定义设置的密 码值。
security.ssl.truststore ${path}/flink.truststore truststore存放路径,
“flink.truststore”表示 用户通过generate_keystore.sh*工 具生成的truststore文件 名称。
security.ssl.truststore-password 123456 truststore的password,
“123456”表示需要用 户输入自定义设置的密 码值。
应用开发指南 10 Flink 开发指南(安全模式)
说明
“path”目录是用来存放SSL keystore、truststore相关配置文件,该目录是由用户自定义 创建。相对路径和绝对路径的不同导致执行命令存在差异,在3和4详细说明。
3. 配置keystore或truststore文件路径为相对路径时,Flink Client执行命令的目录需 要可以直接访问该相对路径。Flink有两种执行方式来传输keystore和truststore文 件。
– 在Flink的CLI yarn-session.sh命令中增加“-t”选项来传输keystore和 truststore文件到各个执行节点。例如:
cd /opt/client/Flink/flink ./bin/yarn-session.sh -t ssl/
– 在Flink run命令中增加“-yt”选项来传输keystore和truststore文件到各个执 行节点。例如:
./bin/flink run -yt ssl/ -ys 3 -m yarn-cluster -c
com.huawei.SocketWindowWordCount ../lib/flink-eg-1.0.jar --hostname r3-d3 --port 9000
说明
● 示例中的“ssl/”是Flink客户端目录下自定义的子目录,用来存放SSL keystore、
truststore相关配置文件。
● Flink客户端执行命令的当前路径需要能访问到“ssl/”相对路径。
4. 配置keystore或truststore文件路径为绝对路径时,需要在Flink Client以及Yarn各 个节点的该绝对路径上放置keystore或truststore文件。
Flink有两种方式执行应用程序,且执行命令中不需要使用“-t”或“-yt”来传输 keystore和truststore文件。
– 使用Flink的CLI yarn-session.sh命令执行应用程序。如:
./bin/yarn-session.sh
– 使用Flink run命令执行应用程序。如:
./bin/flink run -ys 3 -m yarn-cluster -c
com.huawei.SocketWindowWordCount ../lib/flink-eg-1.0.jar --hostname r3-d3 --port 9000
10.3 开发程序
10.3.1 DataStream 程序
10.3.1.1 场景说明
场景说明
假定用户有某个网站周末网民网购停留时间的日志文本,基于某些业务要求,要求开 发Flink的DataStream应用程序实现如下功能:
说明
DataStream应用程序可以在Windows环境和Linux环境中运行。
应用开发指南 10 Flink 开发指南(安全模式)
● 实时统计总计网购时间超过2个小时的女性网民信息。
● 数据文件若存放在本地文件系统,需在所有部署Yarn NodeManager的节点指定目录放置,
并设置运行用户访问权限。