一、内存管理优化
原有TaskExecutor
有一些缺点:
流处理和批处理用了不同的配置模型;
流处理的堆外配置RocksDB复杂,需要用户配置;
为了使内存管理更明确直观,Flink 1.10对TaskExecutor内存模型和配置做了重大改进,这个更改使FLink更适合于各种部署环境:K8S,Yarn,Mesos。
这种更改统一了入口点,使得下游框架比如zeppelin的编程更加容易。
二、集成Kubernetes
这对于想要在容器中使用Flink的用户是一个非常好的消息。
在Flink1.10中推出了Active Kubernetes集成
Flink的ResourceManager(K8sResMngr
)与Kubernetes进行本地通信以按需分配新的Pod,类似于Flink的Yarn和Mesos集成。用户还可以利用命名空间为聚合资源消耗有限的多租户环境启动Flink集群。事先配置具有足够权限的RBAC角色和服务帐户。
用户可以简单地参考Kubernetes配置选项,然后使用以下命令在CLI中将作业提交到Kubernetes上的现有Flink会话:
./bin/flink run -d -e kubernetes-session -Dkubernetes.cluster-id=<ClusterId> examples/streaming/WindowJoin.jar
三、集成Hive
Flink 1.10通过开发将Hive集成到Flink,可用于生产环境。
并且支持大部分Hive版本,Flink支持Hive版本列表:
- 1.0
- 1.0.0
- 1.0.1
- 1.1
- 1.1.0
- 1.1.1
- 1.2
- 1.2.0
- 1.2.1
- 1.2.2
- 2.0
- 2.0.0
- 2.0.1
- 2.1
- 2.1.0
- 2.1.1
- 2.2
- 2.2.0
- 2.3
- 2.3.0
- 2.3.1
- 2.3.2
- 2.3.3
- 2.3.4
- 2.3.5
- 2.3.6
- 3.1
- 3.1.0
- 3.1.1
- 3.1.2
需要引入依赖
<!-- Flink Dependency --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-hive_2.11</artifactId> <version>1.10.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-api-java-bridge_2.11</artifactId> <version>1.10.0</version> <scope>provided</scope> </dependency> <!-- Hive Dependency --> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>${hive.version}</version> <scope>provided</scope> </dependency>
连接Hive代码
val settings = EnvironmentSettings.newInstance().useBlinkPlanner().inBatchMode().build() val tableEnv = TableEnvironment.create(settings) val name = "myhive" val defaultDatabase = "mydatabase" val hiveConfDir = "/opt/hive-conf" // a local path val version = "2.3.4" val hive = new HiveCatalog(name, defaultDatabase, hiveConfDir, version) tableEnv.registerCatalog("myhive", hive) // set the HiveCatalog as the current catalog of the session tableEnv.useCatalog("myhive")
四、PyFlink:支持UDF
从Flink 1.10开始,PyFlink开始支持UDF函数。
用户还可以pip
使用以下方法轻松安装PyFlink :
pip install apache-flink
五、其他重要变化
- Flink现在可以编译并在Java 11上运行。
- 一个新的Elasticsearch sink,完全支持Elasticsearch 7.x版本。
- Kafka 0.8 和 0.9 版本已经被废,不再支持。
- 删除了非认证网络流量配置选项taskmanager.network.credit.model。
- 删除了旧版Web UI。