在Google Compute Engine上成功安装Oryx?

时间:2014-10-17 17:11:14

标签: java hadoop google-compute-engine oryx

我正在努力让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使用hdfs://或gs://中的数据在Google Compute Engine上成功运行。

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

在GCE上使用Snappy安装Hadoop 2.4.1的说明(在second link中找到)非常棒。我希望找到一些关于所有步骤的详细信息,以便让oryx从头开始在GCE上工作。

谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

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

它也应该为你设置HADOOP_CONF_DIR这样的东西,嗯,我也倾向于认为它是Hadoop设置的必需部分,至少在客户端是这样。

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

有可能试用发行版吗?它可能会少得多痛苦。对不起,我这里没有进一步的说明,但看​​起来像GCE&lt; - &gt; Hadoop问题更多的是Hadoop&lt; - &gt; Oryx。如果应用程序可以更改方式使其更好地适应GCE,我可以做到。

答案 1 :(得分: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库目录添加到正确的路径也可以。