为什么我们需要Spark集群?

Spark 高性能的关键在于其使用了并行计算。在传统的关系型数据库中,匹配大数据的扩展工作仅限于一台机器,计算性能有限。

而Spark可以进行水平扩展,也就是可以近乎无限地添加新的机器或算力到一个集群中。集群里的机器可以像一个团队一样工作,并且产出数据分析师想要的结果。

Spark集群里的两种角色

集群中存在两种角色,分别是Driver和Worker。我们可以假设集群中的某台机器是Driver,Driver负责管理一条查询语句所请求的工作量。Driver会决定如何拆分和追踪Wokers的工作,然后决定每个工作单元对应的数据块。Driver还负责在查询完全处理后将结果报告给最终用户。一言以蔽之,Driver负责分割,分配任务并且充当信使的角色。当Wokers 被分配任务后,Workers会获取与任务相关的的数据块。Workers 会处理这些数据,并且把数据回报给Driver。Driver会持续分配任务和收集结果直到任务完成。

数据分析师需要关注的事

对于数据分析师来说,集群的运行机制不会是一个需要过度关注的事情,因为Spark已经为我们做了非常多的集群管理事务。但是分析师仍然需要关注两件事情。第一件事情是关于高计算量的任务,比如Join操作,当这个操作执行的时候,便可能触发shuffle,使得每个worker都能访问到不同的数据。第二件事情是任务执行失败的情况。如果woker因为任何原因执行任务失败了,不用担心,会有其它的woker接替完成这个任务。但如果是driver停止工作了,那这一次查询便可能会直接失败,所以driver失效会是一个更大的问题。