Hadoop软件的安装和配置
Hadoop集群有多种构建方式:
1.手工下载tar文件并复制到集群中
2.利用Yum仓库
3.利用Puppet等自动化部署工具
我们不建议采用手工方式,那只适合很小的集群(4节点以下),而且会带来很多维护和排障上的问题,因为所有的变更都需要用scp或ssh的方式手工应用到所有的节点上去。
从以下方面来看,利用Puppet等部署工具是非常好的的选择:
·安装
·配置
·维护
·扩展性
·监控
·排障
Puppet是Unix/Linux下的一个自动化管理引擎,它能基于一个集中式的配置执行增加用户、安装软件包、更新服务器配置等管理任务。我们将主要讲解如何利用Yum和Puppet来安装Hadoop。
利用Yum/Puppet搭建Hadoop集群
要利用Puppet搭建Hadoop集群,首先要符合以下前置条件:
·包含所有必需Hadoop软件的中央仓库
·用于Hadoop部署的Puppet装载单(manifest)
·用于Hadoop配置管理的Puppet装载单
·用于集群维护的框架(主要是sh或ksh脚本),以支持集群的start/stop/restart
·利用puppet构建整个服务器(包括操作系统和其它软件)
注:如果要用Yum来安装Hadoop集群,则所有服务器应该预先构建完成,包括操作系统和其它软件都应安装完毕,yum仓库也应在所有节点上设置完毕。
构建Datanode/Tasktracker
如果用Yum安装Datanode/Tasktracker,需在所有数据节点上执行以下命令:
yum install hadoop-0.20-tasktracker –y
换成Puppet的话,则是:
if ($is_datanode == true) {
make_dfs_data_dir { $hadoop_disks: }
make_mapred_local_dir { $hadoop_disks: }
fix_hadoop_parent_dir_perm { $hadoop_disks: }
}
# fix hadoop parent dir permissions
define fix_hadoop_parent_dir_perm() {
…
}
# make dfs data dir
define make_dfs_data_dir() {
…
}
# make mapred local and system dir
define make_mapred_local_dir() {
…
}
} # setup_datanode
构建Namenode(及辅助Namenode)
如果用Yum安装Namenode,需在所有数据节点上执行以下命令:
yum install hadoop-0.20-secondarynamenode –y
换成Puppet的话,则是:
if ($is_namenode == true or $is_standby_namenode == true) {
...
}
exec {"namenode-dfs-perm":
...
}
exec { "make ${nfs_namenode_dir}/dfs/name":
...
}
exec { "chgrp ${nfs_namenode_dir}/dfs/name":
...
}
if ($standby_namenode_host != "") {
...
}
exec { "own $nfs_standby_namenode_dir":
...
}
}
# /standby_namenode_hadoop
if ($standby_namenode_host != "") {
...
}
exec { "own $standby_namenode_hadoop_dir":
...
}
}
}
}
class setup_secondary_namenode {
if ($is_secondarynamenode == true) {
...
}
....
}
exec {"namenode-dfs-perm":
...
}
}
}
构建JobTracker
如果用Yum安装Jobtracker,需在所有数据节点上执行以下命令:
换成Puppet的话,则是使用与构建Namenode相同的装载单,唯一的区别在于,在Jobtracker机器上,会启动Jobtracker——即将该机器上的is_jobtracker设置为true。
原文出处:http://www.atlantbh.com/how-to-build-optimal-hadoop-cluster/