【问题标题】:Successful Oryx Install on Google Compute Engine?在 Google Compute Engine 上成功安装 Oryx?
【发布时间】:2014-12-13 08:04:12
【问题描述】:

我正在尝试让 Oryx 在 Google Compute Engine 上运行。我创建了一个新实例并通过以下方式安装了 Oryx:

git clone https://github.com/cloudera/oryx.git
cd oryx
mvn -DskipTests install

并将此安装保存为 Google Compute Engine 上的图像(“oryx-image”)。

发现 Oryx 和 Google 文件系统 (Hadoop 2.4.1 and Google Cloud Storage connector for Hadoop) 的问题 我一直使用 hdfs:// 作为默认文件系统。

发现在 Google Compute Engine 上启动的默认 Hadoop 包存在问题(例如,没有 Snappy 库,默认 Oryx 配置需要这些库),我还尝试创建自己的 Hadoop 2.4.1包含 Snappy 的 tarball 遵循以下说明:How to enable Snappy/Snappy Codec over hadoop cluster for Google Compute Engine (旁注:此处描述的 jdk 版本是否足以用于 oryx?)。然后我使用了安装了 oryx 的保存图像(“oryx-image”):

./bdutil --bucket <some-bucket> --image oryx-image -n $number \
    --env_var_files hadoop2_env.sh --default_fs hdfs

还有我保存的 Hadoop tarball:

# File: hadoop2_env.sh
HADOOP_TARBALL_URI="gs://<some-bucket>/hadoop-2.4.1.tar.gz"

在 Google Compute Engine 上部署 Hadoop 2.4.1(使用 Snappy)集群(默认文件系统 = hdfs://)。还是没有运气。

我可以在 GCE 上成功运行测试 Hadoop 作业,在 GCE 上测试 Snappy 实现(请参阅 second link),并在 GCE 上从主节点本地测试 Oryx 作业:

# File: oryx.conf
model.local-data = true
model.local-computation = true  

唯一的问题是让 Oryx 在 Google Compute Engine 上成功运行,数据位于 hdfs:// 或 gs:// 中。

我发现了很多关于环境变量更改等的不同指令,我不知道哪些是必要的,哪些可能会导致更多问题。我想知道是否有关于在 GCE 上安装/运行 oryx 的文档。也许有人已经完成了相同的过程并且可以提供指导和/或至少确认安装成功?

在 GCE 上使用 Snappy 安装 Hadoop 2.4.1 的说明(参见 second link)非常棒。我希望找到有关所有步骤使 oryx 从头开始​​在 GCE 上工作所必需的详细信息。

谢谢!

【问题讨论】:

    标签: java hadoop google-compute-engine oryx


    【解决方案1】:

    我不知道这是否是一个直接的答案,但我可以在这里评论几点。我认为这里的很多问题都是在 GCE 上安装和运行标准 Hadoop。

    我从来没有在 GCE 上运行过它,但这不应该直接影响它是否在裸机、GCE 或 EC2 上运行。它只是使用 Hadoop。是的,它确实假设 Hadoop 和 HDFS。 (我认为硬编码 hdfs:// 可以删除,当然;我不知道这是否会使其适用于非 HDFS 文件系统。)所以如果 GCE 默认有不同的文件系统,是的,你最好的选择是使用HDFS。

    我想我认为 Snappy 是 Hadoop 安装的必需部分。如果您手动安装 Hadoop,是的,我认为您必须采取更多步骤。这就是为什么我会推荐一个(免费的、开源的)发行版来为你解决这个问题。

    它还应该为您设置HADOOP_CONF_DIR 之类的东西,嗯,我也倾向于将其视为一般 Hadoop 设置的必需部分,至少在客户端是这样。

    任何版本的 Java 6 或更高版本都可以。

    是否可以尝试发行版?它可能会少得多的痛苦。很抱歉,我在这里没有进一步的说明,但这似乎是 GCEHadoop 问题,而不是 HadoopOryx。如果应用程序可以改变方式以使其更好地适应 GCE,我可以做到。

    【讨论】:

    • 感谢您的意见!我在单个 GCE VM 上以伪分布式模式安装了 CDH5 并取得了成功。所以 GCEHadoop 诊断可能是正确的。我面临的问题是让 GCE 使用足够版本的 Hadoop 启动集群以与 Oryx 一起使用。您是否知道 oryx 用户社区中的任何人在这方面取得了成功?当然,修改 Oryx 以使用 GCE 提​​供的默认 Hadoop 2.4.1 版本也可以解决我的问题!
    • 你看到了什么问题?它适用于任何合理的 Hadoop 版本,尽管与任何 Hadoop 应用程序一样,Hadoop 1.x-ish 版本与 Hadoop 2.x-ish 版本需要不同的构建。你可能有错误的构建。我现在将它与 Hadoop 2.5.1 一起使用。
    • 当前错误以:Oryx-/user/rich-0-BuildTreesStep: Text(hdfs://total-cdh-m:8020/user/rich/00000/inbound)+dis.. . ID=1 (1/1)(1): Job failed!... com.cloudera.oryx.computation.common.JobException: Oryx-/user/rich-0-BuildTreesStep 在状态 FAILED 中失败。 一个基本问题: Google 部署了一个集群,其中包含一个主节点和工作节点,并安装了 Hadoop。如果我从主节点运行 oryx 作业,必须将 oryx 安装在 所有 节点上还是只安装在主节点上?即,我知道 oryx 运行在分布式 hadoop 系统之上,但是 oryx 安装是否需要跨集群分布?
    • Oryx 只是一个 Java 二进制文件。它不会安装在任何地方。你只需运行它。它可以在任何具有指向集群资源的 Hadoop 配置的机器上。它甚至不需要成为集群的一部分。该错误只是说“某事失败”,并不是根本原因。
    【解决方案2】:

    我找到了一个不太优雅的“解决方案”来解决这个问题。 Google Compute Engine 提供的标准问题 Hadoop-2.4.1确实实际上有 snappy 库,只是它们不在“正确”的位置。所以我将所有 snappy 库文件从它们的默认位置 (/usr/lib/) 复制到 java 库目录。显然只需要其中一行,但我还没有花时间去发现哪一行是正确的:

    sudo cp /usr/lib/lib* /usr/local/lib
    sudo cp /usr/lib/lib* /usr/java/jdk1.7.0_55/lib/amd64/jli
    sudo cp /usr/lib/lib* /usr/java/jdk1.7.0_55/lib/amd64
    sudo cp /usr/lib/lib* /usr/java/jdk1.7.0_55/lib
    

    当然,这与其说是一种解决方案,不如说是一种变通方法。我想将 snappy 库目录添加到正确的路径也可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 2015-12-09
      • 1970-01-01
      相关资源
      最近更新 更多