Google Compute Engine 上的 Hadoop:如何添加外部软件

Hadoop on Google Compute Engine: how to add external software

我需要在 Google Compute Engine 上设置 Hadoop 集群。虽然使用 Web 控制台 Click&Deploy or via the command line tool bdutil 看起来很简单,但我担心的是我的工作需要机器上存在的其他依赖项,例如 XvfbFirefox 和其他——尽管所有这些都是可安装的通过 apt-get.

我不清楚最好的方法。我想到的选项是:

1) 我创建了一个带有附加内容的自定义映像,并使用它通过或单击并部署来部署 hadoop 集群。那行得通吗?

2) 使用标准图像和 bdutil 以及 custom configuration files(编辑现有图像)来执行所有 sudo apt-get install xxx。这是一个可行的选择吗?

选项 1) 基本上是我过去在 AWS 上对 运行 Hadoop 所做的,老实说,维护起来很痛苦。我会对选项 2) 感到非常满意我不确定 butil 是否允许这样做。

您是否看到任何其他设置 hadoop 集群的方法?感谢您的帮助!

bdutil其实是为了支持自定义扩展而设计的;您当然可以编辑现有的扩展以轻松开始,但推荐的最佳做法是创建您自己的 "_env.sh" 扩展,必要时可以将其与其他 bdutil 扩展混合使用。通过这种方式,您可以更轻松地合并 Google 对核心 bdutil 所做的任何更新,而不必担心与您的自定义设置发生冲突。你只需要创建两个文件,例如:

包含 shell 命令的文件:

# install_my_custom_tools.sh

# Shell commands to install whatever you want
apt-get -y install Xvfb

引用您将插入 bdutil 的命令文件的文件:

# my_custom_tools_env.sh

COMMAND_GROUPS+=(
  "install_my_custom_tools_group:
     install_my_custom_tools.sh
  "
)

COMMAND_STEPS+=(
  'install_my_custom_tools_group,install_my_custom_tools_group'
)

然后,当 运行ning bdutil 时,您可以简单地将其与 -e 标志混合:

./bdutil -e my_custom_tools_env.sh deploy

如果您想将帮助程序脚本组织到多个文件中,您可以轻松地在一个 COMMAND_GROUP:

中列出更多 shell 个脚本
COMMAND_GROUPS+=(
  "install_my_custom_tools_group:
     install_my_custom_tools.sh
     my_fancy_configuration_script.sh
  "
)

如果你只想在 master 上 运行,只需将 * 提供给 COMMAND_STEPS:

中的第二个参数
COMMAND_GROUPS+=(
  "install_my_custom_tools_group:
     install_my_custom_tools.sh
  "
  "install_on_master_only:
     install_fancy_master_tools.sh
  "
)
COMMAND_STEPS+=(
  'install_my_custom_tools_group,install_my_custom_tools_group'
  'install_on_master_only,*'
)

使用这些时,您仍然可以轻松地与其他 env 文件混合,例如:

./bdutil -e my_custom_tools_env.sh -e extensions/spark/spark_env.sh deploy

对于与 bdutil 位于同一目录或 extensions 目录下的文件,您还可以使用 shorthand 表示法,仅指定没有 _env.sh 后缀的文件基名:

./bdutil -e my_custom_tools -e spark deploy