<commit_before>---
layout: global
title: 在Alluxio上运行Spark
nickname: Apache Spark
group: Frameworks
priority: 0
---

* 内容列表
{:toc}

该指南描述了如何在Alluxio上运行[Apache Spark](http://spark-project.org/)。HDFS作为一个分布式底层存储系统的一个例子。请注意，Alluxio除HDFS之外也支持其它的底层存储系统，计算框架(如Spark)可以通过Alluxio从任意数量的底层存储系统读写数据。

## 兼容性

Alluxio直接兼容Spark 1.1或更新版本而无需修改.

## 前期准备

### 一般设置

* Alluxio集群根据向导搭建完成(可以是[本地模式](Running-Alluxio-Locally.html)或者[集群模式](Running-Alluxio-on-a-Cluster.html))。

* Alluxio client需要在编译时指定Spark选项。在顶层`alluxio`目录中执行如下命令构建Alluxio:

```bash
$ mvn clean package -Pspark -DskipTests
```

* 请添加如下代码到`spark/conf/spark-defaults.conf`。

```bash
spark.driver.extraClassPath {{site.ALLUXIO_CLIENT_JAR_PATH}}
spark.executor.extraClassPath {{site.ALLUXIO_CLIENT_JAR_PATH}}
```

高级用户可以选择通过源代码编译客户端jar包，参考说明[这里](Building-Alluxio-Master-Branch.html#compute-framework-support)，并在这篇说明剩余部分将生成的jar包应用在配置项`{{site.ALLUXIO_CLIENT_JAR_PATH_BUILD}}`中。

### 针对HDFS的额外设置

* 如果Alluxio运行Hadoop 1.x集群之上，创建一个新文件`spark/conf/core-site.xml`包含以下内容：

```xml
<configuration>
  <property>
    <name>fs.alluxio.impl</name>
    <value>alluxio.hadoop.FileSystem</value>
  </property>
</configuration>
```


* 如果你使用zookeeper让Alluxio运行在容错模式并且Hadoop集群是1.x，添加如下内容到先前创建的`spark/conf/core-site.xml`:

```xml
<property>
  <name>fs.alluxio-ft.impl</name>
  <value>alluxio.hadoop.FaultTolerantFileSystem</value>
</property>
```

以及如下内容到`spark/conf/spark-defaults.conf`:<commit_msg>docfix3<commit_after>---
layout: global
title: 在Alluxio上运行Spark
nickname: Apache Spark
group: Frameworks
priority: 0
---

* 内容列表
{:toc}

该指南描述了如何在Alluxio上运行[Apache Spark](http://spark-project.org/)。HDFS作为一个分布式底层存储系统的一个例子。请注意，Alluxio除HDFS之外也支持其它的底层存储系统，计算框架(如Spark)可以通过Alluxio从任意数量的底层存储系统读写数据。

## 兼容性

Alluxio直接兼容Spark 1.1或更新版本而无需修改.

## 前期准备

### 一般设置

* Alluxio集群根据向导搭建完成(可以是[本地模式](Running-Alluxio-Locally.html)或者[集群模式](Running-Alluxio-on-a-Cluster.html))。

* 我们建议您从Alluxio[下载页面](http://www.alluxio.org/download)下载tarball.
  另外，高级用户可以选择通过源代码编译客户端jar包，参考说明[这里](Building-Alluxio-Master-Branch.html#compute-framework-support)，并在这篇说明剩余部分将生成的jar包应用在配置项`{{site.ALLUXIO_CLIENT_JAR_PATH_BUILD}}`中。
  
* 请添加如下代码到`spark/conf/spark-defaults.conf`。

```bash
spark.driver.extraClassPath {{site.ALLUXIO_CLIENT_JAR_PATH}}
spark.executor.extraClassPath {{site.ALLUXIO_CLIENT_JAR_PATH}}
```

### 针对HDFS的额外设置

* 如果Alluxio运行Hadoop 1.x集群之上，创建一个新文件`spark/conf/core-site.xml`包含以下内容：

```xml
<configuration>
  <property>
    <name>fs.alluxio.impl</name>
    <value>alluxio.hadoop.FileSystem</value>
  </property>
</configuration>
```


* 如果你使用zookeeper让Alluxio运行在容错模式并且Hadoop集群是1.x，添加如下内容到先前创建的`spark/conf/core-site.xml`:

```xml
<property>
  <name>fs.alluxio-ft.impl</name>
  <value>alluxio.hadoop.FaultTolerantFileSystem</value>
</property>
```

以及如下内容到`spark/conf/spark-defaults.conf`:
{'fraction_non_alphanumeric': 0.15254845656855706, 'fraction_numerical': 0.003948312993539124, 'mean_word_length': 7.054913294797688, 'pattern_counts': {'":': 0, '<': 31, '<?xml version=': 0, '>': 31, 'https://': 0, 'lorem ipsum': 0, 'www.': 1, 'xml': 8}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2629883', 'n_tokens_mistral': 1540, 'n_tokens_neox': 1609, 'n_words': 100}