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 相关文章推荐
nginx处理http请求实现过程解析
Mar 31 Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
浅谈Nginx 中的两种限流方式
Mar 31 Servers
apache基于端口创建虚拟主机的示例
Apr 24 Servers
nginx负载功能+nfs服务器功能解析
Feb 28 Servers
nginx日志格式分析和修改
Apr 28 Servers
tomcat正常启动但网页却无法访问的几种解决方法
May 06 Servers
Linux中文件的基本属性介绍
Jun 01 Servers
V Rising 服务器搭建图文教程
Jun 16 Servers
本地搭建minio文件服务器(使用bat脚本启动)的方法
Jul 15 Servers
阿里云服务器(windows)手动部署FTP站点详细教程
Aug 05 Servers
Win10系统搭建ftp文件服务器详细教程
Aug 05 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截取后台登陆密码的代码
2012/05/05 PHP
php调用MySQL存储过程的方法集合(推荐)
2013/07/03 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
javascript 一些用法小结
2009/09/11 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
jQuery中find()方法用法实例
2015/01/07 Javascript
angularjs点击图片放大实现上传图片预览
2017/02/24 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
Python中的条件判断语句基础学习教程
2016/02/07 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
python中for in的用法详解
2020/04/17 Python
python time()的实例用法
2020/11/03 Python
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
曼城官方网上商店:Manchester City
2019/09/10 全球购物
年度考核自我鉴定
2013/11/09 职场文书
出纳岗位职责模板
2013/11/27 职场文书
粗加工管理制度
2014/02/04 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
Android Rxjava3 使用场景详解
2022/04/07 Java/Android