

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Spark spesifik aplikasi dengan versi AMI sebelumnya dari Amazon EMR
<a name="emr-3x-spark"></a>

## Gunakan Spark secara interaktif atau dalam mode batch
<a name="emr-3x-spark-interactive-batch"></a>

Amazon EMR memungkinkan Anda untuk menjalankan aplikasi Spark dalam dua mode: 
+ Interaktif
+ Batch

Saat Anda meluncurkan cluster yang berjalan lama menggunakan konsol atau AWS CLI, Anda dapat terhubung menggunakan SSH ke node master sebagai pengguna Hadoop dan menggunakan shell Spark untuk mengembangkan dan menjalankan aplikasi Spark Anda secara interaktif. Menggunakan Spark interaktif memungkinkan Anda untuk prototipe atau uji aplikasi Spark lebih mudah daripada di lingkungan batch. Setelah Anda berhasil merevisi aplikasi Spark dalam mode interaktif, Anda dapat menempatkan bahwa JAR aplikasi atau program Python dalam sistem file lokal ke node master cluster di Amazon S3. Anda kemudian dapat mengirimkan aplikasi sebagai alur kerja batch.

Dalam modus batch, meng-upload Spark script untuk Amazon S3 atau sistem file node master lokal, dan kemudian mengirimkan pekerjaan ke cluster sebagai langkah. Langkah percikan dapat diserahkan ke cluster berjalan lama atau cluster sementara.

## Membuat cluster dengan Spark diinstal
<a name="emr-3x-spark-install"></a>

**Untuk melancarkan kluster dengan Spark dipasang menggunakan konsol**

1. Arahkan ke konsol EMR Amazon baru dan pilih **Beralih ke konsol lama** dari navigasi samping. Untuk informasi selengkapnya tentang apa yang diharapkan saat beralih ke konsol lama, lihat [Menggunakan konsol lama](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in).

1. Pilih **Buat kluster**.

1. Untuk **Pengaturan perangkat lunak**, pilih versi rilis AMI yang Anda butuhkan.

1.  Untuk **Aplikasi yang akan dipasang** Pilih **Spark** dari daftar, lalu pilih **Konfigurasikan dan tambahkan**.

1. Menambahkan argumen untuk mengubah konfigurasi Spark seperti yang diinginkan. Untuk informasi selengkapnya, lihat [Konfigurasi Spark](#emr-3x-spark-configure). Pilih **Tambahkan**.

1.  Pilih opsi lain yang diperlukan, lalu pilih **Buat kluster**.

Contoh berikut menunjukkan cara membuat klaster dengan Spark menggunakan Java:

```
AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials);
SupportedProductConfig sparkConfig = new SupportedProductConfig()
			.withName("Spark");

RunJobFlowRequest request = new RunJobFlowRequest()
			.withName("Spark Cluster")
			.withAmiVersion("3.11.0")
			.withNewSupportedProducts(sparkConfig)
			.withInstances(new JobFlowInstancesConfig()
				.withEc2KeyName("myKeyName")
				.withInstanceCount(1)
				.withKeepJobFlowAliveWhenNoSteps(true)
				.withMasterInstanceType("m3.xlarge")
				.withSlaveInstanceType("m3.xlarge")
			);			
RunJobFlowResult result = emr.runJobFlow(request);
```

## Konfigurasi Spark
<a name="emr-3x-spark-configure"></a>

Anda mengonfigurasi Spark saat membuat cluster dengan menjalankan aksi bootstrap yang terletak di [awslabs/emr-bootstrap-actions/sparkrepositori di Github](https://github.com/awslabs/emr-bootstrap-actions/tree/master/spark). Untuk argumen bahwa tindakan bootstrap menerima, lihat [README](https://github.com/aws-samples/emr-bootstrap-actions/blob/master/spark/examples/README.md) dalam repositori itu. Tindakan bootstrap mengkonfigurasi properti di `$SPARK_CONF_DIR/spark-defaults.conf` file. Untuk informasi lebih lanjut tentang pengaturan, lihat topik Spark Konfigurasi dalam dokumentasi Spark. Anda dapat mengganti “terbaru” di URL berikut dengan nomor versi Spark yang Anda instal, misalnya, `2.2.0` [http://spark.apache.org/docs/latest/configuration.html](http://spark.apache.org/docs/latest/configuration.html).

Anda juga dapat mengkonfigurasi Spark dinamis pada saat setiap pengajuan aplikasi. Pengaturan untuk secara otomatis memaksimalkan alokasi sumber daya untuk pelaksana tersedia menggunakan `spark` File konfigurasi. Untuk informasi selengkapnya, lihat [Menimpa pengaturan konfigurasi default Spark](#emr-3x-spark-dynamic-configuration).

### Mengubah pengaturan default Spark
<a name="emr-3x-spark-default-settings"></a>

Contoh berikut menunjukkan cara membuat klaster dengan `spark.executor.memory` diatur ke 2G menggunakan AWS CLI.

**catatan**  
Karakter lanjutan baris Linux (\$1) disertakan agar mudah dibaca Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).

```
aws emr create-cluster --name "Spark cluster" --ami-version 3.11.0 \
--applications Name=Spark, Args=[-d,spark.executor.memory=2G] --ec2-attributes KeyName=myKey \
--instance-type m3.xlarge --instance-count 3 --use-default-roles
```

### Kirim pekerjaan ke Spark
<a name="emr-3x-spark-submit-work"></a>

Untuk mengirimkan pekerjaan ke sebuah cluster, gunakan langkah untuk menjalankan `spark-submit` pada cluster EMR Anda. Tambahkan langkah menggunakan `addJobFlowSteps` metode di [AmazonElasticMapReduceClient](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/elasticmapreduce/AmazonElasticMapReduceClient.html):

```
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonElasticMapReduceClient emr = new AmazonElasticMapReduceClient(credentials);
StepFactory stepFactory = new StepFactory();
AddJobFlowStepsRequest req = new AddJobFlowStepsRequest();
req.withJobFlowId("j-1K48XXXXXXHCB");

List<StepConfig> stepConfigs = new ArrayList<StepConfig>();
		
StepConfig sparkStep = new StepConfig()
	.withName("Spark Step")
	.withActionOnFailure("CONTINUE")
	.withHadoopJarStep(stepFactory.newScriptRunnerStep("/home/hadoop/spark/bin/spark-submit","--class","org.apache.spark.examples.SparkPi","/home/hadoop/spark/lib/spark-examples-1.3.1-hadoop2.4.0.jar","10"));

stepConfigs.add(sparkStep);
req.withSteps(stepConfigs);
AddJobFlowStepsResult result = emr.addJobFlowSteps(req);
```

### Menimpa pengaturan konfigurasi default Spark
<a name="emr-3x-spark-dynamic-configuration"></a>

Anda mungkin ingin menimpa Spark nilai konfigurasi default secara per aplikasi. Anda dapat melakukan ini ketika Anda mengirimkan aplikasi menggunakan langkah, yang pada dasarnya melewati opsi untuk `spark-submit`. Misalnya, Anda mungkin ingin mengubah memori yang dialokasikan untuk proses pelaksana dengan mengubah `spark.executor.memory`. Anda dapat menyediakan `--executor-memory` beralih dengan argumen seperti berikut:

```
/home/hadoop/spark/bin/spark-submit --executor-memory 1g --class org.apache.spark.examples.SparkPi /home/hadoop/spark/lib/spark-examples*.jar 10
```

Demikian pula, Anda dapat menyetel `--executor-cores` dan `--driver-memory`. Dalam satu langkah, Anda akan memberikan argumen berikut untuk langkah:

```
--executor-memory 1g --class org.apache.spark.examples.SparkPi /home/hadoop/spark/lib/spark-examples*.jar 10
```

Anda juga dapat menyetel pengaturan yang mungkin tidak memiliki sakelar bawaan menggunakan `--conf` Pilihan. Untuk informasi selengkapnya tentang pengaturan lain yang merdu, lihat [Dinamis memuat properti Spark](https://spark.apache.org/docs/latest/configuration.html#dynamically-loading-spark-properties) topik dalam dokumentasi Apache Spark.