为什么我不能在我的 EMR 笔记本上运行 Spark 应用程序?

2 分钟阅读
0

我无法在 Amazon EMR 笔记本上运行我的 Apache Spark 应用程序

简短描述

从 EMR 笔记本运行的 Spark 应用程序可能因以下异常而无法启动:

The code failed because of a fatal error:
Session 4 did not start up in 60 seconds.

解决方法

以下是针对在您的 EMR 笔记本上运行 Spark 应用程序的常见故障排查步骤:

检查集群上的资源

确保 Spark 在集群中有足够的可用资源,可供 Jupyter 用于创建 Spark 上下文。您可以使用 Amazon CloudWatch 指标或资源管理器来检查可用的资源。

确保 Sparkmagic 库的配置正确

请联系您的 Jupyter 管理员,以确保 Sparkmagic 库的配置正确。

重启笔记本内核

1.    打开 EMR 控制台,然后选择 Notebook(笔记本)。

2.    在笔记本列表中选择笔记本,然后选择 Open in JupyterLab(在 JupyterLab 中打开)或 Open in Jupyter(在 Jupyter 中打开)。JupyterLab 或 Jupyter Notebook 编辑器将在新的浏览器选项卡中打开。

3.    在内核菜单中,选择 Restart Kernel(重新启动内核)。

为 JupyterLab 延长 Spark 会话超时时间

要延长 Spark 会话超时时间,请执行以下操作:

1.    打开 EMR 控制台,并选择 Notebook(笔记本)。

2.    在笔记本列表中选择笔记本。

3.    访问 EMR 笔记本的 Jupyter Web 用户界面。

4.    打开 EMR 笔记本终端。

5.    使用以下命令打开 config.json 文件:

vi /home/notebook/.sparkmagic/config.json

5.    添加或更新 config.json 文件中的 livy_session_startup_timeout_seconds: xxx 选项。

6.    重新启动所有内核。

**注意:**如果 JupyterHub 应用程序安装在 EMR 主实例中,则执行以下操作以延长 Spark 会话超时时间。

1.    运行以下命令:

vi /etc/jupyter/conf/config.json

2.    为您的值更新 livy_session_startup_timeout_seconds:60 选项,然后重新启动 JupyterHub 容器。

调整 Spark 驱动程序内存

调整 Jupyter notebook 应用程序所使用的 Spark 驱动程序内存,以控制资源分配。有关更多信息,请参阅如何修改 Amazon EMR 笔记本中的 Spark 配置?

确保 Apache Livy 服务运行正常

检查在主节点实例上运行的 Livy 服务器的状态

1.    使用以下命令来检查 livy-server 的状态:

sudo systemctl status livy-server

2.    如果状态为关闭,请使用以下命令重新启动 livy-server:

sudo systemctl start livy-server

增加 Livy 服务器的内存

在默认情况下,笔记本客户端会持续尝试 90 秒以连接到 Livy 服务器。如果 Livy 服务器未在 90 秒内响应,则客户端会生成超时。Livy 服务器未响应的最常见原因是缺少足够资源。要解决此问题,请增加 Livy 服务器的内存:

1.    使用 SSH 连接到主节点实例

2.    添加以下属性到 /etc/livy/conf/livy-env.sh 文件:

export LIVY_SERVER_JAVA_OPTS="-Xmx8g" (option to your value)

3.    要使更改生效,请重新启动 Livy 服务器。

sudo systemctl stop livy-server
sudo systemctl start livy-server

在 Livy 中使用集群模式而不是客户端模式

在客户端模式的笔记本上提交 Spark 应用程序,而 Spark 驱动程序将作为 Livy 服务器的子进程运行。作为子进程运行可能导致主节点上缺少资源。为防止 Livy 因资源不足而无法运行,请将部署模式更改为集群模式。如果在集群模式中运行,则驱动程序将在核心和任务节点的主要应用程序上运行,而不是在主节点上运行。

要使用集群模式,请执行以下操作:

1.    使用 SSH 连接到主节点

2.    添加以下参数到 /etc/livy/conf/livy.conf 文件:

livy.spark.deploy-mode  cluster

3.    要使更改生效,请重新启动 Livy 服务器:

sudo systemctl stop livy-server
sudo systemctl start livy-server

AWS 官方
AWS 官方已更新 1 年前