【问题标题】:Can't access to SparkUI though YARN通过 YARN 无法访问 SparkUI
【发布时间】:2020-07-15 18:56:43
【问题描述】:

我正在构建一个 docker 映像以在本地运行 zeppelin 或 spark-shell,以针对使用 YARN 的生产 Hadoop 集群。 编辑:环境是 macOS

我可以很好地执行作业或 spark-shell,但是当我尝试访问 YARN 上的 Tracking URL 时,同时作业正在运行,它会挂起 YARN-UI 整整 10 分钟。 YARN 仍在工作,如果我通过 ssh 连接,我可以执行 yarn 命令。

如果我不访问 SparkUI(直接或通过 YARN),则不会发生任何事情。作业执行完毕,YARN-UI 未挂起。

更多信息

  • 本地,在 Docker 上:Spark 2.1.2、Hadoop 2.6.0-cdh5.4.3

  • 生产:Spark 2.1.0、Hadoop 2.6.0-cdh5.4.3

  • 如果我在本地执行它(--master local[*]),它可以工作,我可以通过 4040 连接到 SparkUI。

  • 火花配置:

      spark.driver.bindAddress           172.17.0.2 #docker_eth0_ip
      spark.driver.host                  192.168.XXX.XXX #local_ip 
      spark.driver.port                  5001
      spark.ui.port                      4040
      spark.blockManager.port            5003
    
  • 是的,ApplicationMaster 和节点可以查看我的本地 SparkUI 或驱动程序(telnet 测试)

  • 正如我所说,我可以执行作业,然后 docker 公开端口并且它的绑定正在工作。一些日志证明了这一点:

      INFO ApplicationMaster: Driver now available: 192.168.XXX.XXX:5001
      INFO TransportClientFactory: Successfully created connection to /192.168.XXX.XXX:5001 after 65 ms (0 ms spent in bootstraps)
      INFO ApplicationMaster$AMEndpoint: Add WebUI Filter. AddWebUIFilter(org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter,Map(PROXY_HOSTS -> jobtracker.hadoop, PROXY_URI_BASES -> http://jobtracker.hadoop:8088/proxy/application_000_000),/proxy/application_000_000)
    

一些想法或我可以在哪里查看正在发生的事情?

【问题讨论】:

    标签: apache-spark docker hadoop hadoop-yarn spark-ui


    【解决方案1】:

    问题与 docker 在 MacOS 上执行时如何管理 IP 传入请求有关。

    当在 docker 容器中运行的 YARN 接收到一个没有看到原始 IP 的请求时,它会看到内部代理 docker IP(在我的情况下为 172.17.0.1)。

    当请求发送到我的本地容器 SparkUI 时,会自动将请求重定向到 hadoop master(这是 YARN 的工作方式),因为它发现请求不是来自 hadoop master,它只接受来自此来源的请求。

    当 master 收到转发的请求时,它会尝试将其发送到 spark 驱动程序(我的本地 docker 容器),该驱动程序再次将请求转发给 hadoop master,因为它看到 IP 源不是 master,是代理 IP。

    它占用为 UI 保留的所有线程。直到线程没有释放 YARN UI 被挂起

    我“解决了”更改 docker yarn 配置

    <property>
      <name>yarn.web-proxy.address</name>
      <value>172.17.0.1</value> 
    </property>
    

    这允许 sparkUI 处理对 docker 容器的任何请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-03
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多