云计算技术使我们能够为计算密集型任务快速部署大量的服务器。你是否需要转换、筛选以及分析数以TB计的数据呢?你是否有成千上万的媒体文件需要被转换至不同的格式?
针对这些数据密集型的大任务,可选择在Amazon云中通过跨大型服务器集群发布大工作负载来实现。建立和管理这样一个服务器集群是一项***挑战性的任务,但是StarCluster开源工具可通过在Amazon弹性云计算(EC2)中自动化运行众多的繁琐程序,可使服务器集群的创建和管理工作得到显著地简化,且耗时更少。StarCluster是在GNU宽通用公共许可证(LGPL)下发布的。
StarCluster软件可以让用户使用简单的命令行程序创建服务器集群。服务器集群中包含了一台单个的主服务器、多台工作服务器以及弹性块存储(EBS)卷。当你输入一个创建服务器集群的命令时,StarCluster会完成如下的工作:
• 初始化虚拟机实例
• 配置一个新的安全组
• 定义一个用户友好的主机名(如,node001)
• 创建一个非管理员的用户帐号
• 为密码登陆配置SSH
• 定义跨集群的网络文件系统(NFS)文件共享
• 配置Oracle网格引擎排队系统以实现跨服务器集群的任务管理
在Amazon云中使用StarCluster
StarCluster是使用Python语言编写的,因此你可以使用easy_install命令从Python Package Index进行安装。Linux和Mac的用户可能已经安装了Python,但是Windows用户可能需要先行安装Python 2.7 和 Python 安装工具。一旦StarCluster工具安装完毕,你就需要定义一个配置文件,其中应包含一些服务器集群和Amazon云账户的相关基本信息,例如访问ID和密钥位置等。StarCluster创建了一个默认模板,你可以在此基础之上进行进一步编辑以指定特定账户的信息。
虽然StarCluster使用了一个服务器集群的默认小配置,但是你可以通过命令行方式或在配置文件中指定机器的容量、EBS卷以及服务器的数量等参数。你还可以指定托管你服务器集群的Amazon网络服务(AWS)区域。StarCluster的配置参数包括集群规模、在工作服务器节点上运行的Amazon机器镜像(AMI)、工作服务器节点实例类型、主服务器节点AMI,以及服务器集群所连接和NFS共享的EBS卷。
将为服务器集群创建一个安全组,它可让你为整个集群制订防火墙规则。因为防火墙规则属于EC2核心功能的一部分,所以可通过AWS管理控制器或配置文件进行管理。
使用Oracle网格引擎实现精简高效的管理
Oracle网格引擎(即Sun网格引擎)是一个排队系统,它可在集群中精简高效地执行任务管理。例如,如果你申请对数以千计的文件进行转换,那么你就可以使用Oracle网格引擎对所有这些文件进行任务调度,即在资源可用时按队列顺序管理文件转换处理。
使用Oracle网格引擎的另一个优势在于,它能够在服务器集群中实现跨服务器的工作负载平衡。根据你对引擎的具体配置设置,它会在服务器集群中增加或删除节点以适应实际需求的变化。Oracle网格引擎还会监控队列中的任务和错误,并维护服务器集群中与任务状态相关的其他有用信息。
存储StarCluster的输出数据
一般而言,在集群中运行的任务都会产生数据;而输出数据中的部分(即便不是所有的)可能需要在集群关闭之后还是可用的。因为这些服务器集群都是由Amazon虚拟机构成的,所以你需要制订把相关数据存储在简单存储服务(S3)或EBS卷中的计划。如果你正在使用S3对象存储,那么你的任务就可以对S3进行数据读写,就好象你的应用程序是在服务器集群以外运行一样。StarCluster的配置文件有一个可选项,可用于指定EBS卷的卷ID和载入点。在集群关闭后,这些存储卷都会与其他的Amazon EC2实例相连,所以任何写至集群内EBS卷的数据都可供这些实例使用。
StarCluster支持对工作节点使用现场实例,它可通过可选的命令行方式为现场实例指定一个特定的服务器类型。此外,一个spothisory命令还可显示在之前三十天内一个实例类型的当前价、***价和平均价。
StarCluster是专为科学计算研究而开发的,它通常是一般科学计算工具中的标准配置组件。诸如NumPy这样的Python数值计算工具包以及ATLAS这样的优化线性代数工具包都非常擅长数据分析。StarCluster的插件支持通用工具,如Hadoop和MySQL。
作者简介:
Dan Sullivan,是一名拥有超过20年IT经验的作家、系统架构师和顾问。他致力于先进分析、系统架构、数据库设计、企业安全和业务智能等应用。他曾在多个行业中工作,其中包括金融服务、制造、医药、软件开发、政府、零售、教育等。Dan曾就多个主题撰写了大量文章,如数据仓库、与安全管理相关的云计算技术和先进分析、协作以及文本挖掘。