此处使用docker构建运行环境,当前flink最新版本为1.18.1。若有问题尝试使用指定版本sudo docker pull flink:1.18
//创建网络
sudo docker network create flink-network
//启动主节点
sudo docker run -idt --name=jobmanager -e TZ=Asia/Shanghai --network flink-network -p 8081:8081 --env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" flink jobmanager
查看主节点ip
ubuntu@ubuntu:~$ sudo docker inspect -f '{
{
.Name}} - {
{
range .NetworkSettings.Networks}}{
{
.IPAddress}}{
{
end}}' $(sudo docker ps -aq)
/jobmanager - 172.18.0.2
启动子节点,可启动多个,改name就行,hosts的ip填入上述获取的ip
sudo docker run -idt --name=taskmanager1 -e TZ=Asia/Shanghai --network flink-network --env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" --add-host jobmanager:172.18.0.2 flink taskmanager
访问8081,此处启动了两个task
其他常用的配置属性
jobmanager.memory.process.size:JobManager进程可使用到的全部内存
taskmanager.memory.process.size:TaskManager进程可使用到的全部内存
taskmanager.numberOfTaskSlots:TaskManager能够分配的Slot数量,默认为1
parallelism.default:Flink任务执行的并行度,默认为1
maven构建项目
mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-quickstart-java \
-DarchetypeVersion=1.18.1
项目生成后pom文件中mainCalss用于指定默认的启动作业类。上传作业时也可手动指定覆盖
执行环境、数据读入与数据转换
public static void main(String[] args) throws Exception {
/**
* 执行环境与执行模式
* 环境
* getExecutionEnvironment 获取当前环境,自动根据当前运行环境获取,常用
* createLocalEnvironment 获取本地环境
* createRemoteEnvironment 获取集群环境
* 处理模式
* Streaming 流,默认常用
* Batch 批
* AutoMatic 自动
*
*/
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
//设置处理模式,不设置默认也是STREAMING
env.setRuntimeMode(RuntimeExecutionMode.STREAMING);
/**
* 源算子(数据源),返回DataStreamSource<T>
* *从集合获取
* List<String> data = Arrays.asList("1", "@", "3");
* env.fromCollection(data);
*
* *直接生成