无法访问 EC2 Spark 集群上的 Ganglia

Posted

技术标签:

【中文标题】无法访问 EC2 Spark 集群上的 Ganglia【英文标题】:Can't access Ganglia on EC2 Spark cluster 【发布时间】:2015-06-10 22:33:17 【问题描述】:

使用 spark-ec2 脚本启动会导致:

设置 ganglia RSYNC'ing /etc/ganglia to slaves... <...>

关闭 GANGLIA gmond:[FAILED]

开始 GANGLIA gmond: [OK]

关闭 GANGLIA gmond:[FAILED]

开始 GANGLIA gmond: [OK]

与 <...> 的连接已关闭。 <...> 停止 httpd: [失败] 启动 httpd: httpd: 第 199 行的语法错误 /etc/httpd/conf/httpd.conf:无法加载模块/libphp-5.5.so 到 服务器:/etc/httpd/modules/libphp-5.5.so:无法打开共享对象 文件:没有这样的文件或目录 [失败] [时机]

神经节设置:00h 00m 03s 与 <...> 的连接已关闭。

Spark 独立集群开始于 <...>:8080 Ganglia 开始于 <...>:5080/神经节

完成!

但是,当我netstat 时,没有监听 5080 端口。

这与上述 httpd 错误有关还是其他原因?

编辑:

所以问题找到了(请参阅下面的答案),并且可以在实例本地应用修复程序,之后 Ganglia 工作正常。但是问题是如何在 root 中解决这个问题,以便 spark-ec2 脚本可以正常启动 Ganglia 而无需干预。

【问题讨论】:

【参考方案1】:

ganglia 不可用的事实与这些错误有关 - ganglia 是 php 应用程序,如果没有 apache 的 php 模块,它将无法运行。

您使用哪个版本的 spark 来启动集群?

这是一个奇怪的错误 - 这些文件应该存在于 AMI 映像中。

【讨论】:

这是我的答案 :) 我正在使用 spark master 进行测试(spark 1.3.1 不允许指定自定义 spark-ec2 存储库。使用 spark master 分支 - 您可以使用这些选项 @ 987654321@ 。当然最好等待官方更新,并且出于明显的安全原因不要依赖第三方来源。 Gotcha.. 这不是问题,因为我可以临时手动更改 httpd.conf。但是很好地找到并提交修复程序【参考方案2】:

刚刚追踪到错误:/etc/httpd/conf/httpd.conf 正在尝试加载 libphp-5.5 库,而 modules/ 包含 libphp-5.6 版本...

更改 httpd.conf 解决了这个问题,但是我很高兴知道 spark-ec2 脚本中的永久修复

【讨论】:

我已经提交了修复请求。它不是 spark 代码库中的 spark-ec2 脚本。是mesos/spark-ec2的公园。这是拉取请求的链接 - github.com/mesos/spark-ec2/pull/118 。一旦他们将其合并 - 将无需更新 spark。 spark-ec2 脚本将从 mesos/spark-ec2 存储库中提取新版本【参考方案3】:

这是因为 httpd 启动失败。正如您所指出的,httpd.conf 正在尝试加载模块并失败。您可以通过apachectl start 重现该问题,并准确检查哪些模块无法加载。

在我的例子中,有一个涉及“auth”和“core”。列出的最后四个(可能五个)也将无法加载。我没有遇到任何与 PHP 相关的事情,所以也许我们的案例不同。无论如何,hacky 的解决方案是注释掉问题。我这样做了,并且运行 Ganglia 没有问题。

【讨论】:

以上是关于无法访问 EC2 Spark 集群上的 Ganglia的主要内容,如果未能解决你的问题,请参考以下文章

无法从 S3 读取 csv 到 AWS 上 EC2 实例上的 pyspark 数据帧

设置 Jupyter Pyspark 在 EC2 和 EMR 之间工作

Mesos 上的独立 Spark 集群访问不同 Hadoop 集群中的 HDFS 数据

无法通过公共 ip 访问 EC2 实例上的站点

远程访问 EC2 上的 Kubernetes 仪表板

在 EC2 Ruby on Rails 上连接到 datastax 集群上的 cassandra 节点