Kylo功能介绍



Kylo提供服务用于生成Hive表、基于Hadoop中的数据生成schema、执行基于Spark的转换、元数据跟踪、监控feed和SLA策略、发布数据到目标系统。
Kylo前端提供的功能模块包括Operations、Feed Manager、Admin。

Operations

Operations侧重于运维管理。
Dashboard
Dashboard通过仪表盘和列表使用户快速了解系统的状态:



Services

Services则用于检测Kylo集成的服务的状态状态:



SLA Assessments

SLA Assessments提供SLA任务调度结果查看功能:



SLA Schedule

* SLA Schedule提供SLA调度配置能力:
*
*
JobsJobs提供执行作业的查看功能:

*


*
Alerts

*
Alerts提供告警查看功能:

*


*
Charts

*
Charts提供系统指标的图形化展示能力:

*


Feed Manager

Feed Manager提供数据集以及数据流管理能力,是Kylo的核心功能。

Feeds

Feeds:用于定义数据集以及数据流,其中数据流是在Feeds使用的模板中完成定义的。Feeds支持调度配置,从而周期性的进行数据处理。



 

 Feed的血缘:



Feed的版本:



Categories

Categories表示Feed的目录,用于在逻辑上进行Feeds的组织与管理。对于进入Hive的Feeds,其Category相当于Database名称。

                    

 

SLA

SLA即Service Level Agreement,在该页面可以配置检查计划,对于不满足的生成告警等信息。



Visual Query

提供对以接入Kylo的数据源的可视化查询能力,即一站式查询各种数据源中的数据,支持SQL查询,并支持对查询结果进行导出。



支持可视化查询:

如下为实现一个Join查询



Catalog

提供Kylo以及数据源中元数据以及数据的查询能力,数据预览能力,支持SQL查询。



 

Admin

Admin提供系统管理能力。

Data Sources

Kylo支持将数据库作为数据源,并从这些数据库中抽取数据。



Domain Types

用于定义域类型。



Properties

                        

Templates

模板定义了Feeds在Kylo中的处理模式。模板为Feeds的处理提供了可视化向导以及其中的可配参数等内容,并决定了最终的数据处理流程。

这里的模板是指Apache NiFi模板,Kylo仅提供了已定义好的模板的上传与注册功能。





User

提供用户管理能力,例如用户的创建、修改等功能。



Groups

Group是一组权限的集合,用户可以加入某个组,从而获得相应的权限。



SLA Mail

用于配置SLA邮件模板。



 

全局检索

Kylo可以集成ES或Solr作为其检索引擎,实现Feeds的全局检索。Kylo允许为保存在数据湖中的数据创建索引,从而实现全局检索能力。



 

工作流程

考虑如下场景:Kylo从数据库中定期抽取数据,进行数据处理并将结果保存在Hive中。



 

Kylo优劣分析

Kylo优势

* 支持Feed的版本管理。
* 提供了良好的权限控制能力。
* 集生产(Feed Manage)、监控运维(Operations)、管理(Admin)于一体。
* 提供了良好的安全控制能力。
* 支持Cron风格调度控制。
* 支持数据源种类丰富。
* 支持数据压缩和多种存储格式。
* Kylo以及NiFi都遵循Apache License。
Kylo劣势

* 血缘分析仅支持到Feed级别。
* 外部依赖较多,特别是对NiFi的依赖重,用于实现数据流的模板需要在NiFi中进行。
 

功能总结

Kylo支持的数据源包括哪些

Kylo支持的数据源非常广泛,其中关系型数据库的可以在Kylo中预先定义以及管理,对于关系型数据库数据源,Kylo支持数据的可视化查询、预览等能力。

Kylo对其它类型的数据源的支持依赖于NiFi,可以在NiFi模板template中实现个性化的数据源支持。

Kylo对关系型数据库数据源的支持

接入一种RDBMS数据源


在Kylo中新增一个Mysql类型的数据源(在官方文档中仅给出MySQL/MariaDB/Oracle/PG类型的示例,但由于是通过JDBC方式实现的,因此其它类型应该也是支持的):



数据可视化查询

     在画布中添加表并支持构建join查询,支持画布向SQL的映射,也允许用户直接编辑SQL执行查询:

* 在查询结果中用户可以查看数据的一些统计数据,如方差等
* 查询结果可以以图形化方式展示
* 查询结果支持导出
  

Catalog功能

对于接入Hive中的RDBMS以及Hive(应该也支持HBase),Kylo可以作为一个jdbc客户端,直接对这些数据源中的数据进行查询。

如下所示为在Kylo web中查询已接入的MySQL数据库的中kylo.AUDIT_LOG

表,包括字段查看、数据预览以及SQL查询三种功能:

* 字段查看:
*
* 数据预览
*
* Query
*
 

非RDBMS数据源


对于非RDBMS类型的数据源的支持,该能力是由NiFi提供的,而NiFi对数据源的支持非常广泛,例如FTP、SFTP、Kafka、S3、HDFS等,如下图所示:



                         
 在NiFi的template中定义支持哪些数据源,在Kylo中使用该template创建Feeds时,即可从指定的数据源获取数据,如下给出而来Kylo(NiFi)预置的三种模板支持的数据源:

* Data Ingest模板支持接入的数据源如下所示:


* Streaming Ingest模板支持接入的数据源如下所示:


 

* Advanced Ingest模板支持接入的数据源如下所示


应用示例

本节主要描述如何使用NiFi以及Kylo实现一个数据流,具体配置细节不做体现。

数据场景

利用sqoop将源数据库中导出数据并保存在HDFS上,让后加载到Hive中,并将该表与已有的其它表合并,最终再讲合并数据通过sqoop导出到目标数据库中。

 

实现流程

1 在NiFi中创建数据流模板dataflow001,如下所示:



2 在kylo中导入已创建好的模板,如下所示:



在导入模板时,需要指定模板的相关配置参数,示例如下所示:



3 使用已导入的模板dataflow001创建一个Feed,如下所示:



Feed中不仅包括数据接入同时也包括了数据处理的部分以及调度的执行,即一个Feed是一个完整的数据流。

 

价值点

可视化交互查询

Kylo提供的可视化交互式查询能力

* 支持通过图形化的编排自动生成SQL,也运行用户直接编写SQL
* 特征值的统计分析:
用户可以直接查看查询结果中各个字段(特征)的数学统计值,如下图所示:





* 支持特征运算生成新的特征值
在查询结果页面,kylo提供了很多内置函数,通过计算可生成新的特征(字段)





 

 

* 支持查询结果保存
用户可以将查询结果保存为csv、json、xml、orc、parquet格式的文件,也可以将查询结果直接保存到目标数据库中。





价值分析

* 数据可视化:

数据的交互式查询是一个非常有亮点和实际应用价值的功能点,有所见即所得的效果,但目前在DEP中,实际是无法直接查询数据的,由于采用的是操作定义与操作执行分离的模式,因而所有对数据的操作也都是对用户不可见的,用户无法“看见”数据发生的变化,在后续版本中可以考虑加入类似的功能。

* 数据下发:

Kylo支持将查询结果直接导出为文件,这个功能也是非常有用的,考虑机器学习或面向数据分析任务的场景,往往需要先提供一小部分的样例数据给下游用于建模以及模型训练,最后才是完整的数据下发。在DEP数据服务设计中可以考虑下是否支持该场景

* 数学统计
在该功能上,kylo提供的是基于查询结果范围内的特征的数学统计,为DEP上实现该功能提供了一个思路,比如何时在多大范围的数据集上计算哪些统计指标。

全局检索

Kylo提供基于ES或Solr的全局检索能力


基于ElasticSearch或Solr搜索引擎的全局检索能力,kylo可以将所有Feeds的数据同步到搜索引擎中,从而提供全局查询能力,并可以从查询结果列表中获取数据详情,如下图所示:



价值分析


与Kylo类似,在元数据仓库工具wherehows中也提供了全局检索功能,因此在DEP后续的规划设计中,也应考虑下该功能是否有相关的应用场景,以决定是否提供类似的功能。

 

数据预览

Kylo支持对Hive以及上游数据源中数据的预览能力

Kylo除可以直接查询Hive中的数据,也支持查询已在Kylo中添加的数据源(关系型数据库)中的数据。



价值分析


可以看到类似的产品(如wherehows、dataworks、teable)都提供了数据预览的能力,DEP在V1.1中会提供HQL脚本执行能力,可以在此基础上更进一步提供数据预览能力。

数据流的迁移能力

NiFi基于xml的数据流导出导入

NiFi中通过Template来定义数据流,并且支持导出为xml格式,从而实现数据流的一次定义多次使用的能力,如下为导出的xml文件的部分内容。



价值分析


在DEP当前的设计中将所有设计数据保存在数据库中,在以后的设计中,若考虑设计态与运行态的分离,则可以参考Kylo/NiFi的实现方式(Kylo可以导入NiFi中的模板)。