版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/youbitch1/article/details/89185098
spark部署模式:yarn和独立集群管理
史上最简单的spark教程
所有代码示例地址:https://github.com/Mydreamandreality/sparkResearch
(提前声明:文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章,写作不易,转载请注明)
(文章参考:Elasticsearch权威指南,Spark快速大数据分析文档,Elasticsearch官方文档,实际项目中的应用场景)
(帮到到您请点点关注,文章持续更新中!)
Git主页 https://github.com/Mydreamandreality
- spark可以运行在各种集群管理器上,并且通过集群管理器访问集群中的机器
- spark本身是有集群管理器的,自身的独立集群管理器也是比较简单
- 如果我们有需要和别的分布式应用共享的集群,比如(spark和hadoop的MapReduce),这个时候就需要外部的资源管理器,比如yarn或者ec2,(这两个是比较常见的)
spark独立集群管理器
-
启动方式有两种:
- 手动启动一个主节点和多个工作节点
- 或者使用spark sbin目录下的启动脚本
-
启动的先决条件
- 需要我们搭建好集群(单独写一章节搭建)
- 需要设置集群ssh免密访问
配置独立集群管理器资源用量
- 在独立的集群资源管理器中,资源分配靠下面两个设置控制
- 执行器进程内存
- 可以通过spark-submit的–executor-memory参数配置
- 每个应用在每个工作节点上最多拥有一个执行器进程,默认是1GB,一般需要我们手动调整该选项
- 占用核心总数的最大值
- 该选项是应用中所有的执行器进程占用的核心总数,此项的默认值是无限,默认的话就是我们可以在集群所有可用的节点上运行我们的执行器进程
- 一般多用户的任务负载,我们都需要手动设置,通过spark-submit --total-executorcores 设置,或者设置配置文件中的spark.cores.max的值
- 执行器进程内存
如果需要验证我们的设定,访问集群管理器的网页,http://masternode:8080查看资源分配情况
独立集群管理器的高度可用性
- 如果希望我们的生产环境独立模式集群管理能够始终接受新的应用,就算集群中的所有节点都宕机了,虽然独立集群管理可以很好的支持工作节点的故障,但是主节点的故障转移还需要外部应用支持,比如
zookeeper
分布式服务系统 维护多个主节点
外部集群管理器
Hadoop Yarn
- yarn是Hadoop中的集群管理器,它的优点就是可以让多种数据处理框架运行在一个共享的资源池中,一般是安装在和HDFS同一个节点上,这样可以让spark在存储数据的节点上运行,快速访问HDFS的数据
- 在spark中使用yarn还是比较简单.只需要设置指向hadoop配置目录的环境变量,然后spark -submit yarn提交
如何选择合适的集群管理器
- 如果我们是第一次部署,那么我觉得还是使用独立集群管理器好一些,安装简单,如果我们只运行spark任务的话,独立管理器yarn是没有任何区别的
- 如果我们运行spark的同时还要运行hadoop 的MapReduce之类的,或者我们想要用资源调度等其他功能,那么可以考虑使用yarn之类的
感兴趣的同学请点个关注哦,持续更新