Linkis是一款专业的微服务架构设计软件。数据搭建必备微服务架构设计工具Linkis。它可以通过建立任何Linkis桥来帮助用户构建数据处理服务,配置设备通信服务,管理软件中的统计存储服务,统一上下文,管理软件中的物料库以及与多个服务平台执行数据交互。您的数据已传输到数据库,您可以在多个设备之间读取数据,提供应用程序管理服务,资源管理服务,可以在软件中构建工作平台,可以查看自己的工作项,可以配置多个引擎,以及您可以查看资源使用排名适合需要构建数据服务平台的用户; Linkis允许用户配置工作流程,在软件中查看设备工作进度以及远程读取设备工作数据。如果您需要构建微服务平台,请下载此软件!
软件说明:
Linkis是一种计算中间件,它集成了多个计算存储引擎,例如Spark,TiSpark,Hive,Python和HBase,提供了统一的REST / WebSocket / JDBC接口,并提交并执行SQL,Pyspark,HiveQL,Scala和其他脚本。
Linkis基于微服务架构,提供了企业级功能,例如财务级多租户隔离,资源管理和控制以及权限隔离。它支持统一变量,UDF,功能,用户资源文件管理,并具有高并发,高性能和高可用性的大数据操作。 /要求完整的生命周期管理功能。
软件功能:
统一作业执行服务:一种分布式REST / WebSocket服务,用于处理来自用户的脚本执行请求。
到目前为止可用的计算引擎:Spark,Python,TiSpark,Hive和Shell。
到目前为止可用的语言:SparkSQL,Spark Scala,PySpark,R,Python,HQL和Shell。
资源管理服务:从系统和用户的数量和负载的角度实时控制/限制资源使用。借助动态资源统计信息,您可以轻松地监视和管理系统和用户资源使用情况。
到目前为止可用的资源类型:纱线队列资源,服务器(CPU和内存),每个用户的并发实例数。
应用程序管理服务:管理全局用户应用程序,包括脱机批处理应用程序,交互式查询应用程序和实时流应用程序。它还具有强大的可重用性,特别是对于脱机和交互式应用程序,具有完整的生命周期管理功能,可以自动为用户释放空闲的应用程序。
统一存储服务:通用IO体系结构可以与各种存储系统快速集成,并提供统一的可调用条目。它还与大多数常用数据格式高度集成,并且易于使用。
统一上下文服务:统一用户和系统资源文件(JAR,ZIP,属性)。通过统一管理用户,系统和引擎的参数/变量,可以实现对随机位置的修改将自动反映在所有其他位置。
物料库:系统和用户级物料管理,能够共享,传输物料和自动生命周期管理。
元数据服务:实时显示数据集表的结构和分区。
使用说明:
如使Linkis适应新的计算或存储引擎
1引言
后端开发人员除了直接使用Linkis开发的引擎外,还可以根据需要开发自己的应用程序。分为入口模块,引擎管理器模块和引擎模块,您可以轻松拆分应用程序以适应Linkis。有关这三个模块的目的和体系结构,请参阅Linkis Archetect Design Docs UJES体系结构设计文档。
2.声明
Linkis使用Spring框架作为基本技术。因此,我们必须遵守Spring的开发规范。
Linkis具有灵活的基础架构,并为几乎所有顶级接口提供了通用的实现。如果用户需要定制的类,则可以直接注入它们并替换当前的实现。
2.1进入模块适配
1)Maven依赖
2)要实现的接口
入口处没有强制性界面。可以根据需要实现以下接口。
EntranceParser。用于解析从前端到持久性Task的请求映射。提供了AbstractEntranceParser类,并且仅需要重写parseToTask方法。 Linkis提供CommonEntranceParser作为默认实现。
EngineRequester。用于构造RequestEngine对象,该对象可用于从EngineManager请求新引擎。
调度程序。用于计划任务。默认实现为多用户情况提供并行模式,为单用户模式提供FIFO模式。建议不要在没有特殊目的的情况下进行自定义。
2.2 EngineManager模块适配
1)Maven依赖
2)要实现的接口
需要在EngineManager中实现以下接口:
EngineCreator。需要在现有的AbstractEngineCreator中重写方法createProcessEngineBuilder来创建EngineBuilder。在这里,ProcessEngineBuilder提供了一个名为JavaProcessEngineBuilder的类,这是一个抽象类,用于完成类路径,JavaOpts,GC文件路径和日志路径的配置,并在测试模式下打开DEBUG端口。要实现JavaProcessEngineBuilder,您只需指定其他类路径和JavaOpts。
EngineResourceFactory。需要在现有的AbstractEngineResourceFactory中重写方法getRequestResource,以声明用户定义的资源需求。
资源。一个用于将资源注册到RM的Spring bean。用户需要指定一个ModuleInfo实例进行依赖项注入。
以下接口/ bean在EngineManager中是可选的:
钩。一个用于在引擎启动期间添加前后钩的Spring bean。用户需要在EngineHook []钩子类型中声明一个Spring bean,以使新钩子生效。
2.3发动机模块适配
1)Maven依赖
2)要实现的接口
需要在Engine中实现以下接口:
EngineExecutorFactory。用于通过实现createExecutor方法从地图构造EngineExecutor。该映射包含环境变量和引擎参。
EngineExecutor。实际的执行程序执行从条目提交的代码。需要实现的方法:1. getActualUsedResources(引擎实际使用的资源)2. executeLine(执行CodeParser解析的代码行)3. executeCompletely(executeLine的补充方法。如果executeLine返回ExecuteIncomplete,则新代码为连同之前的代码一起提交给引擎)
以下接口/ bean在引擎中是可选的:
EngineHooks:数组[EngineHook],一个Spring bean,用于在引擎启动期间添加前后钩。当前,系统提供2个钩子:用于UDF /函数加载的CodeGeneratorEngineHook和用于释放备用引擎的ReleaseEngineHook。默认情况下,系统仅注册engineHooks = Array(ReleaseEngineHook)。
CodeParser。用于将代码解析为几行,并且每个执行循环仅提交一行。默认情况下,系统注册CodeParser一次返回所有代码。
EngineParser。用于将RequestTask转换为Scheduler可接受的Job。如果未指定,则系统将注册EngineParser,该引擎将RequestTask转换为CommonEngineJob。
Linkis WebSocket API文档
1.总结
Linkis通过WebSocket提供了一种适应方法,以简化功能应用程序的前端。
数据开发IDE工具Scriptis结合了两种方法以适应Linkis。在正常情况下,它通过websocket与Linkis通信,并在断开Websocket连接时故障转移到HTTP协议。
2.1 API规范
Linkis定义了自己的前端和后端规范。
1个
)。 URL规范
Rest_j表示API符合Jersey标准
Rest_s表示API符合springMVC Rest标准
V1是服务的版本,它将与Linkis版本一起升级
{applicationName}是微服务的名称
2)。要求规格
3)。响应规格
方法:返回所请求的Restful API URL,该URL主要由websocket协议使用。
状态:返回状态信息,-1表示登录失败,0表示成功,1表示错误,2表示验证失败,3表示没有权限。
数据:回详细数据。
消息:返回请求的提示消息。如果状态不为0,则此消息返回错误消息。同时,“数据”可能会在其“堆栈”列中返回堆栈信息。
2.2 WebSocket API说明
1)。建立联系
用于与Linkis建立WebSocket连接。
API / API / rest_j /入口/连接
HTTP方法GET
状态码101
2)。请求执行
用于将用户作业提交给Linkis以执行。
API / api / rest_j /入口/执行
HTTP方法POST
样本Json请求主体
请求主题数据的参数说明
表1参数说明
样本Json响应主体
execID是提交给Linkis后为每个用户任务生成的String类型的唯一ID。它仅在执行期间使用,例如PID。 execID的格式为(requestApplicationName的长度)(executeAppName的长度)(实例的长度)requestApplicationName {executeApplicationName} entryInstanceinfomationip +端口{requestApplicationName} $ {umUser} $ {index}
TaskID是Long类型的唯一ID,由数据库为每个任务增量生成。
3)。任务状态,日志和进度的推送机制
提交后,状态,日志和进度信息将由服务器推送。能够通过websocket协议检索它们。 该API与下面提到的HTTP协议一致。 唯一的区别是websocket的模式是ws://,但是对于HTTP协议,它是http://。
WebSocket API的示例响应
日志
州
进展
软件功能:
资源管理
1.丰富的类型,包括服务器CPU和内存,纱线,磁盘10和流量等。
2.系统(项目)级资源管理
3.用户级资源管理
4.实时显示资源使用情况
多引擎支持
Spark,Python,TiSpark,hive,Shel等
实时进度/日志
1.支持任务进度的实时显示
2.详细,准确的实时日志推送
自订变数
一处定义的全局自定义变量,随处可见
语境
1,资源文件(JAR / ZIP / Properties等)统一
2.集中管理用户引擎参数和变量
3,提供统一的上下文SDK
应用管理
1.为用户智能选择合适的引擎
2.提供引擎重用能力
3.提供引擎切换功能以实现快速执行
智能优化
1.历史重用能力(存在相同的历史任务,历史结果将被定期重用)
2.智能重试(由内部系统错误触发的重试,针对计算引擎错误的智能重试)
错误代码
执行失败时提供用户友好的错误代码和描述
多租户
系统级/用户级多租户隔离
结果集
1.多结果集支持
2.结果集输出元数据(co lumnName,co lumnType,注释)信息
无功能
1.高可用性,高可靠性,高并发支持
2.分布式,你
无服务器可扩展性