yarn-cluster适用于生产环境,yarn-client适用于交互和调试,也就是希望快速看到application的输出。
Application Master:在yarn中,每个Application实例都有一个Application Master进程,它是Application启动的第一个容器,负责和Resourcemanager打交道,并请求资源。获取资源之后告诉NodeManager为其启动Container。
深层次分析:yarn-cluster和yarn-client模式的区别其实就是Application Master进程的区别,yarn-cluster模式下,driver运行在AM中,它负责向yarn申请资源,并监督作业的运行状况。当用户提交完了作业之后就可以关掉client,作业会继续在yarn上运行。yarn-cluster不适合运行交互类型的作业。而yarn-client模式下,Application Master仅仅向YARN请求executor,client会和请求的container通信来调度他们工作,也就是说Client不能离开。看下下面的两幅图应该会明白(上图是yarn-cluster模式,下图是yarn-client模式)
总结来说:yarn-client 与yarn-cluster的区别就在于driver所在的位置,yarn-client driver运行在client端 yarn-cluster driver 运行在Application Manager内 client模式适合开发 cluster模式 适合正式环境