各位下午好,目前我正在使用 Flink on k8s application-mode 构建构建一个消费 kafka 写入 hive 的
demo,使用 hdfs 作为 statebackend,遇到了一些问题,希望能得到帮助。这里我描述一下问题与 debug 的过程。 Dockerfile 如下 FROM flink:1.11.3-scala_2.11 RUN mkdir -p $FLINK_HOME/usrlib RUN mkdir -p /opt/hadoop/conf COPY flink-shaded-hadoop-2-uber-2.7.5-10.0.jar $FLINK_HOME/lib/flink-shaded-hadoop-2-uber-2.7.5-10.0.jar COPY flink-on-k8s-1.0-SNAPSHOT.jar $FLINK_HOME/usrlib/flink-on-k8s-1.0-SNAPSHOT.jar COPY TopSpeedWindowing.jar $FLINK_HOME/usrlib/TopSpeedWindowing.jar ENV HADOOP_CONF_DIR /opt/hadoop/conf ENV YARN_CONF_DIR /opt/hadoop/conf COPY yarn-site.xml /opt/hadoop/conf/yarn-site.xml COPY hdfs-site.xml /opt/hadoop/conf/hdfs-site.xml COPY core-site.xml /opt/hadoop/conf/core-site.xml 启动命令如下 flink-1.11.3/bin/flink run-application -p 1 -t kubernetes-application -Dkubernetes.cluster-id=my-first-application-cluster-demo7-4 -Dkubernetes.jobmanager.service-account=flink -Dtaskmanager.memory.process.size=1024m -Dkubernetes.taskmanager.cpu=1 -Dtaskmanager.numberOfTaskSlots=1 -Dkubernetes.container-start-command-template="%java% %classpath% %jvmmem% %jvmopts% %logging% %class% %args%" -Dkubernetes.container.image=flink:demo7-4 -Dkubernetes.rest-service.exposed.type=NodePort local:///opt/flink/usrlib/flink-on-k8s-1.0-SNAPSHOT.jar flink-on-k8s-1.0-SNAPSHOT.jar 这个 jar 包仅仅是消费 kafka,使用 hdfs 作为 statebackend 记录状态。 一开始尝试只把 yarn-site.xml 等三个文件放在 usrlib 目录下,JobManager 无法启动,报错是 UnknownHost。参考邮件列表中的信息,设置HADOOP_CONF_DIR之后,JobManager 成功启动且没有报错日志,但是 TaskManager 一直处于 ContainerCreating 状态,7-8 分钟后 deployment 自动退出。使用 describe pod 获取 tm 报错信息如下: Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled <unknown> default-scheduler Successfully assigned default/my-first-application-cluster-demo7-4-taskmanager-1-1 to k8s-node0002 Warning FailedMount 37s (x10 over 4m46s) kubelet, k8s-ci-dcn-bigdata-node0002 MountVolume.SetUp failed for volume "hadoop-config-volume" : configmap "hadoop-config-my-first-application-cluster-demo7-4" not found Warning FailedMount 29s (x2 over 2m44s) kubelet, k8s-node0002 Unable to attach or mount volumes: unmounted volumes=[hadoop-config-volume], unattached volumes=[hadoop-config-volume flink-config-volume default-token-fhkhf]: timed out waiting for the condition 请问我是否配置有误,还是需要别的配置来启用 hdfs。 期待您的回复~ ------- Best Regards! Yichen |
1.11版本以后可以直接在Flink Client的机器上export HADOOP_CONF_DIR
然后运行flink run-application或者kubernetes_session.sh启动Flink任务,这样Flink Client会自动通过ConfigMap将Hadoop配置ship到JobManager和TaskManager pod 并且加到classpath的 Best, Yang 龙逸尘 <[hidden email]> 于2021年1月4日周一 下午4:39写道: > 各位下午好,目前我正在使用 Flink on k8s application-mode 构建构建一个消费 kafka 写入 hive 的 > demo,使用 hdfs 作为 statebackend,遇到了一些问题,希望能得到帮助。这里我描述一下问题与 debug 的过程。 > > Dockerfile 如下 > > FROM flink:1.11.3-scala_2.11 > RUN mkdir -p $FLINK_HOME/usrlib > RUN mkdir -p /opt/hadoop/conf > COPY flink-shaded-hadoop-2-uber-2.7.5-10.0.jar > $FLINK_HOME/lib/flink-shaded-hadoop-2-uber-2.7.5-10.0.jar > COPY flink-on-k8s-1.0-SNAPSHOT.jar > $FLINK_HOME/usrlib/flink-on-k8s-1.0-SNAPSHOT.jar > COPY TopSpeedWindowing.jar $FLINK_HOME/usrlib/TopSpeedWindowing.jar > ENV HADOOP_CONF_DIR /opt/hadoop/conf > ENV YARN_CONF_DIR /opt/hadoop/conf > COPY yarn-site.xml /opt/hadoop/conf/yarn-site.xml > COPY hdfs-site.xml /opt/hadoop/conf/hdfs-site.xml > COPY core-site.xml /opt/hadoop/conf/core-site.xml > > 启动命令如下 > > flink-1.11.3/bin/flink run-application -p 1 -t kubernetes-application > -Dkubernetes.cluster-id=my-first-application-cluster-demo7-4 > -Dkubernetes.jobmanager.service-account=flink > -Dtaskmanager.memory.process.size=1024m -Dkubernetes.taskmanager.cpu=1 > -Dtaskmanager.numberOfTaskSlots=1 > -Dkubernetes.container-start-command-template="%java% %classpath% %jvmmem% > %jvmopts% %logging% %class% %args%" > -Dkubernetes.container.image=flink:demo7-4 > -Dkubernetes.rest-service.exposed.type=NodePort > local:///opt/flink/usrlib/flink-on-k8s-1.0-SNAPSHOT.jar > > flink-on-k8s-1.0-SNAPSHOT.jar 这个 jar 包仅仅是消费 kafka,使用 hdfs 作为 statebackend > 记录状态。 > > 一开始尝试只把 yarn-site.xml 等三个文件放在 usrlib 目录下,JobManager 无法启动,报错是 > UnknownHost。参考邮件列表中的信息,设置HADOOP_CONF_DIR之后,JobManager 成功启动且没有报错日志,但是 > TaskManager 一直处于 ContainerCreating 状态,7-8 分钟后 deployment 自动退出。使用 describe > pod 获取 tm 报错信息如下: > > Events: > Type Reason Age From > Message > ---- ------ ---- ---- > ------- > Normal Scheduled <unknown> default-scheduler > Successfully assigned > default/my-first-application-cluster-demo7-4-taskmanager-1-1 to > k8s-node0002 > Warning FailedMount 37s (x10 over 4m46s) kubelet, > k8s-ci-dcn-bigdata-node0002 MountVolume.SetUp failed for volume > "hadoop-config-volume" : configmap > "hadoop-config-my-first-application-cluster-demo7-4" not found > Warning FailedMount 29s (x2 over 2m44s) kubelet, k8s-node0002 Unable > to attach or mount volumes: unmounted volumes=[hadoop-config-volume], > unattached volumes=[hadoop-config-volume flink-config-volume > default-token-fhkhf]: timed out waiting for the condition > > 请问我是否配置有误,还是需要别的配置来启用 hdfs。 > 期待您的回复~ > > ------- > Best Regards! > > Yichen > |
按@Yang Wang 的指导,在 flink 脚本中设置了 HADOOP_CONF_DIR 可以成功运行了,感谢!
Yang Wang <[hidden email]> 于2021年1月4日周一 下午9:12写道: > 1.11版本以后可以直接在Flink Client的机器上export HADOOP_CONF_DIR > 然后运行flink run-application或者kubernetes_session.sh启动Flink任务,这样Flink > Client会自动通过ConfigMap将Hadoop配置ship到JobManager和TaskManager pod > 并且加到classpath的 > > Best, > Yang > > 龙逸尘 <[hidden email]> 于2021年1月4日周一 下午4:39写道: > > > 各位下午好,目前我正在使用 Flink on k8s application-mode 构建构建一个消费 kafka 写入 hive 的 > > demo,使用 hdfs 作为 statebackend,遇到了一些问题,希望能得到帮助。这里我描述一下问题与 debug 的过程。 > > > > Dockerfile 如下 > > > > FROM flink:1.11.3-scala_2.11 > > RUN mkdir -p $FLINK_HOME/usrlib > > RUN mkdir -p /opt/hadoop/conf > > COPY flink-shaded-hadoop-2-uber-2.7.5-10.0.jar > > $FLINK_HOME/lib/flink-shaded-hadoop-2-uber-2.7.5-10.0.jar > > COPY flink-on-k8s-1.0-SNAPSHOT.jar > > $FLINK_HOME/usrlib/flink-on-k8s-1.0-SNAPSHOT.jar > > COPY TopSpeedWindowing.jar $FLINK_HOME/usrlib/TopSpeedWindowing.jar > > ENV HADOOP_CONF_DIR /opt/hadoop/conf > > ENV YARN_CONF_DIR /opt/hadoop/conf > > COPY yarn-site.xml /opt/hadoop/conf/yarn-site.xml > > COPY hdfs-site.xml /opt/hadoop/conf/hdfs-site.xml > > COPY core-site.xml /opt/hadoop/conf/core-site.xml > > > > 启动命令如下 > > > > flink-1.11.3/bin/flink run-application -p 1 -t kubernetes-application > > -Dkubernetes.cluster-id=my-first-application-cluster-demo7-4 > > -Dkubernetes.jobmanager.service-account=flink > > -Dtaskmanager.memory.process.size=1024m -Dkubernetes.taskmanager.cpu=1 > > -Dtaskmanager.numberOfTaskSlots=1 > > -Dkubernetes.container-start-command-template="%java% %classpath% > %jvmmem% > > %jvmopts% %logging% %class% %args%" > > -Dkubernetes.container.image=flink:demo7-4 > > -Dkubernetes.rest-service.exposed.type=NodePort > > local:///opt/flink/usrlib/flink-on-k8s-1.0-SNAPSHOT.jar > > > > flink-on-k8s-1.0-SNAPSHOT.jar 这个 jar 包仅仅是消费 kafka,使用 hdfs 作为 statebackend > > 记录状态。 > > > > 一开始尝试只把 yarn-site.xml 等三个文件放在 usrlib 目录下,JobManager 无法启动,报错是 > > UnknownHost。参考邮件列表中的信息,设置HADOOP_CONF_DIR之后,JobManager 成功启动且没有报错日志,但是 > > TaskManager 一直处于 ContainerCreating 状态,7-8 分钟后 deployment 自动退出。使用 describe > > pod 获取 tm 报错信息如下: > > > > Events: > > Type Reason Age From > > Message > > ---- ------ ---- ---- > > ------- > > Normal Scheduled <unknown> default-scheduler > > Successfully assigned > > default/my-first-application-cluster-demo7-4-taskmanager-1-1 to > > k8s-node0002 > > Warning FailedMount 37s (x10 over 4m46s) kubelet, > > k8s-ci-dcn-bigdata-node0002 MountVolume.SetUp failed for volume > > "hadoop-config-volume" : configmap > > "hadoop-config-my-first-application-cluster-demo7-4" not found > > Warning FailedMount 29s (x2 over 2m44s) kubelet, k8s-node0002 > Unable > > to attach or mount volumes: unmounted volumes=[hadoop-config-volume], > > unattached volumes=[hadoop-config-volume flink-config-volume > > default-token-fhkhf]: timed out waiting for the condition > > > > 请问我是否配置有误,还是需要别的配置来启用 hdfs。 > > 期待您的回复~ > > > > ------- > > Best Regards! > > > > Yichen > > > |
Free forum by Nabble | Edit this page |