Flink无法在马拉松中运行

时间:2019-04-28 07:26:06

标签: docker apache-flink mesos marathon

我有三个安装了docker的物理节点。我有一个带有Mesos,Marathon,Hadoop和Flink的docker容器。我为Mesos,Zookeeper和Marathon配置了主节点和从节点。我会逐步进行这些工作。 首先,在Master节点中,使用以下命令输入docker容器:

docker run -v /home/user/.ssh:/root/.ssh --privileged -p 5050:5050 -p 5051:5051 -p 5052:5052 -p 2181:2181 -p 8082:8081 -p 6123:6123 -p 8080:8080 -p 50090:50090 -p 50070:50070 -p 9000:9000 -p 2888:2888 -p 3888:3888 -p 4041:4040 -p 7077:7077 -p 52222:22 -e WEAVE_CIDR=10.32.0.2/12 -e MESOS_EXECUTOR_REGISTRATION_TIMEOUT=5mins -e LIBPROCESS_IP=10.32.0.2 -e MESOS_RESOURCES=ports*:[11000-11999] -ti hadoop_marathon_mesos_flink_2 /bin/bash

然后运行Mesos和Zookeeper:

/home/zookeeper-3.4.14/bin/zkServer.sh restart
/home/mesos-1.7.2/build/bin/mesos-master.sh --ip=10.32.0.1 --hostname=10.32.0.1 --roles=marathon,flink --quorum=1 --work_dir=/var/run/mesos --log_dir=/var/log/mesos 

然后在同一容器中运行Marathon:

 /home/marathon-1.7.189-48bfd6000/bin/marathon --master 10.32.0.1:5050 --zk zk://10.32.0.1:2181/marathon --hostname 10.32.0.1 --webui_url 10.32.0.1:8080 --logging_level debug

最后,我运行hadoop:

  /opt/hadoop/sbin/start-dfs.sh

马拉松,Mesos和Hadoop的运行没有任何问题。 我工作中最重要的部分是在Marathon中运行Flink。我在docker容器中这样配置了Flink:

  env.java.home: /opt/java
  jobmanager.rpc.address: 10.32.0.1
  high-availability: zookeeper
  high-availability.storageDir: hdfs:///flink/ha/
  high-availability.zookeeper.quorum: 10.32.0.1:2181,10.32.0.2:2181
  recovery.zookeeper.path.mesos-workers: /mesos-workers

在Marathon UI中,我创建了Application,并将此JSON文件放在其上,但是失败。

  {
  "id": "flink",
  "cmd": "/home/flink-1.7.0/bin/mesos-appmaster.sh 
   -Dmesos.master=10.32.0.1:5050,10.32.0.2:5050 
   -Dmesos.initial-tasks=1",
  "cpus": 1.0,
  "mem": 1024
   }
Mesos UI中的

Flink 应用程序失败。它显示此错误:

  

I0428 06:01:39.586699 6155 exec.cpp:162]版本:1.7.2

     

I0428 06:01:39.596458 6154 exec.cpp:236]执行人已在代理984595ae-e811-48fb-a9f5-ca6128e1cc1a-S0中注册

     

I0428 06:01:39.598870 6157 executor.cpp:188]收到了SUBSCRIBED事件

     

I0428 06:01:39.599761 6157 executor.cpp:192]在10.32.0.3上订阅了执行者

     

I0428 06:01:39.599963 6157 executor.cpp:188]收到启动事件

     

I0428 06:01:39.601236 6157 executor.cpp:697]启动任务flink.16a7cc18-697b-11e9-928f-ce235caa831e

     

I0428 06:01:39.613719 6157 executor.cpp:712]在6163处分叉的命令

     

I0428 06:01:39.787395 6157 executor.cpp:1013]命令退出,状态为1(pid:6163)

     

I0428 06:01:40.791885 6162 process.cpp:927]停止了套接字接受循环

奇怪的是,在STDout中,我看到了这段文字;即使我在 / etc / environment flink-conf.yam 中设置了JAVA_HOME。

  

请指定JAVA_HOME。在Flink config ./conf/flink-conf.yaml中或作为系统范围的JAVA_HOME。

您能告诉我该怎么办吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以在Slave节点中检查Flink日志。另外,最好像这样更改您的JSON文件。它可以帮助您关注您的申请。

 {
  "id": "flink",
  "cmd": "/home/flink-1.7.0/bin/mesos-appmaster.sh -Djobmanager.heap.mb=1024 
  -Djobmanager.rpc.port=6123 -Drest.port=8081 
  -Dmesos.resourcemanager.tasks.mem=1024 -Dtaskmanager.heap.mb=1024 
  -Dtaskmanager.numberOfTaskSlots=2 -Dparallelism.default=2 
  -Dmesos.resourcemanager.tasks.cpus=1",
   "cpus": 1.0,
   "mem": 1024,
   "fetch": [
     {
      "uri": "/home/flink-1.7.0/bin/mesos-appmaster.sh",
      "executable": true
     }
      ]
    }

此外,在每个节点(主节点和从节点)中,将JAVA_HOME转换为Flink_conf.yaml。

 env.java.home: /opt/java

添加JAVA_HOME后,您在STDOUT中看不到错误。

我认为这很有用。