MapR 安装

在YARN(MapR版本)上运行Flink

以下文档基于MapR v5.2.0版本. 该文档将指导你如何向 Flink on YARN 集群(MapR)中提交任务或启动Flink会话.

MapR上编译Flink

在MapR上运行Flink之前,需要在MapR的Hadoop 和 Zookeeper 版本的上编译. 可以用 Maven 在项目根目录以下命令编译Flink:

  1. mvn clean install -DskipTests -Pvendor-repos,mapr \
  2. -Dhadoop.version=2.7.0-mapr-1607 \
  3. -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.versionzookeeper.version属性。 对于不同的MapR版本,只需覆盖这些属性即可。 对应不同MapR发行版的Hadoop / Zookeeper可以在MapR文档中找到: here.

任务提交客户端设置

向MapR提交Flink任务的客户端需要通过以下设置。

确保MapR的JAAS配置文件被加载而避免登录失败:

  1. export JVM_ARGS=-Djava.security.auth.login.config=/opt/mapr/conf/mapr.login.conf

确保yarn.nodemanager.resource.cpu-vcores属性设置在yarn-site.xml中被设置:

  1. <!-- in /opt/mapr/hadoop/hadoop-2.7.0/etc/hadoop/yarn-site.xml -->
  2. <configuration>
  3. ...
  4. <property>
  5. <name>yarn.nodemanager.resource.cpu-vcores</name>
  6. <value>...</value>
  7. </property>
  8. ...
  9. </configuration>

同时记住设置环境变量 “YARN_CONF_DIR”或“HADOOP_CONF_DIR” 指定“yarn-site.xml”文件所在路径:

  1. export YARN_CONF_DIR=/opt/mapr/hadoop/hadoop-2.7.0/etc/hadoop/
  2. export HADOOP_CONF_DIR=/opt/mapr/hadoop/hadoop-2.7.0/etc/hadoop/

确保设置MapR类库所在的路径classpath:

  1. export FLINK_CLASSPATH=/opt/mapr/lib/*

如果使用yarn-session.sh在YARN上启动Flink会话,那么必需的做以下设置:

  1. export CC_CLASSPATH=/opt/mapr/lib/*

MapR集群上安全的运行Flink

在Flink 1.2.0版本中,Flink的Kerberos身份验证有个漏洞,导致它无法MapR的安全系统兼容。 请升级到更新的Flink版本,以便将Flink与安全的MapR群集一起使用。 更多细节,请查阅 FLINK-5949.*

Flink 的 Kerberos 身份验证MapR 身份验证是独立的. 有了上述编译过程和环境变量设置,Flink不需要任何其他配置与MapR Security配合使用.

用户只需要使用MapR的“maprlogin”身份验证即可登录。 没有通过MapR认证登录的用户将不会 能够提交Flink工作,错误如下:

  1. java.lang.Exception: unable to establish the security context
  2. Caused by: o.a.f.r.security.modules.SecurityModule$SecurityInstallException: Unable to set the Hadoop login user
  3. Caused by: java.io.IOException: failure to login: Unable to obtain MapR credentials