CDAP (CAST DATA APPLICATION PLATFORM)是一个开源的大数据应用统一集平台,帮助应用开发者和系统管理员基于Hadoop技术栈来构建、测试、部署、管理数据应用程序。CDAP由Datasets、Programs、 Services、Tools等组件组成,如图1 所示:
其中:
CDAP Datasets:是存储在HDFS和HBase中数据的逻辑表示,Datasets提供从应用中写数据的接口层,不关心底层存储引擎,允许以重用库的方式封装应用数据。
CDAP Programs:应用程序可使用不同的开源框架如MapReduce、Spark和realtime Flow来处理,CDAP附带App container来整合每个处理框架,并提供一种标准化的方式来开发、部署和管理程序。
CDAP Services:系统级服务,在开发和生产环境中支持数据和应用程序,包括应用管理,元数据管理,数据流和安全。
CDAP Tools: 包括开发工具如:Maven、SDK、调试工具、测试框架和操作界面(UI)。
CDAP支持多种运行环境,基于内存、单机和集群,CDAP子项目提供和CDAP交互的SDK和工具、applications和可重用的大数据组件(packs)
数据提取
通过流的方式提供了可扩展、可靠的实时和批量数据提取,支持push和pull,支持Flume, Kafka 和 REST,支持SQL-like 数据查询,如下图所示。
ETL管道
实现无代码配置,通过ETL模板部署和管理ETL管道
事务处理
CDAP为HBase和HDFS集成了一个可扩展的分布式事务处理引擎,称为Tephra。
实时,批量和SQL
CDAP公开进行实时、批处理和SQL访问所有数据,而无需任何数据复制。
运行可移植性
CDAP支持三种不同的运行模式:基于内存、本地和分布式。其中基于内存和单机模式主要用于测试和调试。
复杂的数据模式
CDAP支持跨越多个表,行和非幂等操作。
Tigon Flows
CDAP允许与Tigon Flows进行可扩展的实时流处理。
流程
CDAP提供通过时间或数据的可用性实现工作流的自动化批处理。
服务
CDAP应用通过定制的HTTP服务对外部客户端提供服务
Namespace
CDAP命名空间对集群中相互隔离的多用户提供应用程序和数据
安全
CDAP集群提供周边安全和可插拔的认证机制。
管理
CDAP控制台对集群和应用程序提供一站式操作和管理
CDAP应用程序
Streams:用于实时数据采集;
Programs:Flows、MapReduce、Spark用于实时或批量数据处理;
Datasets:抽象为数据存储;
Services:为外部客户端提供数据服务。
CDAP抽象
CDAP从底层基础架构解耦数据和应用程序,使具有可移植性。允许在Hadoop的生态系统的各个组件的抽象层上抽象数据和应用。访问和操作数据,通过CDAP的Datasets,而不是如HDFS和HBase这样的实际存储引擎。使用CDAP提供的开发接口去编写程序并在内部应用程序容器运行,容器为逻辑抽象并可在多个环境中运行,如内存,单机或分布式集群,无需修改代码就可在不同的环境中部署和运行。
数据抽象
应用抽象
CDAP的编程接口在不同运行环境有多种实现,通过CDAP Developer API构建应用程序,该API隐藏了编程模式和执行环境的低层细节。它丰富了通常大数据应用需要的众多有用服务的基础设施,如服务发现,日志和指标的收集和配置等。这些服务的环境特定的实现是通过CDAP注入到该应用程序的运行的app container,程序并不需要根据环境而改变。这允许在自己的环境中独立开发、测试,然后无缝地在不同的分布式集群环境中部署它们。
应用程序的部署以及其生命周期的管理、监测是通过CDAP Client API来完成。同Developer API ,环境的改变对其无影响。
CDAP编程接口
Developer Interface:开发者接口用于构建应用程序,并提供只运行在内部app container代码的各种Java API。
Client interface:客户端接口是一个RESTful API,是外部客户端可以与CDAP和应用程序进行交互的唯一途径。这些API不能从容器内访问,如应用程序生命周期管理和监控。作为一种替代HTTP,客户端库中含有不同的编程语言,包括Java、Python和Ruby。
简单
CDAP提供了一个high-level的综合框架使开发人员和操作人员轻松学习,集成和管理各个开源项目。构建在CDAP上的应用程序分离业务逻辑和基础架构API,大大降低复杂性和总体成本。
框架严密,不必担心应用程序逻辑出错;
快速
CDAP使开发人员能够快速通过丰富的用户界面和交互shell获得具有内置的数据提取,探索和转换功能。可重用的抽象层使开发人员快速构建以数据为中心的应用程序,并投入实际生产。
丰富的用户界面和交互shell可在使用Hadoop时无需编写代码;
应用程序模板和数据模式,方便编写特定API逻辑;
运行时服务和工具,确保可以可靠地测试,并迅速转移到实际生产;
创新
CDAP使得Hadoop中的所有数据可实时访问,批量处理和Ad-hoc SQL分析,而无需编写代码、管理元数据或复制任何数据。先进的功能扩展、高吞吐实时提取和事务处理、同时保持数据一致性,将颠覆应用案例。
实时、批处理和SQL整合意味着数据可用于所有的访问模式;
灵活的实时和批处理提取,可从任何来源摄取任何类型的数据;
事务和一致性,打造面向用户的大规模实时应用。
CDAP是在原有Hadoop 生态系统组件上进行一层封装并集成成单一平台,Datasets 逻辑标识Hadoop的平台数据,使开发人员不用关注数据存储在哪里。CDAP将数据和应用抽象使得开发者能够简化和加速应用开发,并能够解决实时和批量问题。提供的服务和工具,能够实现更快的应用程序创作。CDAP提出的思想较新颖但旨在提高开发速度,而不能提高现有运算框架性能,暂不支持Spark,目前CDAP社区活跃度不够,只有少数爱好者和Cast公司在研究,并鲜有公司实际投入开发,无可参考例子,建议交通大数据项目暂不考虑此方案。