My favorites | Sign in
Project Home Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
HordeForCluster  

Horde集群编程支持

集群编程特点

  • 向集群提交作业是通过一个作业管理系统进行提交,用户不能直接访问内部主机,因此用户也不能书写部署文件
  • 集群底层有分布式文件系统支持或中心文件服务器,用户可以像使用本地文件系统一样使用集群文件系统

目标

  • 向用户提供易用的部署burrow的接口
  • 向用户提供编写可容错程序的支持
  • 支持不同的作业管理系统

重要角色:Supervisor

  • 创建burrow
  • 监视burrow的退出
  • 执行burrow的退出handler

两步提交

  • 用户向作业管理系统提交任务,创建supervisor
  • supervisor向作业管理系统提交任务,创建burrow

接口

  • create_burrow (burrow_id, burrow_exit_handler)
  • 创建burrow,并且给予一个burrow退出的handler
  • kill_burrow (burrow_id)
  • 杀死一个特定的burrow
  • start_peon (peon_id, burrow_id, peon_exit_handler)
  • 在一个特定的burrow中启动特定的peon,并且给予此peon的退出handler

怎样利用提供的容错支持

  • 利用burrow的退出handler,在handler中做你想做的任何事情

在集群上编写Horde程序的步骤

  1. 声明一个Cluster实例,用作业管理系统的封装类去实例化它
  2. 创建所有的peon,并且标示他们之间的连接图
  3. 判断自己是否是supervisor
    1. 如果是supervisor,
      1. 创建所有的burrow,调用Cluster::create_burrow
      2. 进入调度
        • 调用Cluster::start_peon,在特定的burrow中启动特定的peon
  4. 调用cluster.run()

Powered by Google Project Hosting