【IT168 技术】大数据处理已经进入了新时代,数据的复杂度越来越高,人们对数据实时处理的要求也越来越高。新时代带来了很多的新改变,但是最大程度创造数据价值是大数据时代不变的宗旨。随着实时数据处理的用例越来越多,实时数据处理框架也丰富起来,例如, Apache Spark、Storm、 Heron、 Flink、Apex、 Kafka Streams 等等。每一种框架都有其特定的适用场景,但是框架多样化也带来了一些问题,增加了数据处理的复杂性,增加了运营难度。
Apache Spark是当前最流行的数据处理技术,下面我们就来回顾一下Spark的基本知识。
Spark 是什么?
Spark是大数据处理的一种通用框架,主要应用在批处理和流式数据。下面我们来看一下Spark的执行模型以及Spark架构的组成部分。
1.Spark Manager和Master Manager主要运行在以下模式中:
Standalone: 单一的cluster manager,管理方便。
Mesos: 公司常用模式,使用方便灵活。
Yarn:是目前最有前景的部署模式,默认配置为Hadoop 2.0。
2.Spark Worker: 运行在standalone模式下,是Spark的工作节点,用于执行提交的作业。
3.Spark Executor: 真正执行作业的地方,一个集群一般包含多个Executor,每个Executor接收Driver的命令Launch Task,一个Executor可以执行一到多个Task。
4.Spark Driver: 一个Spark作业运行时包括一个Driver进程,也是作业的主进程,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler,TaskScheduler。
Spark Driver会创建一个Spark Context,并与Manager、Master通信,在worker节点上获取资源。Worker在本地为每个应用创建executor。完成之后,Driver和Executor就可以直接进行通信了。工作过程中,worker会一直监视Executor的情况。Driver中的DAGScheduler会根据用户程序,生成执行计划,并调度执行,Driver等程序全部结束之后才会结束。
Spark应用程序的执行是由很多组件共同协作来完成的。所以,如果要在生产环境中部署Spark,那么就要时刻监控不同组件,了解组件性能参数,当发生错误时,要能够及时报警,合理处置。
Monitoring Spark Streaming 面临的挑战
Spark UI提供了仪表板功能,但是如果你想要投入实际生产,仅仅安装这个是远远不够的。必须要能够时刻监控Spark的内部运作和其组件的情况。
我们要分三个层面来监控Spark:
1.Spark的基础组成部分:Master、Standalone、Mesos、Yarn、Workers
2.Applications :Driver、Executors
3.Underlying hosts:Disks、CPU、网络
这三个层面是相互依存、密不可分的。如果主机或者磁盘发生故障,那么Spark的基础设施就会发生问题进而影响到应用程序。所以,在这三层之间建立相关的洞察是至关重要的。这时,你就需要有一套监控系统来监控错误发生在哪一层。如果没有这个系统,那么势必得花费几倍的时间去查找问题出在哪里。
OpsClarity成功解决了这个问题,它可以自动发现数据管道和应用中的全部服务的拓扑结构,并用红,绿,橙三种颜色来标记接口,能够更加快速的对问题做出响应。
如何配置Monitoring
Spark通过不同的端点为每个组件提供metric。例如,你想查看Spark Driver的详细信息,你只需知道它的URL,Spark就可以自动访问该URL。在Driver中有一个典型的问题,就是如何判断哪些worker在工作并识别出它的UI端口。其实,我们可以把客户端的Driver当做固定的URL端点。该软件能够自动找出应用程序中运行的Driver,然后收集每个端口的metric。
类似于Spark这样的框架,集群是可以动态调整大小的。所以,必须确保新增的组件也可以自动配置监控。另外,在一个executor发生故障时,启用另一个executor的情况下不应该出现警报。
检查Spark应用程序。在Driver发生故障时,应用程序需要连接到别的application context和worker节点上仍然可以使用。在这种情况下,metric collection、port checks 和 monitor接口都需要移植到新的Driver上 。
拓扑监测和自动配置功能能够实时监测Spark基础设施发生的变化,无需人为干预。
原文链接:
https://dzone.com/articles/monitoring-apache-spark-why-is-it-challenging