架构

介绍

Falcon是一个面向Hadoop的数据集和处理过程的管理平台。Falcon本质上是通过数据处理引擎将数据集和处理过程的配置文件转化为重复的业务处理流程。Falcon并不做任何繁重的工作,所有的过程和处理流管理都是由工作流调度器来完成的。Falcon所做的就是维持实体之间的依赖关系。Falcon给开发人员提供便捷。

架构的整体框架

调度器

Falcon选择Oozie作为默认的调度器。当然Falcon也可以和其他的调度器进行整合。面向Hadoop的许多的数据处理组件都需要具备数据有效性和实时性两方面的要求。Oozie正好满足这些属性,因此将选择Oozie作为Falcon的调度器。

即使Oozie可以工作的很好,但在某些场景中,Oozie的调度也被证明存在限制。在当前的版本中,Falcon依赖Oozie去调度和工作流的执行。 Falcon relies on Oozie for both scheduling and for workflow execution, due to which the scheduling is limited to time based/cron based scheduling with additional gating conditions on data availability. 这本身对数据集的周期性具有了强加的限制.为了提供更好的调度能力,Falcon将推出自己的调度器。

控制流

即使实际工作中,调度器(Oozie)负责工作流,Falcon通过订阅每一个工作流可能产生的信息依旧保持着执行路径。当Falcon在Oozie中产生一个工作流,When Falcon generates a workflow in Oozie, it does so, after instrumenting the workflow with additional steps which includes messaging via JMS.Falcon能够订阅这些控制信息和能够完成例如撤销,处理后序数据等的展示。

Feed Schedule flow

Process Schedule flow

部署模式

Falcon有两种基本组件:Falcon Prism and Falcon Server,正如这个名字所说Falcon Prism切割到达Falcon server的请求。

Stand Alone Mode(独立模式)

当Hadoop工作流和处理相关的数据仅仅涉及一个Hadoop集群就可以使用独立模式。在这种模式中,Falcon Server通过Oozie去调度工作流在hadoop集群。所有的 process/feed都会有提交,调度,挂起,杀死等过程信息被发送到这个服务器。对于这种Falcon在配置过程中应该使用独立模式。

Distributed Mode(分布式)
分布式模式是为了多个hadoop集群的案例,以及需要多个工作流调度器去调度他们。在这种模式中,falcon有两个组件Prism and Server(s),每个Prism and servers都会有他们自己的计划配置(运行时间和启动任务所具备的配置)以及他们各自的配置位置。在这个模式中Prism作为两个falconServer的连接点,所有的命令对于Prism都适用,但是只有read and instance api对Server是有用的。接下来的请求能被发送到每一个Hadoop集群:

Prism:submit, schedule, submitAndSchedule, Suspend, Resume, Kill, instance management

Server: schedule, suspend, resume, instance management

正如上面观察到的,Submit和Kill只能对Prism进行,这样可以保持所有的配置信息在不同的集群中保持同步。

请求可以通过Prism发出直接在CLI指定-colo参数来指定特定的falcon集群,or append the same in web request, if using API.

在Falcon Prism中,当一个cluster被提交,它被默认的发到每一个Falcon server。当Feed被提交或者调度后,只会被发送到feed/process配置文件中指定的FalconServer。Server属性在feed/process的xml文件中通过 CLUSTER标签来指定。

Communication between prism and falcon server (for submit/update entity function) is secured over https:// using a client-certificate based auth.Prism server需要提供有效的客户端验证才能使Falcon server来接收请求。

如果TLS可以使用,启动配置文件在falcon prism和Falcon Server需要配置* keystore.file * keystore.password

Falcon——Prism图解

安全模式

安全模式是为了防止Falcon用户对工作流引擎中的调度实体进行操作,这在下面两种情况中起作用:

  • Hadoop集群更新
  • Falcon集群的实体被更新

在安全模式下,用户只能进行限制的操作,其中包括:

  1. 用户可以对经过授权的实体对象进行读操作
  2. 管理员用户可以对集群中的实体进行更新操作
  3. 如果用户想去suspend特定的工作,独立的实例可以被Suspend/Kill
  4. 可调度的实体可以被suspend,这是因为用户可能想去挂起实体操作在处理工作流与版本不兼容的问题中。
  5. 其中被禁止的动作包括:
    (1)所有实体的 submit, submitAndSchedule操作
    (2)实体的操作: update, schedule, touch, delete, submit, submitAndSchedule, resume
    (3)实例化的操作不被允许: rerun, resume

Getting into/out-of Safemode.
用户可以使用如下命令进入或者退出安全模式:

falcon-start -setsafemode

## CLI
<falcon-server>/bin/falcon admin  [-setsafemode <true/false>]## RestAPI
GET http://falcon-server:15000/api/admin/setSafeMode/true
OR
GET http://falcon-server:15000/api/admin/setSafeMode/false

NOTE

用户可以发现是否Falcon Server处与安全模式by calling the Admin Version API,一旦Server被设置成安全模式,他的状态会一直处于安全模式,如果用户想退出安全模式必须进行明确的设置。

配置存储

配置存储文件系统Falcon可以将定义的实体存储在其中,这个文件系统可以是本地文件系统或者HDFS,建议将配置文件存储在和Falcon部署的不同的机器上。这可以避免在Falcon部署的系统出现硬盘损坏或者永久性失效等问题,配置存储也对先前的配置版本或者被删除的配置提供归档操作,这些文件讲永远不能被Falcon server访问和他们仅仅提供追踪实体配置的历史变化。

原子操作

当Falcon执行实体操作时,当需要做许多操作时,如果一个操作失败了,可能造成不统一的状态。为避免这一情况的发生,所有的个人操作都被记录在事务日志里面,这个日志用来回滚整体的用户操作。某些情况下,撤销操作是不成功的,在这些情况下,Falcon尝试尽力去保持系统的一致性。

存储

Falcon introduces a new abstraction to encapsulate the storage for a given feed which can either be expressed as a path on the file system, 文件系统存储或者在Hcatalog的表,such as Hive, Catalog Storage.

 <xs:choice minOccurs="1" maxOccurs="1"><xs:element type="locations" name="locations"/><xs:element type="catalog-table" name="table"/></xs:choice>

任何一个Feed都应该包含其中的一个

File System Storage(文件系统存储)
这表示为文件系统上的一个存储路径,这个路径指定了Feed在这个集群上的哪个地方具有有效性,一个路径的标签包含:data, meta, stats 以及他们相应的路径,一个Feed至少包含data路径标签,这个标签指定了feed周期性产生数据的HDFS的路径,例如: ex: type=”data” path=”/projects/TrafficHourly/YEAR−{YEAR}-{MONTH}-${DAY}/traffic” The granularity of date pattern in the path should be at least that of a frequency of a feed.

 <location type="data" path="/projects/falcon/clicks" /><location type="stats" path="/projects/falcon/clicksStats" /><location type="meta" path="/projects/falcon/clicksMetaData" /

Catalog Storage (Table)表

一个表的标签指定了在catalog中注册的表的URI:

catalog:$database-name:$table-name#partition-key=partition-value);partition-key=partition-value);*

这是一个URI的模板,它并没有对 Hive or HCatalog任何的参考,它对于所有实现catalog registry都能够适用,The catalog implementation specified in the startup config provides implementation for the catalog URI. 高级分区必须是一个日期的模式,在日期模式的设置必须和feed的频率设置一致。

例如:

<table uri="catalog:default:clicks#ds=${YEAR}-${MONTH}-${DAY}-${HOUR};region=${region}" />
<table uri="catalog:src_demo_db:customer_raw#ds=${YEAR}-${MONTH}-${DAY}-${HOUR}" />
<table uri="catalog:tgt_demo_db:customer_bcp#ds=${YEAR}-${MONTH}-${DAY}-${HOUR}" />

Falcon配置

Falcon配置详见Falcon配置专题

实体管理操作

所有的操作都可以使用Falcon’s RESTful API来完成

Submit

实体Submit操作允许用户将新的cluster/feed/process提交到falcon,被Submit的实体并没有被调度,只是为falcon服务提供简单的配置信息,除了对验证添加的实体本身进行验证之外,也会对配置文件中的相应的配置进行验证和验证这个实体所依赖的实体。

List

列出falcon 配置仓库下所有的特定的类型的实体,包括被调度和被提交的实体配置。

Dependency

列出所指定的实体的所依赖的实体。这个会显示出这个实体被当做依赖的部分和被依赖的部分两部分进行显示。

Schedule

对于已经提交的Feed/Process可以被调度,对于被调度的实体,Falcon将把这些重复性的行为作为Oozie的协调器和利用Oozie 调度器去执行他们(它也可以是除了Oozie以外的调度器),Falcon对feed/process工作流产生另外的ID,这个额外的IP可以被用来对实例的管理。

这个调度将用户的指定的工作流和库复制到一个临时的路径,而调度器引用工作流和库在这个临时路径。

Suspend

这个动作只对已经提交的实体有用,这个触发器可已将早起进行调度的实体进行执行,在挂起装态下的Feed/Process没有被执行。

Resume

将一个挂起的feed/process实体重新返回的执行状态。

Status

返回当前的实体的状态

Definition

得到已经被提交的实体的定义. Please note that user documentations in the entity will not be retained.

Delete

delate操作将删除所有在调度期的工作流,并且将提交的实体从falcon中删除,只有当这个实体没有被依赖的时候,这个实体才会被删除。

Update

Update操作允许对早已经提交或者调度的实体进行更新操作,更新Feed可能导致所有串联的Process进行更新,Process update triggers update in falcon if entity is scheduled.

Cluster update will require user to update dependent Feed and Process entities that are already scheduled. 集群更新需要在falcon安全模式下进行. We provide a CLI command for the user to update the scheduled dependent entities after cluster update and exiting safemode.

下列的动作将被视为更新:

  • 更新旧的被调度的实体设置结束时间为“now”
  • 调度每一个开始时间为“now”的process/feed

实例管理操作

参考源网页(后序优化)

Falcon(二)——架构详解相关推荐

  1. DL之VGGNet:VGGNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之VGGNet:VGGNet算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 VGG系列神经网络算法简介 1.网络架构 2.实验结果 VGG系列神经网络的架构详解 VGG系列集 ...

  2. DL之LeNet-5:LeNet-5算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之LeNet-5:LeNet-5算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 LeNet-5算法的简介(论文介绍) LeNet-5算法的架构详解 1.LeNet-5 结构分 ...

  3. fusionsphere的核心组件_FusionSphere架构详解

    FusionSphere 架构详解 关键字: 云计算 XEN Hypervisor FusionSphere 摘要: 本技术案例主要针对 Huawei FusionSphere 云计算软件架构进行深入 ...

  4. 大型分布式架构详解:架构模式+敏捷性+可扩展+案例等

    大型分布式架构详解:架构模式+敏捷性+可扩展+案例等 本篇是大型分布式网站架构的技术总结篇. 主要对大型分布式架构中涉及的架构模式.高性能.高可用.可伸缩.敏捷性.可扩展等技术点进行简要总结,对大型分 ...

  5. 高并发高流量网站架构详解

    (推荐)高并发高流量网站架构详解 Web2.0的兴起,掀起了互联网新一轮的网络创业大潮.以用户为导 向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人 ...

  6. 《大数据架构详解:从数据获取到深度学习》第八次重印

    第八次重印: 个人去年十月份出版的<大数据架构详解:从数据获取到深度学习>卖的还不错,京东,当当,亚马逊一直在热销榜上,一直排在前列,榜首常客! 既上个月重印之后,本月又重印了一次,累计八 ...

  7. 喜大普奔,《大数据架构详解》一书 登陆 当当,京东热卖榜

    2016-11-27 朱洁 大数据和云计算技术 最近加班太多,"江郎才尽了",这周不想写博客了,休息下. 讲点高兴的事情,我的新书<大数据架构详解>登陆当当,京东热卖榜 ...

  8. 《大数据架构详解》一书第16次重印

    又收到编辑寄的样书,看了下<大数据架构详解:从数据获取到深度学习>一书从16年10月出版以来,第16次重印. 京东评价超过2万条: 作者手上有少量全新样书,有想要签名样书的同学可以加作者微 ...

  9. 【5GC】开源5G核心网(Open5GS)架构详解

    博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G ...

  10. 【CTO讲堂】SaaS云端语音通信架构详解

    为了帮助IT从业者职业之路拥有更多收获,在诸多C粉的殷切期待下,由 CTO俱乐部打造的CTO线上讲堂自登场以来获得大家好评.本期邀请容联七陌CTO张杨带来"SaaS云端语音通信架构详解&qu ...

最新文章

  1. POJ - 2584 T-Shirt Gumbo 二分多重匹配
  2. 【数据结构】图解霍夫曼编码,看了就能懂
  3. java中常量有初始化值吗,java的变量和常量
  4. oracle presentation = ro,设置sqlplus访问远程oracle数据库的方法
  5. pytorch得到中间层输出
  6. [JSOI2008]火星人 hash+splay
  7. 面试稳了!网易资深工程师详解运维面经!
  8. html5各种页面切换效果和模态对话框
  9. JAVA Json数组转换List实体对象
  10. android 年月日倒计时,手机日期倒计时
  11. 坚果pro2刷回官方_坚果Pro2刷机教程刷TWRP面具详细步骤_软件开发_IT综合服务
  12. matlab c1083,致命錯誤C1083:不能打開包含文件:'mexutils。沒有這樣的文件或目錄。...
  13. js模仿f11全屏_Js浏览器全屏代码(模仿按F11)
  14. The bean ‘XXX‘ could not be injected because it is a JDK dynamic proxy
  15. 相对分子质量的计算怎样计算
  16. vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据
  17. python decimal_实例详解Python模块decimal
  18. C语言常见问题——++i与i++详解
  19. scala 字符串转Int, Long 类型
  20. Linux tar -cvf与tar cvf有什么区别

热门文章

  1. [书目20100320]首先,打破一切常规
  2. BAT | 批处理下载ftp文件
  3. 通讯:博物馆里过大年——英国科学博物馆举办科学“春晚”
  4. Linux下的mount命令详解
  5. 匠心锁致·奋斗有我|中科易安无线智能门锁2021奋斗者计划来袭
  6. 基于STM32水温炉温温度控制系统电路设计-分享
  7. php形参问号?的作用
  8. 基于netty实现的socks5代理协议
  9. 分享一款完全免费、功能强大、可商用、可扩展的PHP文章管理系统
  10. C语言,后门程序,C++映像劫持后门实例分析