尘世壹俗人 2025-07-29 12:45 采纳率: 81.3%
浏览 8

celeborn的http端口访问返回404

最近部署了spark的rss,使用celeborn,但奇怪的是,按照官方仓库中的方式打包和部署之后,spark任务能正常用celeborn提供的shuffle服务,但是celeborn服务的http端口访问会404,这是少什么东西了嘛?

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2025-07-29 12:46
    关注

    中午好🌞🌞🌞
    本答案参考通义千问

    你遇到的问题是:在部署 Spark 的 RSS(Resilient Distributed Shuffle Service)时,使用 Celeborn 作为 shuffle 服务,Spark 任务能够正常运行,但访问 Celeborn 的 HTTP 端口时返回 404 错误。这说明 Celeborn 服务本身可能没有正确启动,或者其 Web 界面未被正确配置或启用


    ✅ 原因分析

    1. Celeborn 未正确启动
      如果 Celeborn 没有成功启动,那么它就不会监听 HTTP 端口,自然无法响应请求。

    2. HTTP 端口配置错误
      可能你配置的 HTTP 端口与实际启动的端口不一致。

    3. Web 界面未启用
      在某些版本中,默认可能没有启用 Web 界面,需要手动配置。

    4. 防火墙/网络问题
      有可能是网络策略限制了对 HTTP 端口的访问。

    5. 日志中存在错误信息
      查看 Celeborn 的日志文件,可能会发现更详细的错误原因。


    🔧 解决方案

    1. 确认 Celeborn 是否已成功启动

    • 检查进程是否存在:

      ps -ef | grep celeborn
      
    • 查看日志文件(通常位于 logs 目录下):

      tail -f logs/celeborn-worker.log
      tail -f logs/celeborn-master.log
      

      重点关注以下内容:

      • 是否有 Listening on port 的提示。
      • 是否出现异常如 Address already in useFailed to bind 等。

    2. 检查 HTTP 端口配置是否正确

    • 查看 conf/celeborn-defaults.conf 文件,确保以下配置项正确:

      # Master HTTP 端口
      celeborn.master.port=19000
      # Worker HTTP 端口
      celeborn.worker.port=19001
      
    • 如果你访问的是 http://<host>:19000http://<host>:19001,请确认这些端口是否开放。


    3. 确保 Web 界面已启用

    • celeborn-defaults.conf 中添加或确认以下配置:

      # 启用 Web UI
      celeborn.ui.enabled=true
      # Web UI 端口(默认为 19000)
      celeborn.ui.port=19000
      
    • 如果启用了 Web UI,Celeborn 应该会在启动时输出类似以下的日志:

      [INFO] Starting web UI at http://0.0.0.0:19000
      

    4. 检查网络和防火墙设置

    • 确保目标机器的 HTTP 端口(如 19000)在防火墙中是开放的。

      sudo ufw allow 19000/tcp
      
    • 使用 telnetnc 测试端口是否可达:

      telnet <host> 19000
      # 或
      nc -zv <host> 19000
      

    5. 检查 Spark 配置是否正确指向 Celeborn

    • 确保在 Spark 的 spark-defaults.conf 中设置了正确的 Celeborn 地址:

      spark.shuffle.service.enabled=true
      spark.shuffle.service.port=7337
      spark.rss.master.url=spark://<master-host>:7337
      
    • 如果你的 Celeborn 是以 Standalone 模式运行,确保 spark.rss.master.url 正确指向 Celeborn Master 的地址。


    6. 查看 Web UI 页面是否加载成功

    • 访问 http://<celeborn-master-ip>:19000,如果页面加载失败,请尝试以下步骤:

      • 检查浏览器控制台是否有错误(如跨域问题)。
      • 尝试使用 curl 测试:
        curl http://<celeborn-master-ip>:19000
        

    📌 总结

    | 问题 | 解决方案 | |------|----------| | Celeborn 未启动 | 检查日志,确认服务是否正常启动 | | HTTP 端口错误 | 检查 celeborn-defaults.conf 中的端口配置 | | Web UI 未启用 | 在配置文件中设置 celeborn.ui.enabled=true | | 网络问题 | 检查防火墙和端口连通性 | | Spark 配置错误 | 确认 spark.rss.master.urlspark.shuffle.service.port 正确 |


    ✅ 示例代码片段(修改后的 celeborn-defaults.conf

    # Celeborn master configuration
    celeborn.master.port=19000
    celeborn.master.web.port=19000
    celeborn.ui.enabled=true
    celeborn.ui.port=19000
    
    # Celeborn worker configuration
    celeborn.worker.port=19001
    celeborn.worker.web.port=19001
    
    # Shuffle service configuration
    spark.shuffle.service.enabled=true
    spark.shuffle.service.port=7337
    spark.rss.master.url=spark://<master-host>:7337
    

    如果你仍然无法解决,建议提供以下信息以便进一步排查:

    • Celeborn 的版本号
    • 完整的日志内容(尤其是启动时的日志)
    • 你使用的 Spark 版本
    • 你访问的 URL 和返回的完整错误信息

    我可以帮助你进一步定位问题!

    评论

报告相同问题?

问题事件

  • 创建了问题 7月29日