我在 Amazon EMR 中的 Apache Hadoop 作业执行失败,显示错误消息“Timeout waiting for connection from pool”。

此错误通常会在您达到了 Amazon EMR File System (EMRFS) 的 Amazon Simple Storage Service (Amazon S3) 连接限制时发生。如要解决此错误,请增加 fs.s3.maxConnections 属性的值。您可以在集群运行时或创建新集群时进行此项操作。

增加正在运行的集群的 fs.s3.maxConnections 值

1.    使用 SSH 连接主节点

2.    将 emrfs-site.xml 文件打开为 sudo。该文件位于 /usr/share/aws/emr/emrfs/conf 目录中。

sudo vi /usr/share/aws/emr/emrfs/conf/emrfs-site.xml

3.    将 fs.s3.maxConnections 属性设置为一个大于 50 的值。在下例中,该值设置为 100。根据应用程序需要并发运行的 S3 连接数量,您可能选择一个更高的值。
注意:如果您启动使用 Apache HBase 的集群,则 fs.s3.maxConnections 值将默认设置为 1000。如果增加 fs.s3.maxConnections 的值无法解决此超时错误,则检查您的应用程序是否有连接泄露情况。

<property>
  <name>fs.s3.maxConnections</name>
  <value>100</value>
</property>

4.    对所有核心节点和任务节点重复第 2 步和第 3 步。使用您在主节点上所用的相同 fs.s3.maxConnections 值。

5.    再次运行 Hadoop 作业。您的应用程序应使用新的 fs.s3.maxConnections 值且无需重启服务。

增加新集群的 fs.s3.maxConnections 值

如要在启动新集群时设置所有节点的 fs.s3.maxConnections 属性值,需要使用与下列所述类似的配置对象。有关更多信息,请参阅配置应用程序

[
    {
      "Classification": "emrfs-site",
      "Properties": {
        "fs.s3.maxConnections": "100",
      }
    }
 ]

此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2019 年 1 月 28 日