如何在 EMR 集群引导程序上设置 livy.server.session.timeout?

how to set livy.server.session.timeout on EMR cluster boostrap?

我正在创建一个 EMR 集群,并使用 jupyter notebook 运行 一些 spark 任务。 我的任务在执行大约 1 小时后死亡,错误是:

An error was encountered:
Invalid status code '400' from https://xxx.xx.x.xxx:18888/sessions/0/statements/20 with error payload: "requirement failed: Session isn't active."

我的理解是和Livy配置livy.server.session.timeout有关,但是不知道怎么在集群的bootstrap里面设置(需要在bootstrap 因为集群是在没有 ssh 访问权限的情况下创建的)

非常感谢

在EMR上,livy-conf是livy的livy.conf文件的属性分类,所以在创建EMR集群时,选择advanced options,选择安装Livy作为应用程序,请在 Enter Configuration 字段中传递此 EMR 配置。

[{'classification': 'livy-conf','Properties': {'livy.server.session.timeout':'5h'}}]
  • 在 EMR 上,Livy 二进制文件位于 /etc/livy/,因此配置文件位于 /etc/livy/conf/livy.conf

为了验证这一点,

  • 使用已知 ec2 key-pair、Livy 及以上配置创建 EMR 集群
  • 使用 ec2 key-pair,登录到与集群关联的 EC2 主节点 ssh -i some-ec2-key-pair.pem hadoop@ec2-00-00-00-0.ca-region-n.compute.amazonaws.com
  • 导航至 /etc/livy/conf、vim livy.conf 并查看 livy.server.session.timeout
  • 的更新值

如果您不想重新创建集群,另一种方法是: 转到 /etc/livy/conf/livy.conf 并将 livy.server.session.timeout 属性 设置为您想要的值。 之后,运行 sudo restart livy-server 使配置生效。

如果您根本不希望 Livy 会话中断,请在 /etc/livy/conf/livy.conf 中将 属性 livy.server.session.timeout-check 设置为 false