本文档提供了有关在MapR集群中YARN平台上Flink的相关指导。
以下文档基于MapR v5.2.0版本. 该文档将指导你如何向 Flink on YARN 集群(MapR)中提交任务或启动Flink会话.
在MapR上运行Flink之前,需要在MapR的Hadoop 和 Zookeeper 版本的上编译. 可以用 Maven 在项目根目录以下命令编译Flink:
mvn clean install -DskipTests -Pvendor-repos,mapr \
-Dhadoop.version=2.7.0-mapr-1607 \
-Dzookeeper.version=3.4.5-mapr-1604
编译参数 vendor-repos
将添加MapR的类库以便编译过程中提取Hadoop / Zookeeper依赖包。
编译参数 mapr
另外解决了编译过程中Flink与MapR之间的一些依赖包冲突。同时,保证原本MapR类库依然在MapR节点上被使用.
两个配置文件必须先被激活。
默认情况下,mapr
配置文件使用Hadoop / Zookeeper依赖关系构建
基于MapR版本5.2.0,所以不需要覆盖
hadoop.version
和zookeeper.version
属性。
对于不同的MapR版本,只需覆盖这些属性即可。
对应不同MapR发行版的Hadoop / Zookeeper可以在MapR文档中找到:
here.
向MapR提交Flink任务的客户端需要通过以下设置。
确保MapR的JAAS配置文件被加载而避免登录失败:
export JVM_ARGS=-Djava.security.auth.login.config=/opt/mapr/conf/mapr.login.conf
确保yarn.nodemanager.resource.cpu-vcores
属性设置在yarn-site.xml
中被设置:
<!-- in /opt/mapr/hadoop/hadoop-2.7.0/etc/hadoop/yarn-site.xml -->
<configuration>
...
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>...</value>
</property>
...
</configuration>
同时记住设置环境变量 “YARN_CONF_DIR”或“HADOOP_CONF_DIR” 指定“yarn-site.xml”文件所在路径:
export YARN_CONF_DIR=/opt/mapr/hadoop/hadoop-2.7.0/etc/hadoop/
export HADOOP_CONF_DIR=/opt/mapr/hadoop/hadoop-2.7.0/etc/hadoop/
确保设置MapR类库所在的路径classpath:
export FLINK_CLASSPATH=/opt/mapr/lib/*
如果使用yarn-session.sh
在YARN上启动Flink会话,那么必需的做以下设置:
export CC_CLASSPATH=/opt/mapr/lib/*
在Flink 1.2.0版本中,Flink的Kerberos身份验证有个漏洞,导致它无法MapR的安全系统兼容。 请升级到更新的Flink版本,以便将Flink与安全的MapR群集一起使用。 更多细节,请查阅 FLINK-5949.*
Flink 的 Kerberos 身份验证 和 MapR 身份验证是独立的. 有了上述编译过程和环境变量设置,Flink不需要任何其他配置与MapR Security配合使用.
用户只需要使用MapR的“maprlogin”身份验证即可登录。
没有通过MapR认证登录的用户将不会
能够提交Flink工作,错误如下:
java.lang.Exception: unable to establish the security context
Caused by: o.a.f.r.security.modules.SecurityModule$SecurityInstallException: Unable to set the Hadoop login user
Caused by: java.io.IOException: failure to login: Unable to obtain MapR credentials