Apache Linkis 中间件架构及快速安装步骤


Posted in Servers onMarch 16, 2022

1、Apache Linkis 介绍

Linkis 在上层应用和底层引擎之间构建了一层计算中间件。通过使用Linkis 提供的REST/WebSocket/JDBC 等标准接口,上层应用可以方便地连接访问Spark, Presto, Flink 等底层引擎,同时实现跨引擎上下文共享、统一的计算任务和引擎治理与编排能力。

MySQL/Spark/Hive/Presto/Flink 等底层引擎,同时实现变量、脚本、函数和资源文件等用户资源的跨上层应用互通。作为计算中间件,Linkis 提供了强大的连通、复用、编排、扩展和治理管控能力。通过计算中间件将应用层和引擎层解耦,简化了复杂的网络调用关系,降低了整体复杂度,同时节约了整体开发和维护成本。

2.1 计算中间件概念

没有Linkis之前

上层应用以紧耦合方式直连底层引擎,使得数据平台变成复杂的网状结构

Apache Linkis 中间件架构及快速安装步骤

有Linkis之后

通过计算中间件将应用层和引擎层解耦,以标准化可复用方式简化复杂的网状调用关系,降低数据平台复杂度

Apache Linkis 中间件架构及快速安装步骤

2.2 整体架构

Linkis 在上层应用和底层引擎之间构建了一层计算中间件。通过使用Linkis 提供的REST/WebSocket/JDBC 等标准接口,上层应用可以方便地连接访问Spark, Presto, Flink 等底层引擎。

Apache Linkis 中间件架构及快速安装步骤

2.3 核心特点

  • 丰富的底层计算存储引擎支持。目前支持的计算存储引擎:Spark、Hive、Python、Presto、ElasticSearch、MLSQL、TiSpark、JDBC和Shell等。正在支持中的计算存储引擎:Flink(>=1.0.2版本已支持)、Impala等。支持的脚本语言:SparkSQL, HiveQL, Python, Shell, Pyspark, R, Scala 和JDBC 等。
  • 强大的计算治理能力。基于Orchestrator、Label Manager和定制的Spring Cloud Gateway等服务,Linkis能够提供基于多级标签的跨集群/跨IDC 细粒度路由、负载均衡、多租户、流量控制、资源控制和编排策略(如双活、主备等)支持能力。
  • 全栈计算存储引擎架构支持。能够接收、执行和管理针对各种计算存储引擎的任务和请求,包括离线批量任务、交互式查询任务、实时流式任务和存储型任务;
  • 资源管理能力。ResourceManager 不仅具备 Linkis0.X 对 Yarn 和 Linkis EngineManager 的资源管理能力,还将提供基于标签的多级资源分配和回收能力,让 ResourceManager 具备跨集群、跨计算资源类型的强大资源管理能力。
  • 统一上下文服务。为每个计算任务生成context id,跨用户、系统、计算引擎的关联管理用户和系统资源文件(JAR、ZIP、Properties等),结果集,参数变量,函数等,一处设置,处处自动引用;
  • 统一物料。系统和用户级物料管理,可分享和流转,跨用户、系统共享物料。

2.4 支持的引擎类型

引擎

引擎版本

Linkis 0.X 版本要求

Linkis 1.X 版本要求

说明

Flink

1.12.2

>=dev-0.12.0, PR #703 尚未合并

>=1.0.2

Flink EngineConn。支持FlinkSQL 代码,也支持以Flink Jar 形式启动一个新的Yarn 应用程序。

Impala

>=3.2.0, CDH >=6.3.0"

>=dev-0.12.0, PR #703 尚未合并

ongoing

Impala EngineConn. 支持Impala SQL 代码.

Presto

>= 0.180

>=0.11.0

ongoing

Presto EngineConn. 支持Presto SQL 代码.

ElasticSearch

>=6.0

>=0.11.0

ongoing

ElasticSearch EngineConn. 支持SQL 和DSL 代码.

Shell

Bash >=2.0

>=0.9.3

>=1.0.0_rc1

Shell EngineConn. 支持Bash shell 代码.

MLSQL

>=1.1.0

>=0.9.1

ongoing

MLSQL EngineConn. 支持MLSQL 代码.

JDBC

MySQL >=5.0, Hive >=1.2.1

>=0.9.0

>=1.0.0_rc1

JDBC EngineConn. 已支持MySQL 和HiveQL,可快速扩展支持其他有JDBC Driver 包的引擎, 如Oracle.

Spark

Apache 2.0.0~2.4.7, CDH >=5.4.0

>=0.5.0

>=1.0.0_rc1

Spark EngineConn. 支持SQL, Scala, Pyspark 和R 代码.

Hive

Apache >=1.0.0, CDH >=5.4.0

>=0.5.0

>=1.0.0_rc1

Hive EngineConn. 支持HiveQL 代码.

Hadoop

Apache >=2.6.0, CDH >=5.4.0

>=0.5.0

ongoing

Hadoop EngineConn. 支持Hadoop MR/YARN application.

Python

>=2.6

>=0.5.0

>=1.0.0_rc1

Python EngineConn. 支持python 代码.

TiSpark

1.1

>=0.5.0

ongoing

TiSpark EngineConn. 支持用SparkSQL 查询TiDB.

2、Apache Linkis 快速部署

2.1 注意事项

因为mysql-connector-java驱动是GPL2.0协议,不满足Apache开源协议关于license的政策,因此从1.0.3版本开始,提供的Apache版本官方部署包,默认是没有mysql-connector-java-x.x.x.jar的依赖包,安装部署时需要添加依赖到对应的lib包中。

Linkis1.0.3 默认已适配的引擎列表如下:

引擎类型

适配情况

官方安装包是否包含

Python

1.0已适配

包含

Shell

1.0已适配

包含

Hive

1.0已适配

包含

Spark

1.0已适配

包含

2.2 确定环境

2.2.1 依赖

     

引擎类型

依赖环境

特殊说明

Python

Python环境

日志和结果集如果配置hdfs://则依赖HDFS环境

JDBC

可以无依赖

日志和结果集路径如果配置hdfs://则依赖HDFS环境

Shell

可以无依赖

日志和结果集路径如果配置hdfs://则依赖HDFS环境

Hive

依赖Hadoop和Hive环境

 

Spark

依赖Hadoop/Hive/Spark

 

要求:安装Linkis需要至少3G内存。

默认每个微服务JVM堆内存为512M,可以通过修改​​SERVER_HEAP_SIZE​​来统一调整每个微服务的堆内存,如果您的服务器资源较少,我们建议修改该参数为128M。如下:

vim ${LINKIS_HOME}/deploy-config/linkis-env.sh

# java application default jvm memory.
export SERVER_HEAP_SIZE="128M"

2.2.2 环境变量

官网示例:

#JDK
export JAVA_HOME=/nemo/jdk1.8.0_141

##如果不使用Hive、Spark等引擎且不依赖Hadoop,则不需要修改以下环境变量
#HADOOP  
export HADOOP_HOME=/appcom/Install/hadoop
export HADOOP_CONF_DIR=/appcom/config/hadoop-config
#Hive
export HIVE_HOME=/appcom/Install/hive
export HIVE_CONF_DIR=/appcom/config/hive-config
#Spark
export SPARK_HOME=/appcom/Install/spark
export SPARK_CONF_DIR=/appcom/config/spark-config/
export PYSPARK_ALLOW_INSECURE_GATEWAY=1  # Pyspark必须加的参数

示例:

Apache Linkis 中间件架构及快速安装步骤

2.3 安装包下载

​​https://linkis.apache.org/zh-CN/download/main​​

Apache Linkis 中间件架构及快速安装步骤

2.4 不依赖HDFS的基础配置修改

vi deploy-config/linkis-env.sh

#SSH_PORT=22        #指定SSH端口,如果单机版本安装可以不配置
deployUser=hadoop      #指定部署用户
LINKIS_INSTALL_HOME=/appcom/Install/Linkis    # 指定安装目录
WORKSPACE_USER_ROOT_PATH=file:///tmp/hadoop    # 指定用户根目录,一般用于存储用户的脚本文件和日志文件等,是用户的工作空间。
RESULT_SET_ROOT_PATH=file:///tmp/linkis   # 结果集文件路径,用于存储Job的结果集文件
ENGINECONN_ROOT_PATH=/appcom/tmp #存放ECP的安装路径,需要部署用户有写权限的本地目录
ENTRANCE_CONFIG_LOG_PATH=file:///tmp/linkis/  #ENTRANCE的日志路径
## LDAP配置,默认Linkis只支持部署用户登录,如果需要支持多用户登录可以使用LDAP,需要配置以下参数:
#LDAP_URL=ldap://localhost:1389/ 
#LDAP_BASEDN=dc=webank,dc=com

Apache Linkis 中间件架构及快速安装步骤

2.5 修改数据库配置

vi deploy-config/db.sh

Apache Linkis 中间件架构及快速安装步骤

2.6 安装

执行安装脚本:​​sh bin/install.sh​

install.sh脚本会询问您是否需要初始化数据库并导入元数据。

因为担心用户重复执行install.sh脚本,把数据库中的用户数据清空,所以在install.sh执行时,会询问用户是否需要初始化数据库并导入元数据。

Apache Linkis 中间件架构及快速安装步骤

2.7 检查是否安装成功

Apache Linkis 中间件架构及快速安装步骤

2.8 快速启动Linkis

启动服务

sh sbin/linkis-start-all.sh

查看是否启动成功

可以在Eureka界面查看服务启动成功情况,查看方法:

使用​​http://${EUREKA_INSTALL_IP}:${EUREKA_PORT}​​, 在浏览器中打开,查看服务是否注册成功。

如果您没有在config.sh指定EUREKA_INSTALL_IP和EUREKA_INSTALL_IP,则HTTP地址为:http://127.0.0.1:20303

默认会启动8个Linkis微服务,其中图下linkis-cg-engineconn服务为运行任务才会启动

Apache Linkis 中间件架构及快速安装步骤

Apache Linkis 中间件架构及快速安装步骤

2.9 问题集

1、telnet

<-----start to check used cmd---->
check command fail
 need 'telnet' (your linux command not found)
Failed to  + check env

解决:sudo yum -y install telnet

2、connection exception

mkdir: Call From hadoop01/192.168.88.111 to hadoop01:9820 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
Failed to  + create hdfs:///tmp/linkis directory

解决:启动HDFS

到此这篇关于Apache Linkis 中间件架构及快速安装的文章就介绍到这了,更多相关Apache Linkis 中间件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
Mar 31 Servers
教你快速开启Apache SkyWalking的自监控
Apr 25 Servers
nginx安装以及配置的详细过程记录
Sep 15 Servers
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
Sep 25 Servers
关于Nginx中虚拟主机的一些冷门知识小结
Mar 03 Servers
阿里云ECS云服务器快照的概念以及如何使用
Apr 21 Servers
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
Apr 29 Servers
Nginx配置之禁止指定IP访问
May 02 Servers
Linux磁盘管理方法介绍
Jun 01 Servers
openEuler 搭建java开发环境的详细过程
Jun 10 Servers
Ubuntu安装Mysql+启用远程连接的完整过程
Jun 21 Servers
nginx之queue的具体使用
Jun 28 Servers
关于Nginx中虚拟主机的一些冷门知识小结
Mar 03 #Servers
nginx负载功能+nfs服务器功能解析
Apache Pulsar集群搭建部署详细过程
Feb 12 #Servers
详解nginx安装过程并代理下载服务器文件
Feb 12 #Servers
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
Feb 12 #Servers
使用 Apache Dubbo 实现远程通信(微服务架构)
You might like
php实现把数组按指定的个数分隔
2014/02/17 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
Prototype中dom对象方法汇总
2008/09/17 Javascript
jquery json 实例代码
2010/12/02 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
node.js入门教程
2014/06/01 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
微信小程序云开发详细教程
2019/05/16 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
python实现ping的方法
2015/07/06 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
倡议书格式
2014/04/14 职场文书
好学生评语大全
2014/05/05 职场文书
理想演讲稿范文
2014/05/21 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
综治目标管理责任书
2015/05/11 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
创业计划书之农家乐
2019/10/09 职场文书
MySQL笔记 —SQL运算符
2022/01/18 MySQL
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫