Google compute engine 谷歌计算引擎上的Hadoop:如何添加外部软件

Google compute engine 谷歌计算引擎上的Hadoop:如何添加外部软件,google-compute-engine,hortonworks-data-platform,google-hadoop,Google Compute Engine,Hortonworks Data Platform,Google Hadoop,我需要在谷歌计算引擎上建立一个Hadoop集群。虽然使用web控制台或通过命令行工具看起来很简单,但我担心的是,我的作业需要机器上存在额外的依赖项,例如Xvfb、Firefox,以及其他—尽管所有这些都可以通过apt-get安装 我不清楚该怎么走。我想到的选择是: 1) 我用附加的东西创建了一个自定义映像,并使用它来部署hadoop集群,可以通过或单击&deploy。这样行吗 2) 使用标准图像和带有(编辑现有图像)的bdutil执行所有sudo apt get install xxx。这是一个

我需要在谷歌计算引擎上建立一个Hadoop集群。虽然使用web控制台或通过命令行工具看起来很简单,但我担心的是,我的作业需要机器上存在额外的依赖项,例如
Xvfb
Firefox
,以及其他—尽管所有这些都可以通过
apt-get
安装

我不清楚该怎么走。我想到的选择是:

1) 我用附加的东西创建了一个自定义映像,并使用它来部署hadoop集群,可以通过或单击&deploy。这样行吗

2) 使用标准图像和带有(编辑现有图像)的
bdutil
执行所有
sudo apt get install xxx
。这是一个可行的选择吗

选项1)基本上是我过去在AWS上运行Hadoop所必须做的,老实说,维护它是一件痛苦的事情。我对选项2)位非常满意,我不确定
但我可以这么做


你有没有其他的方法来建立hadoop集群?谢谢你的帮助

bdutil
实际上是为了支持自定义扩展而设计的;您当然可以编辑一个现有的扩展,以便于入门,但推荐的最佳实践是创建您自己的
“\u env.sh”
扩展,必要时可以与其他bdutil扩展混合使用。通过这种方式,您可以更轻松地合并Google对core
bdutil
所做的任何更新,而无需担心与您的定制冲突。您只需要创建两个文件,例如:

./bdutil -e my_custom_tools_env.sh -e extensions/spark/spark_env.sh deploy
使用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_GROUPS+=(
  "install_my_custom_tools_group:
     install_my_custom_tools.sh
     my_fancy_configuration_script.sh
  "
)
如果您只想在主机上运行某些程序,只需为
命令\u步骤中的第二个参数提供
*

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,*'
)
使用这些文件时,您仍然可以轻松地与其他环境文件混合,例如:

./bdutil -e my_custom_tools_env.sh -e extensions/spark/spark_env.sh deploy
对于与bdutil位于同一目录中或
扩展名
目录下的文件,也可以使用简写符号,仅指定不带
\u env.sh
后缀的文件基名:

./bdutil -e my_custom_tools -e spark deploy

信息量非常大,这是编写文档的方式。也是通过bdutil设置hadoop参数的,例如,
mapreduce.job.map
等等?对,配置值的定制有点棘手。如果查看bdutil dir/conf/hadoop*内部,您将看到类似于
mapred template.xml
的文件。进行自定义的最简单方法就是内联编辑这些文件;您在
mapred template.xml
中输入的任何键都将混合到集群上的
mapred site.xml
、核心模板.xml
中,等等。您只需要更加小心地合并核心bdutil中的任何更改以进行版本升级。对于更高级的用法,bdutil dir/libexec/configure_hadoop.sh是一个很好的例子;查找
bdconfig
cmds作为示例。我明白了,这确实很棘手。我在AWS上运行hadoop,可以通过Cloudera Manager设置所有参数。我很惊讶谷歌计算引擎没有类似的hadoop网络界面。正如我所问的,有没有办法让cloudera manager或类似人员参加GCE?有一些工作和协作正在进行中;请参见此处,了解尚未正式发布的最新bdutil工作:-在完全适合使用之前,仍有一些预期的错误修复,一旦正式发布,将有更全面的平台插件使用说明,但与此同时,您可以使用platforms/hdp/ambari_env.shIn进行试验。在ambari bdutil扩展的情况下,存在对使用CentOS的依赖性,并且ambari_env.sh确实会覆盖默认的GCE_映像以使用CentOS-6。如果您需要自定义图像,您将希望从GCE centos-6图像开始,否则保留默认的GCE_图像设置是获得经过良好测试的图像的最佳选择。