Flink on k8s 1.11.3版本,使用 hdfs 的任务, taskmanager 无法启动的问题

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Flink on k8s 1.11.3版本,使用 hdfs 的任务, taskmanager 无法启动的问题

龙逸尘
各位下午好,目前我正在使用 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
Reply | Threaded
Open this post in threaded view
|

Re: Flink on k8s 1.11.3版本,使用 hdfs 的任务, taskmanager 无法启动的问题

Yang Wang
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
>
Reply | Threaded
Open this post in threaded view
|

Re: Flink on k8s 1.11.3版本,使用 hdfs 的任务, taskmanager 无法启动的问题

龙逸尘
按@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
> >
>