无法访问 Mesosphere DC/OS 上的 HDFS,尽管 "healthy" 状态

Can't access HDFS on Mesosphere DC/OS despite "healthy" status

因此,我使用 CloudFormation 脚本/指令在 AWS 中部署了一个 Mesos 集群 here,默认集群设置(5 个私有从属、一个 public 从属、单个主、所有 m3.xlarge),并使用dcos命令在集群上安装HDFS:dcos package install hdfs.

根据 DC/OS 网络 UI 和 Marathon,HDFS 服务显然正常运行:

(问题) 此时我应该能够通过 SSH 进入我的从属节点并执行 hadoop fs 命令,但是 returns 错误-bash: hadoop: command not found(基本上告诉我这里没有安装hadoop)。

没有来自 HDFS 服务的 STDOUT 和 STDERR 日志记录的错误,但就其价值而言,日志中出现了一条重复出现的 "offer decline" 消息:

Processing DECLINE call for offers: [ 5358a8d8-74b4-4f33-9418-b76578d6c82b-O8390 ] for framework 5358a8d8-74b4-4f33-9418-b76578d6c82b-0001 (hdfs) at scheduler-60fe6c75-9288-49bc-9180-f7a271c …

我确定我漏掉了一些愚蠢的东西。

所以我找到了 a 解决方案,至少可以在安装后验证 HDFS 在您的 Mesos DC/OS 集群上 运行ning。

  1. 使用 dcos CLI 通过 SSH 连接到您的 master:dcos node ssh --master-proxy --leader
  2. 创建一个安装了 hadoop 的 docker 容器来查询您的 HDFS:docker run -ti cloudera/quickstart hadoop fs -ls hdfs://namenode-0.hdfs.mesos:9001/

为什么这不是一个好的解决方案以及需要注意什么:

  1. Previous documentation 都指向 hdfs://hdfs/ 的默认 URL,它会抛出 java.net.UnknownHostException。我不喜欢直接指向一个名称节点。
  2. Other documentation 建议您可以 运行 hdfs fs ... 命令,当您通过 SSH 进入您的集群时 - 这并不像记录的那样工作。
  3. 我用来测试您是否可以访问 HDFS 的映像 > 4GB(更好的选择?)
  4. None 已记录(或至少未记录 clearly/completely,因此我保持此 post 更新)。我不得不通过 DC/OS 闲聊来寻找答案。
  5. The Mesosphere/HDFS repo 是一个与通过 dcos package install hdfs 安装的 HDFS 完全不同的版本。该回购不再维护,新版本尚未开源(因此我猜缺少当前文档)。

我希望有一种更简单的方法来连接我仍然缺少的 HDFS。任何更好的解决方案仍然会很有帮助!