2)要实现的接口
入口处没有强制性界面。可以根据需要实现以下接口。
EntranceParser。用于解析从前端到持久性Task的请求映射。提供了AbstractEntranceParser类,并且仅需要重写parseToTask方法。Linkis提供CommonEntranceParser作为默认实现。
EngineRequester。用于构造RequestEngine对象,该对象可用于从EngineManager请求新引擎。
调度程序。用于计划任务。默认实现为多用户情况提供并行模式,为单用户模式提供FIFO模式。建议不要在没有特殊目的的情况下进行自定义。
2.2EngineManager模块适配
1)Maven依赖
2)要实现的接口
需要在EngineManager中实现以下接口:
EngineCreator。需要在现有的AbstractEngineCreator中重写方法createProcessEngineBuilder来创建EngineBuilder。在这里,ProcessEngineBuilder提供了一个名为JavaProcessEngineBuilder的类,这是一个抽象类,用于完成类路径,JavaOpts,GC文件路径和日志路径的配置,并在测试模式下打开DEBUG端口。要实现JavaProcessEngineBuilder,您只需指定其他类路径和JavaOpts。
EngineResourceFactory。需要在现有的AbstractEngineResourceFactory中重写方法getRequestResource,以声明用户定义的资源需求。
资源。一个用于将资源注册到RM的Springbean。用户需要指定一个ModuleInfo实例进行依赖项注入。
以下接口/bean在EngineManager中是可选的:
钩。一个用于在引擎启动期间添加前后钩的Springbean。用户需要在EngineHook[]钩子类型中声明一个Springbean,以使新钩子生效。
2.3发动机模块适配
1)Maven依赖
2)要实现的接口
需要在Engine中实现以下接口:
EngineExecutorFactory。用于通过实现createExecutor方法从地图构造EngineExecutor。该映射包含环境变量和引擎参。
EngineExecutor。实际的执行程序执行从条目提交的代码。需要实现的方法:1.getActualUsedResources(引擎实际使用的资源)2.executeLine(执行CodeParser解析的代码行)3.executeCompletely(executeLine的补充方法。如果executeLine返回ExecuteIncomplete,则新代码为连同之前的代码一起提交给引擎)
以下接口/bean在引擎中是可选的:
EngineHooks:数组[EngineHook],一个Springbean,用于在引擎启动期间添加前后钩。当前,系统提供2个钩子:用于UDF/函数加载的CodeGeneratorEngineHook和用于释放备用引擎的ReleaseEngineHook。默认情况下,系统仅注册engineHooks=Array(ReleaseEngineHook)。
CodeParser。用于将代码解析为几行,并且每个执行循环仅提交一行。默认情况下,系统注册CodeParser一次返回所有代码。
EngineParser。用于将RequestTask转换为Scheduler可接受的Job。如果未指定,则系统将注册EngineParser,该引擎将RequestTask转换为CommonEngineJob。
LinkisWebSocketAPI文档
1.总结
Linkis通过WebSocket提供了一种适应方法,以简化功能应用程序的前端。
数据开发IDE工具Scriptis结合了两种方法以适应Linkis。在正常情况下,它通过websocket与Linkis通信,并在断开Websocket连接时故障转移到HTTP协议。
2.1API规范
Linkis定义了自己的前端和后端规范。
1个
)。URL规范
Rest_j表示API符合Jersey标准
Rest_s表示API符合springMVCRest标准
V1是服务的版本,它将与Linkis版本一起升级
{applicationName}是微服务的名称
2)。要求规格
3)。响应规格
方法:返回所请求的RestfulAPIURL,该URL主要由websocket协议使用。
状态:返回状态信息,-1表示登录失败,0表示成功,1表示错误,2表示验证失败,3表示没有权限。
数据:回详细数据。
消息:返回请求的提示消息。如果状态不为0,则此消息返回错误消息。同时,“数据”可能会在其“堆栈”列中返回堆栈信息。
2.2WebSocketAPI说明
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://。
WebSocketAPI的示例响应
日志
州
进展
资源管理
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.结果集输出元数据(columnName,columnType,注释)信息
无功能
1.高可用性,高可靠性,高并发支持
2.分布式,你
无服务器可扩展性