0

我需要在 Google Compute Engine 上建立一个 Hadoop 集群。虽然使用 Web 控制台Click&Deploy或通过命令行工具看起来很简单bdutil,但我担心我的工作需要机器上存在额外的依赖项,例如XvfbFirefox和其他 - 尽管都可以通过apt-get.

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

1) 我用附加的东西创建了一个自定义图像,并使用它来部署 hadoop 集群,无论是通过还是 click&deploy。那行得通吗?

2)使用标准图像和bdutil定义配置文件(编辑现有的)来执行所有sudo apt-get install xxx. 这是一个可行的选择吗?

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

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

4

1 回答 1

2

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'
)

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

./bdutil -e my_custom_tools_env.sh deploy

如果您想将帮助脚本组织到多个文件中,您可以轻松地在单个文件中列出更多的 shell 脚本COMMAND_GROUP

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

如果您希望某些东西只在主服务器上运行,只需提供*给第二个参数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目录下的文件,您还可以使用简写符号,仅指定不带_env.sh后缀的文件基名:

./bdutil -e my_custom_tools -e spark deploy
于 2015-01-16T04:34:31.250 回答