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