<commit_before>---
layout:     post
title:      "Spark Inside(Cluster)"
subtitle:   "(集群篇)Spark inside让普通开发人员可以通过该篇文档的学习可以快速上手Spark"
date:       2017-04-05 12:30:00
author:     "ryan"
header-img: "img/post-bg-02.jpg"
---

# Digest

前一篇主要讲单机模式下的Spark开发基础，这一篇文章主要分享一下Spark在集群里面的运行架构，以及如何使用Standalone方式来使用Spark的集群管理。



# 1. 集群运行时架构

在Spark集群中，有一个节点来协调其他节点的操作，该节点为“驱动器节点”，而其他节点就是“执行器节点”，从名字大概可以了解他们的作用了，先来看一下架构图：

![2017-04-17-spark-runtime-arch](/Users/ryan/Documents/git/ryanwli.github.io/img/2017/2017-04-17-spark-runtime-arch.png)

之前第一篇写的独立驱动程序就是在Spark驱动器节点执行，分析出需要多少任务，然后分发给其他执行器节点进行执行。他们之间的协作需要有一个集群管理器来做，Spark内部提供Standalone进群管理器，也可以使用如Hadoop Yarn，以及Apache Mesos来做管理都可以；



# 2. 驱动器与执行器节点

## 2.1 驱动器节点

在前一篇文章中，写的所有Java示例代码都是由spark-submit将这些代码提交到驱动器节点，驱动器节点执行main方法；然后在该进程中主要做两件事情“分析程序并生成任务”和“调度协作其他执行器节点”。

### 2.1.1 分析生成任务

我们再来看看上篇那张图：<commit_msg>new article<commit_after>---
layout:     post
title:      "Spark Inside(Cluster)"
subtitle:   "(集群篇)Spark inside让普通开发人员可以通过该篇文档的学习可以快速上手Spark"
date:       2017-04-17 12:30:00
author:     "ryan"
header-img: "img/post-bg-01.jpg"
---

# Digest

前一篇主要讲单机模式下的Spark开发基础，这一篇文章主要分享一下Spark在集群里面的运行架构，以及如何使用Standalone方式来使用Spark的集群管理。



# 1. 集群运行时架构

在Spark集群中，有一个节点来协调其他节点的操作，该节点为“驱动器节点”，而其他节点就是“执行器节点”，从名字大概可以了解他们的作用了，先来看一下架构图：

![2017-04-17-spark-runtime-arch](/Users/ryan/Documents/git/ryanwli.github.io/img/2017/2017-04-17-spark-runtime-arch.png)

之前第一篇写的独立驱动程序就是在Spark驱动器节点执行，分析出需要多少任务，然后分发给其他执行器节点进行执行。他们之间的协作需要有一个集群管理器来做，Spark内部提供Standalone进群管理器，也可以使用如Hadoop Yarn，以及Apache Mesos来做管理都可以；



# 2. 驱动器与执行器节点

## 2.1 驱动器节点

在前一篇文章中，写的所有Java示例代码都是由spark-submit将这些代码提交到驱动器节点，驱动器节点执行main方法；然后在该进程中主要做两件事情“分析程序并生成任务”和“调度协作其他执行器节点”。

### 2.1.1 分析生成任务

我们再来看看上篇那张图：
{'fraction_non_alphanumeric': 0.12295081967213115, 'fraction_numerical': 0.05035128805620609, 'mean_word_length': 6.430434782608696, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3498476', 'n_tokens_mistral': 1282, 'n_tokens_neox': 1333, 'n_words': 66}