1

我正在尝试让 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 和 Hadoop 的 Google Cloud Storage 连接器)的问题 我一直使用 hdfs:// 作为默认文件系统。

查找在 Google Compute Engine 上启动的默认 Hadoop 包的问题(例如,没有默认Oryx 配置所需的 Snappy 库),我还尝试按照以下说明创建我自己的包含 Snappy 的 Hadoop 2.4.1 tarball:如何为 Google Compute Engine 启用 Snappy/Snappy Codec over hadoop 集群 (旁注:此处描述的 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 实现(参见第二个链接),并从主节点本地测试 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的说明(在第二个链接中找到)非常棒。我希望找到有关使 oryx 从头开始​​在 GCE 上工作所需的所有步骤的详细信息。

谢谢!

4

2 回答 2

2

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

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

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

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

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

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

于 2014-10-17T18:41:36.877 回答
0

我找到了一个不那么优雅的“解决方案”来解决这个问题。Google Compute Engine 提供的标准问题 Hadoop-2.4.1实际上确实有活泼的库,只是它们不在“正确”的位置。所以我将所有 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 库目录添加到正确的路径也可以。

于 2014-10-29T20:38:20.593 回答