Apache Helix vs YARN 快速开始

Apache Helix

Apache Helix简介
参考URL: https://blog.csdn.net/oopsoom/article/details/47416575
Apache Helix (1)
参考URL: https://blog.csdn.net/SpanningWings/article/details/89529790
集群管理和分布式任务 Apache helix 抽象模型
參考URL: https://blog.csdn.net/tracymkgld/article/details/51089280
Apache Helix让分布式管理更方便
参考URL: https://www.jdon.com/45814

apache helix是一个通用的集群管理框架,既能做分布式task,也能做分布式存储,还可以做服务发现,分布式锁等,大大简化了你系统的设计,分布式系统开发过程中,一些通用的部分,它全部给你抽象实现,基于zookeeper。

一个open-sourced,free的,集群管理基础设施部件

功能方面包括(1)软硬件故障检测和处理,(2)通过在节点上的资源placement,和节点capacity匹配,access pattern,partition size,自动LB。(3)集群expansion时的LB。(4)节点的生命周期,add,start,stop,enable,disable。(5)Monitor cluster health和SLA vialation。

配置方面:中心化的配置管理。节点不需要单独配置。

服务发现:提供服务发现机制来,route请求。

为什么其他技术不能解决这个痛点?
其他技术比较零散,Helix把各种open-source轮子集成在一起,构建了这个系统。

几个概念:resources,比如DB。resources被分为partitions,资源的COPY叫做replicas。State有Master,slave,leader,standby,online,offline等状态。

几个role:participant(就是node),speculator(就是旁观的,只拉View),controller(是控制node的),它们之间通过Zookeeper联系。

状态机:
只读partition呢,partition的每个replica都是等价的,online/offline就好了。
读写的partition呢,partition的每个replica,要分为master,slave,offline。状态机就是要到master先得从offline到Slave状态,反之亦然。要想offline得先到slave。

Ideal state /current state /external view
全局理想状态 /节点当前状态 /所有节点当前状态的集合

Controller做的工作就是定义idealstate,然后计算和external View之间的差距,计算transition plan,然后推送任务给nodes。

Partition

分区,分区概念一般在消息系统上比较常见,比如kafka,每个topic有多个partition;对于分布式task来讲,如果一个task单机单进程搞不定,那么可以映射成子任务,这种子任务,你可以理解成storm作业的spout,bolt task,那么这种东西,统一抽象成partition,代表最小的资源颗粒

State

状态,这种例子也很多,比如zookeeper,每个节点分为leader和follow;kafka的partition也区分master,slave;hdfs在做block recovery的时候,也要持有副本的datanode选举出master和slave,即解决一致性的问题,副本之间通常要选出来一个master负责接收请求,再同步给其它slave。

State Machine and Transitions

Helix 支持灵活的状态机配置,一种资源配一个状态机,因此在同一个集群中,其实可以有多种资源,多个状态机,你想在一个集群中管理一个数据库,同时再管理一个索引存储系统,也是可以的:

Current State

CurrentState 用于表示一个节点,即分布式系统的一个node的当前状态,比如storm里的supervisor的心跳信息,里面包括机器名,槽位名,运行的拓扑,taskid等信息,下面的例子是说node1这个节点持有的资源 ,以及资源的状态。

集群的每个节点都有自己的currentstate,节点,在helix里称为participants。

External View

helix把集群客户端称为spectators,相当于storm里的nimbusclient,比如storm用户想看到我的作业分配情况,其实获取assignment就行了,ExternalView其实跟ideastate结构类似,只不过数据结构更加简单,专门暴露给客户端的数据结构,叫做ExternalView

Rebalancer

rebalance也比较容易理解,集群资源分布不均,或者task分布不均,可能导致热点问题;存储里面比较容易理解,分布式计算的rebalance 有时候可能指作业task的重新调度,helix在节点从起,stop,软件硬件错误,集群新增节点,配置变更,或者idea state发生变化的时候,helix controller模块会触发rebalance

rebalance算法简单说做三个事情:

比较当前状态currentstate和ideastate,
走状态机流程,计算应该怎样transition
通告节点执行transition
rebalance的目标是达到’IdealState = CurrentState = ExternalView’的状态

Dynamic IdealState

动态idealstate其实就是支持动态调整资源的状态,这很重要,helix可以感知集群变化,然后动态调整idealstate,同时触发rebalance

helix支持三种方式实现动态调整idealstate

FULL_AUTO:全自动,根据约束条件,helix自动调整
SEMI_AUTO: 半自动,这种情况下需要用户提供一个期望的idealstate信息,helix会超这个状态rebalance
CUSTOMIZED: 完全用户定制,这种方式,相当于jstorm里的指定supervisor调度

Apache Helix vs YARN区别

为什么LinkedIn的人开发了自己的集群管理而不使用YARN?

虽然helix和yarn都提供了管理分布式应用程序的功能,但两者之间有着重要的区别。

yarn主要提供跨机器集群的资源管理功能,同时要求应用程序编写自定义逻辑,以便从资源管理器协商资源。另一方面,helix提供了一种声明性地管理分布式应用程序状态的方法,从而使应用程序不必执行自定义实现。此时,helix并不像yarn那样提供资源管理功能。因此,这两个系统是相当互补的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值