【问题标题】:Never successfully built a large hadoop&spark cluster从未成功构建过大型 hadoop&spark 集群
【发布时间】:2015-12-08 22:02:54
【问题描述】:

我想知道在使用 bdutil 工具部署 Spark 集群时是否有人可以帮助我解决这个问题。 当核心总数增加(>= 1024)时,一直失败,原因如下:

  1. 某些机器永远不能 sshable,例如“2015 年 12 月 8 日星期二 13:45:14 PST:'hadoop-w-5' 还不能 sshable (255);正在睡觉”

  2. 在部署 spark 工作节点时,某些节点会失败并出现“Exited 100”错误,例如“2015 年 12 月 8 日星期二 15:28:31 PST:退出 100:gcloud --project=cs-bwamem --quiet - -verbosity=info 计算 ssh hadoop-w-6 --command=sudo su -l -c "cd ${PWD} && ./deploy-core-setup.sh" 2>>deploy-core-setup_deploy.stderr 1> >deploy-core-setup_deploy.stdout --ssh-flag=-tt --ssh-flag=-oServerAliveInterval=60 --ssh-flag=-oServerAliveCountMax=3 --ssh-flag=-oConnectTimeout=30 --zone= us-central1-f"

在日志文件中,它说:

hadoop-w-40: ==> deploy-core-setup_deploy.stderr

hadoop-w-40: dpkg-query: package 'openjdk-7-jdk' 未安装且没有可用信息

hadoop-w-40:使用 dpkg --info (= dpkg-deb --info) 检查存档文件,

hadoop-w-40: 和 dpkg --contents (= dpkg-deb --contents) 列出它们的内容。

hadoop-w-40: 无法获取 http://httpredir.debian.org/debian/pool/main/x/xml-core/xml-core_0.13+nmu2_all.deb 从服务器读取错误。远端关闭连接[IP: 128.31.0.66 80]

hadoop-w-40: E: 无法获取一些档案,也许运行 apt-get update 或尝试使用 --fix-missing?

我试过16核128节点、32核64节点、32核32节点等1024核以上的配置,但以上原因1或2都会出现。

我还尝试修改 ssh-flag 以将 ConnectTimeout 更改为 1200s,并更改 bdutil_env.sh 以将轮询间隔设置为 30s、60s、...,它们都不起作用。总会有一些节点失败。

这是我使用的配置之一:

时间 ./bdutil \ --bucket $桶\ - 力量 \ --machine_type n1-highmem-32 \ --master_machine_type n1-highmem-32 \ --num_workers 64 \ --项目$项目\ --upload_files ${JAR_FILE} \ --env_var_files hadoop2_env.sh,extensions/spark/spark_env.sh \ 部署

【问题讨论】:

    标签: google-hadoop


    【解决方案1】:

    总结从单独的电子邮件讨论中得出的一些信息,随着 IP 映射的变化和分配不同的 debian 镜像,在 bdutil 部署期间并发调用 apt-get install 时可能会偶尔出现一些问题服务器不平衡或触发 DDOS 保护导致部署失败。这些确实往往是暂时的,目前看来我可以再次成功地在us-east1-cus-east1-d 等区域中部署大型集群。

    您可以采取一些选项来减少 debian 镜像的负载:

    1. MAX_CONCURRENT_ASYNC_PROCESSES设置为比bdutil_env.sh内部默认的150小得多的值,例如10一次只部署10个;这会延长部署时间,但会减轻负载,就像您刚刚进行了几次背靠背 10 节点部署一样。
    2. 如果 VM 已成功创建但部署步骤失败,则无需重试整个删除/部署周期,您可以尝试 ./bdutil <all your flags> run_command -t all -- 'rm -rf /home/hadoop' 后跟 ./bdutil <all your flags> run_command_steps 来运行整个部署尝试。
    3. 使用resize_env.sh增量构建集群;最初设置--num_workers 10 并部署您的集群,然后编辑resize_env.sh 以设置NEW_NUM_WORKERS=20,并运行./bdutil <all your flags> -e extensions/google/experimental/resize_env.sh deploy,它只会部署新工作人员10-20 而不会触及前10 个工作人员。然后你只需重复,添加另外 10 名工人到NEW_NUM_WORKERS 每次。如果调整大小尝试失败,您只需 ./bdutil <all your flags> -e extensions/google/experimental/resize_env.sh delete 仅删除那些额外的工作人员,而不影响您已成功部署的工作人员。

    最后,如果您正在寻找更可重复和优化的部署,您应该考虑使用Google Cloud Dataproc,它允许您使用标准的gcloud CLI 到deploy clustersubmit jobs,以及进一步的manage/delete clusters,而无需需要记住您的 bdutil 标志或跟踪您的客户端计算机上有哪些集群。您可以通过 SSH 连接到 Dataproc 集群并使用它们与 bdutil 集群基本相同,但有一些细微差别,例如 Dataproc DEFAULT_FS 是 HDFS,因此您使用的任何 GCS 路径都应完全指定完整的 gs://bucket/object 名称。

    【讨论】:

      猜你喜欢
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      相关资源
      最近更新 更多