生产部署参考指南

    1. 下面以同时使用人数进行分段来进行详细阐述,假设用户偏好spark最多,hive其次,推荐服务器主机内存64G或以上。
    2. **我们一般建议在安装EM的服务器上预留20G左右给Linux系统、EM自身进程以及其他进程进行使用,例如128G内存的服务器,除去20G内存之后,还有100G内存可以用于启动引擎进程。举个例子,如果一个SparkDriver4G内存,那么该服务器就可以最多启动25spark引擎。**

    同时在线人数 * (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

    服务名部署选择说明
    SparkEngineMangerS1,S2
    SparkEntranceS5
    HiveEngineManagerS3,S4
    HiveEntranceS5
    PythonEngineManagerS4
    PythonEntranceS4
    Eureka,Gateway,RMS6Eureka和RM需要高可用部署
    PublicService,RM,Datasource,EurekaS7Eureka和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

    服务名部署选择说明
    SparkEngineMangerS1,S2,S3,S4
    SparkEntranceS8
    HiveEngineManagerS5,S6,S7
    HiveEntranceS8
    PythonEngineManagerS9
    PythonEntranceS9
    Eureka,Gateway,RMS10Eureka和RM需要高可用部署
    PublicService,RM,Datasource,Eurekas11Eureka和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

    服务名部署选择说明
    SparkEngineMangerS1,S2,S3,S4,S5,S6,S7
    SparkEntranceS12
    HiveEngineManagerS8,S9,S10,S11
    HiveEntranceS12
    PythonEngineManagerS13
    PythonEntranceS13
    Eureka,Gateway,RMS14Eureka和RM需要高可用部署
    PublicService,RM,Datasource,Eurekas15Eureka和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

    服务名部署选择说明
    SparkEngineMangerS1,S2,S3,S4,S5,S6,S7
    S8,S9,S10
    SparkEntranceS17
    HiveEngineManagerS11,S12,S13,S14,S15,
    S16
    HiveEntranceS17
    PythonEngineManagerS18,S19
    PythonEntranceS20
    Eureka, RMS21Eureka和RM需要高可用部署
    RM, ,EurekaS22Eureka和RM需要高可用部署
    Eureka,PublicServiceS23Eureka和RM需要高可用部署
    Gateway, DatasourceS24

    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用于指定一个引擎如果空闲多久会被kill3h(意味着一个引擎没有执行任务三小时后,就会被自动kill)

    Linkis的部署方案和使用方式息息相关,同时使用人数是最大的影响因素,为了能够让使用者能够舒适地使用,同时降低集群服务器成本,需要运维开发人员进行尝试,听取用户反馈,如果已经部署的方案不合适,需要适时恰当地进行部署方案的更改。