通过 Docker 集成 Flink 和 HDFS

问题描述 投票:0回答:1

我有 flink jobmanager 和 taskmanager 节点,还有 hdfs namenode 和 datanode 作为 Docker 容器。

  jobmanager:
    image: flink:1.17.2-scala_2.12-java8
    ports:
      - "8081:8081"
    environment:
      - HADOOP_CLASSPATH=??
      - |
        FLINK_PROPERTIES=
        ...

  taskmanager:
    image: flink:1.17.2-scala_2.12-java8
    depends_on:
      - jobmanager
    scale: 2
    environment:
      - HADOOP_CLASSPATH=??
      - |
        FLINK_PROPERTIES=
        ...


  namenode:
    image: bde2020/hadoop-namenode:latest
    ports:
      - 9870:9870
      - 9000:9000
      - 8020:8020
    environment:
      - CLUSTER_NAME=hadoop-cluster
      - HDFS_CONF_dfs_blocksize=128m
      - HDFS_CONF_dfs_replication=1

  datanode:
    image: bde2020/hadoop-datanode:latest
    ports:
      - 9864:9864
    depends_on:
      - namenode
    scale: 1
    environment:
      - CLUSTER_NAME=hadoop-cluster
      - SERVICE_PRECONDITION=namenode:9870
      - HDFS_CONF_dfs_blocksize=128m
      - HDFS_CONF_dfs_replication=1
      - CORE_CONF_fs_defaultFS=hdfs://namenode:8020

要运行作业,我需要在 Flink 容器中指定 HADOOP_CLASSPATH 环境变量。

hadoop classpath
namenode 容器内带我这个:

# export HADOOP_CLASSPATH=$(hadoop classpath)
# echo $HADOOP_CLASSPATH
/etc/hadoop:/opt/hadoop-3.2.1/share/hadoop/common/lib/*:/opt/hadoop-3.2.1/share/hadoop/common/*:/opt/hadoop-3.2.1/share/hadoop/hdfs:/opt/hadoop-3.2.1/share/hadoop/hdfs/lib/*:/opt/hadoop-3.2.1/share/hadoop/hdfs/*:/opt/hadoop-3.2.1/share/hadoop/mapreduce/lib/*:/opt/hadoop-3.2.1/share/hadoop/mapreduce/*:/opt/hadoop-3.2.1/share/hadoop/yarn:/opt/hadoop-3.2.1/share/hadoop/yarn/lib/*:/opt/hadoop-3.2.1/share/hadoop/yarn/*

但是,我不明白如何在Flink容器内指定HADOOP_CLASSPATH,因为hadoop本身安装在另一个容器中。任何帮助将不胜感激。

docker hadoop apache-flink
1个回答
0
投票

Flink 需要

HADOOP_CLASSPATH
才能访问 JAR 文件。这些 JAR 文件必须在本地可供 Flink 使用。

据我所知,如果不使用中间的挂载,您就无法将一个容器的文件系统的一部分公开给另一个容器(然后您需要将 Hadoop 容器上的必要文件复制到该容器,然后才能在 Flink 容器上使用它们)。

另一种选择是构建您自己的 Flink 容器来扩展

flink:1.17.2-scala_2.12-java8
图像。 这里有一个这样做的例子 - 在这种情况下,我只是挑选了我认为我的 Flink 程序所需的 JAR,而不是整个 Hadoop 发行版。您可以在此处阅读有关此方法的更多信息(在
‍This is where it gets "fun": Hadoop Dependency
标题下)

© www.soinside.com 2019 - 2024. All rights reserved.