无法访问 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 之间工作