基于 IBM BigInsights 的 Hadoop 多租户实践

  IBM BigInsights 采用 Capacity Scheduler 作为多租户的资源管理,可以通过基于浏览器的 Ambari 控制台进行层次化队列,以确保资源的一个组织的子队列之间共享其它队列被允许的使用资源。

  IBM BigInsights 还提供和 IBM Platform Symphony 的集成,支持 Symphony Multi-dimensional Scheduling 多维度的资源调度和分配。多维调度策略通过实现更细粒度的资源分配与不同的资源需求的应用提高了资源利用率。它可以容纳多维资源分配,其中每个分配可以要求不同量的物理资源类型,包括但不限于 CPU,内核,存储器和磁盘的数目。多维调度的其他优点包括:

  在一个资源计划中的多个资源组

  命名资源的所有权(节点的所有权,包括部分所有权)

  按优先级以及比例份额的资源共享

  回收资源和资源借用宽限期

  一个实际的例子

  下面我们通过一个动手练习来描述如何在 IBM BigInsights 上采用 Capacity Scheduler 实现多租户的。

  管理的界面

  首先登陆到 IBM BigInsights 的管理控制台 Ambari,管理员的缺省用户名和密码是 admin / admin。

  图 4. 登陆到管理控制台 Ambari

物联网
物联网

  成功登陆以后,会进入到集群仪表盘中,可以看到整个 Hadoop 集群的状况。选择 YARN 组件,可以在 Summary 标签页中看到 IBM BigInsights 缺省只有一个队列。

  图 5. YARN 的配置管理

物联网

  展开 Quick Links 点击 ResourceManager UI 后进入到 ResourceManager 的管理界面。选择 Scheduler 视图可以查看到 Capacity Scheduler 的队列情况:只有一个缺省队列。

  图 6. ResourceManager 的管理界面

物联网

  IBM BigInsights 提供图形化的 Capacity Scheduler 配置界面,通过 图 4. YARN 的配置管理 的右上角进入 YARN Queue Manager 的管理界面。这个管理界面在 IBM BigInsights 4.1 版本是缺省就有的,用户也可以按照 IBM BigInsights 信息中心 在 Ambari 管理界面上自行创建 Capacity-Scheduler 视图。

  图 7. Capacity-Scheduler 的视图

物联网
物联网

  IBM BigInsights 通过该视图配置的 Capacity Scheduler 会自动修改 Hadoop 集群的 capacity-scheduler.xml 配置文件,让系统管理员关注队列本身,而不需要修改底层的配置文件,从而简化整个集群的多租户管理。清单 1列出了缺省的队列配置。

  清单 1. Capacity Scheduler 缺省的配置

  yarn.scheduler.capacity.default.minimum-user-limit-percent=100

  yarn.scheduler.capacity.maximum-am-resource-percent=0.2

  yarn.scheduler.capacity.maximum-applications=10000

  yarn.scheduler.capacity.node-locality-delay=40

  yarn.scheduler.capacity.root.accessible-node-labels=*

  yarn.scheduler.capacity.root.acl_administer_queue=*

  yarn.scheduler.capacity.root.capacity=100

  yarn.scheduler.capacity.root.default.acl_administer_jobs=*

  yarn.scheduler.capacity.root.default.acl_submit_applications=*

  yarn.scheduler.capacity.root.default.capacity=100

  yarn.scheduler.capacity.root.default.maximum-capacity=100

  yarn.scheduler.capacity.root.default.state=RUNNING

  yarn.scheduler.capacity.root.default.user-limit-factor=1

  yarn.scheduler.capacity.root.queues=default

  队列的设置

  例如一个公司有多个部门:工程,支持和市场。工程部有两个子团队:开发和质量。支持部有两个子团队:培训和服务。市场部有两个子团队:销售和广告。下图显示了这个例子的队列层次: