/ 中存储网

Hadoop集群部署模型纵览

2014-09-24 12:23:41 来源:中存储网

vSphere Big Data Extensions(简称BDE)支持多种部署方式来构建Hadoop集群。按:
存储/计算绑定模型:将存储节点(Data Node)和计算节点(Task Tracker)部署在相同的虚拟机中。这是最直接简单的部署模型,可以用于概念验证和承载小规模集群的数据处理任务。
单一计算模型:只部署计算节点(Job Tracker和Task Tracker)的集群类型。
存储/计算分离模型:将存储节点(Data Node)和计算节点(Task Tracker)部署在不同的虚拟机中,并且根据特定的业务需求,通过相应的分布算法决定集群在vSphereESX物理主机上的拓扑结构。
自定制集群:用户可以根据具体的业务需求,自定制集群的部署结构、资源模型和配置参数。
本文我们将着重介绍前2个部署模型,即存储/计算绑定模型和单一计算模型。
存储和计算节点绑定模型(Data-Compute Combined Deployment)
通常情况下,我们为了保证Hadoop集群数据本地化(Data Locality)的需要,会将存储(DataNode)和计算(TaskTracker)服务部署在相同节点上。Big Data Extensions也提供这样的部署模式。
你可以使用BDE的命令行工具,通过运行cluster create –name cluster_name命令创建一个基本的默认Hadoop集群。
这类集群将包含一个主节点(master),运行Apache Hadoop 1.2.1(BDE 1.0内置的默认Hadoop发行版)的NameNode和JobTracker;三个工作节点(worker),运行DataNode和TaskTracker;一个客户端节点(Clientnode),运行Hadoop客户端,Pig和Hive等。
这里将DataNode和TaskTracker搭建在同一个虚拟机节点内部,这就是存储和计算节点绑定模型。
单一计算节点模型(Compute-OnlyDeployment)
如果你的生产或开发环境里已经有了HDFS,并且有数以TB的分析型数据存在于其中,商业分析团队根据新的业务需求,开发新功能去挖掘新的模式,这时您可以搭建一个单一计算节点集群(Compute-OnlyCluster)。
单一计算节点集群指的是只部署MapReduce服务,包括Jobtracker和Tasktracker,并且链接到某个已经存在的HDFS上。这样做的好处有很多,首先可以避免搭建完整集群后的大规模数据拷贝或迁移,减少开发环境的等待时间,可以立即部署立即使用,非常适合临时性的开发测试环境;其次,也可以在不同的计算集群之间做到性能隔离,安全性隔离和故障隔离;另外,在兼容性满足的情况下,您也可以使用第三方的商业版HDFS如Isilon等等。
对于单一计算节点集群,您也可以使用动态伸缩功能(Auto-Elasiticity)来动态地调配您的资源。
下面列举了这种集群部署的实例定义文件,您可以使用它创建Compute-OnlyCluster。externalHDFS字段定义了要使用的已存在的HDFS服务。请将hadoop_jobtracker角色赋给master节点组,将hadoop_tasktracker角色赋给worker节点组。对于externalHDFS所指定的HDFS集群,默认情况下请设置port_num为8020。对于Hadoop2.0集群,例如CDH4或是PivotalHD等,默认情况下请设置port_num为9000。在集群定义文件中,ExternalHDFS字段和hadoop_namenode,hadoop_datanode角色不能同时存在,否则可能会导致集群创建失败或创建的集群无法正常运行。
{
“externalHDFS”: “hdfs://<hostname-of-namenode>:<port_num>”,
“nodeGroups”: [
{
"name": "master",
"roles": [
"hadoop_jobtracker"
],
“instanceNum”: 1,
“cpuNum”: 2,
“memCapacityMB”: 7500,
},
{
“name”: “worker”,
“roles”: [
"hadoop_tasktracker",
],
“instanceNum”: 4,
“cpuNum”: 2,
“memCapacityMB”: 7500,
“storage”: {
“type”: “LOCAL”,
“sizeGB”: 20
},
},
{
“name”: “client”,
“roles”: [
"hadoop_client",
"hive",
"pig"
],
“instanceNum”: 1,
“cpuNum”: 1,
“storage”: {
“type”: “LOCAL”,
“sizeGB”: 50
},
}
]
}