生产部署参考指南
下面以同时使用人数进行分段来进行详细阐述,假设用户偏好spark最多,hive其次,推荐服务器主机内存64G或以上。
**我们一般建议在安装EM的服务器上预留20G左右给Linux系统、EM自身进程以及其他进程进行使用,例如128G内存的服务器,除去20G内存之后,还有100G内存可以用于启动引擎进程。举个例子,如果一个Spark的Driver是4G内存,那么该服务器就可以最多启动25个spark引擎。**
同时在线人数 * (Driver 或 Hive client内存) + 同时在线人数 * (Driver或Hive client 核数)
例如,同时使用人数50人,Spark的Driver内存2G,Hive Client内存2G,每个引擎都使用两个核,那么就是 50 * 2G + 50 * 2核 = 100G 内存 + 100 CPU核数
参数配置前的约定(必看):
1.参数一般是在微服务安装目录中的conf目录的linkis.properties进行配置,采用key=value 的形式进行配置,如 wds.linkis.enginemanager.cores.max=20。唯一例外的是engine微服务的配置需要在linkis-engine.properties进行配置。
2.参数配置之后,需要重启微服务才能生效。engine的参数配置之后,在页面的引擎管理器进行kill之后,再次启动引擎就可以生效
下面提供一份参考部署方案。
2.1 同时使用人数10-50
1).服务器配置最优推荐:4台服务器,分别命名为S1,S2,S3,S4
2). 服务器配置最低配置:2台服务器
3). 参数配置
如果需要进行,需要在微服务安装目录下的conf目录中的linkis.properties和linkis-engine.properties中进行配置。参数配置一般分为Entrance和EngineManager两种参数类型。
a)Entrance微服务
参数名称 | 参数作用 | 建议参数值 |
---|---|---|
wds.linkis.rpc.receiver.asyn.queue.size.max | 指定entrance微服务接收到的RPC消息的队列大小 | 2000 |
wds.linkis.rpc.receiver.asyn.consumer.thread.max | 指定Entrance微服务RPC消费线程池大小 | 100 |
注:其中Linkis定义了保护资源的概念,保护资源的目的在于预留出一定的资源,EM不会将最大资源用尽,启动保护机器的作用。
参数名称 | 参数作用 | 建议参数值 |
---|---|---|
wds.linkis.enginemanager.memory.max | 用于指定该EM进程启动的所有引擎的总内存 | 40G(64)或100G(128) |
wds.linkis.enginemanager.cores.max | 用于指定该EM进程启动的所有引擎的总核数 | 20 |
wds.linkis.enginemanager.engine.instances.max | 用于指定该EM进程启动的所有引擎的总个数 | 20 |
wds.linkis.enginemanager.protected.memory | 用于指定该EM进程用于保护的内存 | 2G(意味着最多可以使用38(40-2)G内存) |
wds.linkis.enginemanager.protected.cores.max | 用于指定该EM进程用于保护的核数 | 2(意味着最多可以使用18(20-2)核数) |
wds.linkis.enginemanager.protected.engine.instances | 用于指定该EM进程用于保护的引擎个数 | 1(意味着最多可以启动19(20-1)个引擎) |
2.2 同时使用人数 50-100
1).服务器配置推荐:7台服务器,分别命名为S1,S2..S7
服务名 | 部署选择 | 说明 |
---|---|---|
SparkEngineManger | S1,S2 | |
SparkEntrance | S5 | |
HiveEngineManager | S3,S4 | |
HiveEntrance | S5 | |
PythonEngineManager | S4 | |
PythonEntrance | S4 | |
Eureka,Gateway,RM | S6 | Eureka和RM需要高可用部署 |
PublicService,RM,Datasource,Eureka | S7 | Eureka和RM需要高可用部署 |
2). 服务器配置最低配置:4台服务器
3). 参数配置
a)Entrance微服务
参数名称 | 参数作用 | 建议参数值 |
---|---|---|
wds.linkis.rpc.receiver.asyn.queue.size.max | 指定entrance微服务接收到的RPC消息的队列大小 | 3000 |
wds.linkis.rpc.receiver.asyn.consumer.thread.max | 指定Entrance微服务RPC消费线程池大小 | 120 |
b)EngineManager微服务
2.3 同时使用人数 100-300
1).服务器配置推荐:11台服务器,分别命名为S1,S2..S11
服务名 | 部署选择 | 说明 |
---|---|---|
SparkEngineManger | S1,S2,S3,S4 | |
SparkEntrance | S8 | |
HiveEngineManager | S5,S6,S7 | |
HiveEntrance | S8 | |
PythonEngineManager | S9 | |
PythonEntrance | S9 | |
Eureka,Gateway,RM | S10 | Eureka和RM需要高可用部署 |
PublicService,RM,Datasource,Eureka | s11 | Eureka和RM需要高可用部署 |
2). 服务器配置最低配置:6台服务器
3). 参数配置
a)Entrance微服务
参数名称 | 参数作用 | 建议参数值 |
---|---|---|
wds.linkis.rpc.receiver.asyn.queue.size.max | 指定entrance微服务接收到的RPC消息的队列大小 | 4000 |
wds.linkis.rpc.receiver.asyn.consumer.thread.max | 指定Entrance微服务RPC消费线程池大小 | 150 |
b)EngineManager微服务
参数名称 | 参数作用 | 建议参数值 |
---|---|---|
wds.linkis.enginemanager.memory.max | 用于指定该EM进程启动的所有引擎的总内存 | 40G(64)或100G(128) |
wds.linkis.enginemanager.cores.max | 用于指定该EM进程启动的所有引擎的总核数 | 20 |
wds.linkis.enginemanager.engine.instances.max | 用于指定该EM进程启动的所有引擎的总个数 | 20 |
wds.linkis.enginemanager.protected.memory | 用于指定该EM进程用于保护的内存 | 2G(意味着最多可以使用38(40-2)G内存) |
wds.linkis.enginemanager.protected.cores.max | 用于指定该EM进程用于保护的核数 | 2(意味着最多可以使用18(20-2)核数) |
wds.linkis.enginemanager.protected.engine.instances | 用于指定该EM进程用于保护的引擎个数 | 1(意味着最多可以启动19(20-1)个引擎) |
2.4 同时使用人数 300-500
服务名 | 部署选择 | 说明 |
---|---|---|
SparkEngineManger | S1,S2,S3,S4,S5,S6,S7 | |
SparkEntrance | S12 | |
HiveEngineManager | S8,S9,S10,S11 | |
HiveEntrance | S12 | |
PythonEngineManager | S13 | |
PythonEntrance | S13 | |
Eureka,Gateway,RM | S14 | Eureka和RM需要高可用部署 |
PublicService,RM,Datasource,Eureka | s15 | Eureka和RM需要高可用部署 |
2). 服务器配置最低配置:10台服务器
3). 参数配置
a)Entrance微服务
b)EngineManager微服务
参数名称 | 参数作用 | 建议参数值 |
---|---|---|
wds.linkis.enginemanager.memory.max | 用于指定该EM进程启动的所有引擎的总内存 | 40G(64)或100G(128) |
wds.linkis.enginemanager.cores.max | 用于指定该EM进程启动的所有引擎的总核数 | 20 |
wds.linkis.enginemanager.engine.instances.max | 用于指定该EM进程启动的所有引擎的总个数 | 20 |
wds.linkis.enginemanager.protected.memory | 用于指定该EM进程用于保护的内存 | 2G(意味着最多可以使用38(40-2)G内存) |
wds.linkis.enginemanager.protected.cores.max | 用于指定该EM进程用于保护的核数 | 2(意味着最多可以使用18(20-2)核数) |
wds.linkis.enginemanager.protected.engine.instances | 用于指定该EM进程用于保护的引擎个数 | 1(意味着最多可以启动19(20-1)个引擎) |
2.5 同时使用人数 500以上
1).服务器配置推荐:25台服务器,命名为S1,S2..S19,S25
服务名 | 部署选择 | 说明 |
---|---|---|
SparkEngineManger | S1,S2,S3,S4,S5,S6,S7 | |
S8,S9,S10 | ||
SparkEntrance | S17 | |
HiveEngineManager | S11,S12,S13,S14,S15, | |
S16 | ||
HiveEntrance | S17 | |
PythonEngineManager | S18,S19 | |
PythonEntrance | S20 | |
Eureka, RM | S21 | Eureka和RM需要高可用部署 |
RM, ,Eureka | S22 | Eureka和RM需要高可用部署 |
Eureka,PublicService | S23 | Eureka和RM需要高可用部署 |
Gateway, Datasource | S24 |
2). 服务器最低配置:15台服务器
3). 参数配置
a)Entrance微服务
参数名称 | 参数作用 | 建议参数值 |
---|---|---|
wds.linkis.rpc.receiver.asyn.queue.size.max | 指定entrance微服务接收到的RPC消息的队列大小 | 5000 |
wds.linkis.rpc.receiver.asyn.consumer.thread.max | 指定Entrance微服务RPC消费线程池大小 | 200 |
b)EngineManager微服务
参数名称 | 参数作用 | 建议参数值 |
---|---|---|
wds.linkis.enginemanager.memory.max | 用于指定该EM进程启动的所有引擎的总内存 | 40G(64)或100G(128) |
wds.linkis.enginemanager.cores.max | 用于指定该EM进程启动的所有引擎的总核数 | 20 |
wds.linkis.enginemanager.engine.instances.max | 用于指定该EM进程启动的所有引擎的总个数 | 20 |
wds.linkis.enginemanager.protected.memory | 用于指定该EM进程用于保护的内存 | 2G(意味着最多可以使用38(40-2)G内存) |
wds.linkis.enginemanager.protected.cores.max | 用于指定该EM进程用于保护的核数 | 2(意味着最多可以使用18(20-2)核数) |
wds.linkis.enginemanager.protected.engine.instances | 用于指定该EM进程用于保护的引擎个数 | 1(意味着最多可以启动19(20-1)个引擎) |
Linkis除了Entrance和EngineManager两类微服务外,还有其他的微服务也有自身的参数进行配置。
3.1 PublicService自定义配置
publicService微服务承载了Linkis运行的各类辅助性功能,包括文件编辑保存,结果集读取等内容。
3.2 Engine类微服务
参数名称 | 参数作用 | 建议参数值 |
---|---|---|
wds.linkis.engine.max.free.time | 用于指定一个引擎如果空闲多久会被kill | 3h(意味着一个引擎没有执行任务三小时后,就会被自动kill) |
Linkis的部署方案和使用方式息息相关,同时使用人数是最大的影响因素,为了能够让使用者能够舒适地使用,同时降低集群服务器成本,需要运维开发人员进行尝试,听取用户反馈,如果已经部署的方案不合适,需要适时恰当地进行部署方案的更改。