

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

# Buat atau jalankan aplikasi Hadoop
<a name="emr-hadoop-application"></a>

**Topics**
+ [

# Bangun binari menggunakan Amazon EMR
](emr-build-binaries.md)
+ [

# Memproses data dengan streaming
](UseCase_Streaming.md)
+ [

# Proses data menggunakan JAR kustom
](UseCase_CustomJar.md)

# Bangun binari menggunakan Amazon EMR
<a name="emr-build-binaries"></a>

Anda dapat menggunakan Amazon EMR sebagai lingkungan membangun untuk mengompilasi program yang digunakan dalam klaster Anda. Program yang Anda gunakan dengan Amazon EMR harus dikompilasi pada sistem yang menjalankan versi Linux yang sama yang digunakan oleh Amazon EMR. Untuk versi 32-bit, Anda harus telah mengompilasi pada mesin 32-bit atau dengan opsi kompilasi silang 32-bit diaktifkan. Untuk versi 64-bit, Anda harus telah mengompilasi pada mesin 64-bit atau dengan opsi kompilasi silang 64-bit diaktifkan. Untuk informasi selengkapnya tentang versi instans EC2, lihat [Rencanakan dan konfigurasikan instans EC2](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-ec2-instances.html) di *Amazon EMR*. Bahasa pemrograman yang didukung termasuk C \$1\$1, Python, dan C\$1. 

Tabel berikut menguraikan langkah-langkah yang terlibat untuk membangun dan menguji aplikasi Anda menggunakan Amazon EMR.


**Proses untuk membangun modul**  

|  |  | 
| --- |--- |
|  1 |  Connect ke simpul utama klaster Anda. | 
|  2  |  Salin file sumber ke simpul utama. | 
|  3  |  Bangun binari dengan optimasi yang diperlukan. | 
|  4 |  Salin binari dari simpul utama untuk Amazon S3. | 

Rincian untuk masing-masing langkah ini tercakup dalam bagian yang mengikuti. 

**Connect ke simpul utama klaster**
+ Ikuti petunjuk di [Connect ke simpul utama menggunakan SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html) di *Panduan Pengelolaan Amazon EMR*.

**Salin file sumber ke simpul utama**

1. Tempatkan file sumber Anda dalam bucket Amazon S3. Untuk mempelajari cara membuat bucket dan cara memindahkan data ke Amazon S3, lihat Panduan Pengguna [Layanan Penyimpanan Sederhana Amazon](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

1. Buat folder di klaster Hadoop untuk file sumber Anda dengan memasukkan perintah yang mirip dengan berikut ini:

   ```
   mkdir SourceFiles
   ```

1. Salin file sumber Anda dari Amazon S3 ke simpul utama dengan mengetik perintah yang mirip dengan berikut ini:

   ```
   hadoop fs -get s3://amzn-s3-demo-bucket/SourceFiles SourceFiles
   ```

**Bangun binari dengan optimasi yang diperlukan**  
Cara Anda membangun binari tergantung pada banyak faktor. Ikuti petunjuk untuk alat build khusus guna menyiapkan dan mengonfigurasi lingkungan Anda. Anda dapat menggunakan perintah spesifikasi sistem Hadoop untuk mendapatkan informasi klaster guna menentukan cara menginstal lingkungan build Anda.

**Mengidentifikasi spesifikasi sistem**
+ Gunakan perintah berikut untuk memverifikasi arsitektur yang Anda gunakan untuk membangun binari Anda.

  1. Untuk melihat versi Debian, masukkan perintah berikut:

     ```
     master$ cat /etc/issue
     ```

     Output akan terlihat serupa dengan yang berikut ini.

     ```
     Debian GNU/Linux 5.0
     ```

  1. Untuk melihat nama DNS publik dan ukuran prosesor, masukkan perintah berikut:

     ```
     master$ uname -a
     ```

     Output akan terlihat serupa dengan yang berikut ini.

     ```
     Linux domU-12-31-39-17-29-39.compute-1.internal 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:34:28 EST 2008 x86_64 GNU/Linux
     ```

  1. Untuk melihat kecepatan prosesor, masukkan perintah berikut ini:

     ```
     master$ cat /proc/cpuinfo
     ```

     Output akan terlihat serupa dengan yang berikut ini.

     ```
     processor : 0
     vendor_id : GenuineIntel
     model name : Intel(R) Xeon(R) CPU E5430 @ 2.66GHz
     flags : fpu tsc msr pae mce cx8 apic mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr cda lahf_lm
     ...
     ```

Setelah biner Anda dibangun, Anda dapat menyalin file ke Amazon S3.

**Menyalin binari dari simpul utama untuk Amazon S3**
+ Ketik perintah berikut untuk menyalin biner ke bucket Amazon S3:

  ```
  hadoop fs -put BinaryFiles s3://amzn-s3-demo-bucket/BinaryDestination
  ```

# Memproses data dengan streaming
<a name="UseCase_Streaming"></a>

Hadoop streaming adalah utilitas yang dilengkapi dengan Hadoop yang memungkinkan Anda mengembangkan MapReduce executable dalam bahasa selain Java. Streaming diimplementasikan dalam bentuk file JAR, sehingga Anda dapat menjalankannya dari Amazon EMR API atau baris perintah seperti file JAR standar. 

Bagian ini menjelaskan cara menggunakan streaming dengan Amazon EMR. 

**catatan**  
Apache Hadoop streaming adalah alat independen. Dengan demikian, semua fungsi dan parameternya tidak dijelaskan di sini. [Untuk informasi lebih lanjut tentang streaming Hadoop, kunjungi http://hadoop.apache. org/docs/stable/hadoop-streaming/HadoopStreaming.html](http://hadoop.apache.org/docs/stable/hadoop-streaming/HadoopStreaming.html).

## Menggunakan utilitas streaming Hadoop
<a name="HadoopStreamCommands"></a>

Bagian ini menjelaskan bagaimana penggunaan utilitas streaming Hadoop.


**Proses Hadoop**  

|  |  | 
| --- |--- |
| 1 |  Tulis pemeta dan peredam yang dapat dieksekusi dalam bahasa pemrograman pilihan Anda. Ikuti petunjuk dalam dokumentasi Hadoop untuk menulis streaming yang dapat dieksekusi. Program harus membaca input mereka dari input standar dan data output melalui output standar. Secara default, setiap baris input/output merupakan catatan dan tab pertama pada setiap baris digunakan sebagai pemisah antara kunci dan nilai.  | 
| 2 |  Uji kemampuan untuk mengeksekusi secara lokal dan unggah ke Amazon S3.  | 
| 3 |  Gunakan antarmuka baris perintah Amazon EMR atau konsol Amazon EMR untuk menjalankan aplikasi Anda.  | 

Setiap skrip pemeta meluncurkan sebagai proses terpisah dalam klaster. Setiap peredam yang dapat dijalankan ternyata merupakan output dari pemeta yang dapat dieksekusi ke output data oleh alur kerja.

`reducer`Parameter `input``output`,`mapper`,, dan diperlukan oleh sebagian besar aplikasi streaming. Tabel berikut menjelaskan ini dan lainnya, parameter opsional.


| Parameter | Deskripsi | Diperlukan | 
| --- | --- | --- | 
| Input |  Lokasi di Amazon S3 dari data input. Jenis: String Default: Tidak ada Kendala: URI. Jika tidak ada protokol yang ditentukan maka gunakan sistem file default klaster.   | Ya | 
| -output |  Lokasi di Amazon S3 tempat Amazon EMR mengunggah data yang diproses. Jenis: String Default: Tidak ada Kendala: URl Default: Jika lokasi tidak ditentukan, Amazon EMR mengunggah data ke lokasi yang ditentukan oleh `input`.  | Ya | 
| -pemeta |  Nama pemeta yang dapat dieksekusi. Jenis: String Default: Tidak Ada  | Ya | 
| -peredam |  Nama peredam yang dapat dieksekusi. Jenis: String Default: Tidak Ada  | Ya | 
| -cachefile |  Lokasi Amazon S3 yang berisi file Hadoop untuk menyalin ke direktori kerja lokal Anda (terutama untuk meningkatkan performa). Jenis: String Default: Tidak ada Kendala: [URI] \$1 [nama symlink untuk dibuat dalam direktori kerja]   | Tidak | 
| -cacheArchive |  File JAR untuk mengekstrak ke dalam direktori kerja Jenis: String Default: Tidak ada Kendala: [URI] \$1 [symlink nama direktori untuk dibuat dalam direktori kerja   | Tidak | 
| -penggabung |  Hasil penggabungan Jenis: String Default: Tidak ada Kendala: nama kelas Java  | Tidak | 

Contoh kode berikut adalah pemeta yang dapat dieksekusi dan ditulis dengan Python. Skrip ini adalah bagian dari aplikasi WordCount sampel.

```
 1. #!/usr/bin/python
 2. import sys
 3. 
 4. def main(argv):
 5.   line = sys.stdin.readline()
 6.   try:
 7.     while line:
 8.       line = line.rstrip()
 9.       words = line.split()
10.       for word in words:
11.         print "LongValueSum:" + word + "\t" + "1"
12.       line = sys.stdin.readline()
13.   except "end of file":
14.     return None
15. if __name__ == "__main__":
16.   main(sys.argv)
```

# Kirim langkah streaming
<a name="CLI_CreateStreaming"></a>

Bagian ini mencakup dasar-dasar mengirimkan langkah streaming ke cluster. Aplikasi streaming membaca input dari input standar dan kemudian menjalankan skrip atau executable (disebut mapper) terhadap setiap input. Hasil dari masing-masing input disimpan secara lokal, biasanya di partisi Sistem File Terdistribusi Hadoop (HDFS). Setelah semua input diproses oleh pemeta, skrip kedua atau yang dapat dieksekusi (disebut peredam) memproses hasil pemeta. Hasil dari peredam dikirim ke output standar. Anda dapat menyatukan serangkaian langkah streaming, di mana output dari satu langkah menjadi masukan dari langkah lain. 

Pemeta dan peredam masing-masing dapat direferensikan sebagai file atau Anda dapat menyediakan kelas Java. Anda dapat menerapkan pemeta dan peredam dalam salah satu bahasa yang didukung, termasuk Ruby, Perl, Python, PHP, atau Bash.

## Kirim langkah streaming menggunakan konsol
<a name="emr-dev-create-stream-console"></a>

Contoh ini menjelaskan cara menggunakan konsol EMR Amazon untuk mengirimkan langkah streaming ke cluster yang sedang berjalan.

**Untuk mengirimkan langkah streaming**

1. [Buka konsol EMR Amazon di https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr/)

1. Pada halaman **Daftar Klaster**, pilih tautan untuk klaster Anda.

1. Gulir ke bagian **Langkah** dan perluas, lalu pilih **Tambahkan langkah**.

1. Di kotak dialog **Tambahkan Langkah**:
   + Untuk **Tipe langkah**, pilih **Program streaming**.
   + Untuk **Nama**, terima nama default (program Streaming) atau ketik nama baru.
   + Untuk **Pemeta**, ketik atau jelajahi ke lokasi kelas pemeta Anda di Hadoop, atau bucket S3 tempat pemeta yang dapat dieksekusi, seperti program Python, berada. Nilai jalur harus dalam bentuk*BucketName*/*path*/*MapperExecutable*.
   + Untuk **Peredam**, ketik atau jelajahi ke lokasi kelas peredam Anda di Hadoop, atau bucket S3 tempat pemeta yang dapat dieksekusi, seperti program Python, berada. Nilai jalur harus dalam bentuk*BucketName*/*path*/*MapperExecutable*. Amazon EMR mendukung kata kunci khusus *agregat*. Untuk informasi lebih lanjut, buka pustaka Agregat yang disediakan oleh Hadoop.
   + Untuk **Lokasi Input S3**, ketik atau jelajahi ke lokasi data input Anda. 
   + Untuk **Lokasi Output S3**, ketik atau jelajahi nama bucket output Amazon S3.
   + Untuk **Pendapat**, biarkan kosong.
   + Untuk **Tindakan pada kegagalan**, terima opsi default (**Lanjutkan**).

1. Pilih **Tambahkan**. Langkah muncul di konsol dengan status Tertunda. 

1. Status langkah perubahan dari Tertunda ke Sedang Berjalan hingga Selesai sebagai langkah berjalan. Untuk memperbarui status, pilih ikon **Refresh** di atas kolom Tindakan. 

## AWS CLI
<a name="emr-dev-create-stream-cli"></a>

Contoh-contoh ini menunjukkan cara menggunakan AWS CLI untuk membuat cluster dan mengirimkan langkah Streaming. 

**Untuk membuat cluster dan mengirimkan langkah streaming menggunakan AWS CLI**
+ Untuk membuat cluster dan mengirimkan langkah streaming menggunakan AWS CLI, ketik perintah berikut dan ganti *myKey* dengan nama key pair EC2 Anda. Perhatikan bahwa argumen Anda untuk `--files` harus jalur Amazon S3 ke lokasi skrip Anda, dan argumen untuk `-mapper` dan `-reducer` harus berupa nama file skrip masing-masing.

  ```
  aws emr create-cluster --name "Test cluster" --release-label emr-7.12.0 --applications Name=Hue Name=Hive Name=Pig --use-default-roles \
  --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \
  --steps Type=STREAMING,Name="Streaming Program",ActionOnFailure=CONTINUE,Args=[--files,pathtoscripts,-mapper,mapperscript,-reducer,reducerscript,aggregate,-input,pathtoinputdata,-output,pathtooutputbucket]
  ```
**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 (^).

  Ketika Anda menentukan jumlah instans tanpa menggunakan `--instance-groups` parameter, simpul utama tunggal diluncurkan, dan instans yang tersisa diluncurkan sebagai simpul inti. Semua simpul menggunakan tipe instans yang ditentukan dalam perintah.
**catatan**  
Jika sebelumnya Anda tidak membuat peran layanan Amazon EMR default dan profil instans EC2, ketik aws `emr create-default-roles` untuk membuatnya sebelum mengetik `create-cluster` subperintah.

  Untuk informasi selengkapnya tentang penggunaan perintah EMR Amazon di AWS CLI, lihat. [https://docs.aws.amazon.com/cli/latest/reference/emr](https://docs.aws.amazon.com/cli/latest/reference/emr)

# Proses data menggunakan JAR kustom
<a name="UseCase_CustomJar"></a>

JAR khusus menjalankan program Java yang dikompilasi yang dapat Anda unggah ke Amazon S3. Anda harus mengkompilasi program terhadap versi Hadoop yang ingin Anda luncurkan, dan mengirimkan `CUSTOM_JAR` langkah ke cluster EMR Amazon Anda. Untuk informasi selengkapnya tentang cara mengkompilasi file JAR, lihat[Bangun binari menggunakan Amazon EMR](emr-build-binaries.md).

Untuk informasi lebih lanjut tentang membangun MapReduce aplikasi Hadoop, lihat [MapReduce Tutorial](http://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) dalam dokumentasi Apache Hadoop.

**Topics**
+ [

# Kirim langkah JAR kustom
](emr-launch-custom-jar-cli.md)

# Kirim langkah JAR kustom
<a name="emr-launch-custom-jar-cli"></a>

JAR khusus menjalankan program Java yang dikompilasi yang dapat Anda unggah ke Amazon S3. Anda harus mengkompilasi program terhadap versi Hadoop yang ingin Anda luncurkan, dan mengirimkan `CUSTOM_JAR` langkah ke cluster EMR Amazon Anda. Untuk informasi selengkapnya tentang cara mengkompilasi file JAR, lihat[Bangun binari menggunakan Amazon EMR](emr-build-binaries.md).

Untuk informasi lebih lanjut tentang membangun MapReduce aplikasi Hadoop, lihat [MapReduce Tutorial](http://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) dalam dokumentasi Apache Hadoop.

Bagian ini mencakup dasar-dasar pengiriman langkah JAR kustom di Amazon EMR. Mengirimkan langkah JAR kustom memungkinkan Anda untuk menulis skrip untuk memproses data Anda dengan bahasa pemrograman Java. 

## Kirim langkah JAR khusus dengan konsol
<a name="ConsoleCreatingaCustomJARJob"></a>

Contoh ini menjelaskan cara menggunakan konsol Amazon EMR untuk mengirimkan langkah JAR kustom untuk klaster berjalan.

**Untuk mengirimkan langkah JAR khusus dengan konsol**

1. [Buka konsol EMR Amazon di https://console.aws.amazon.com /emr.](https://console.aws.amazon.com/emr/)

1. Pada halaman **Daftar Klaster**, pilih tautan untuk klaster Anda.

1. Gulir ke bagian **Langkah** dan perluas, lalu pilih **Tambahkan langkah**.

1. Di dialog **Tambahkan Langkah**:
   + Untuk **Tipe langkah**, pilih **JAR Kustom**.
   + Untuk **Nama**, terima nama default (Kustom JAR) atau ketik nama baru.
   + Untuk **Lokasi JAR S3**, ketik atau jelajahi ke lokasi file JAR Anda. Lokasi JAR mungkin merupakan jalur ke S3 atau kelas java yang memenuhi syarat di classpath.. 
   + Untuk **Pendapat**, ketik argumen yang diperlukan sebagai string yang dipisahkan spasi atau biarkan kosong.
   + Untuk **Tindakan pada kegagalan**, terima opsi default (**Lanjutkan**).

1. Pilih **Tambahkan**. Langkah muncul di konsol dengan status Tertunda. 

1. Status langkah perubahan dari Tertunda ke Sedang Berjalan hingga Selesai sebagai langkah berjalan. Untuk memperbarui status, pilih ikon **Refresh** di atas kolom Tindakan. 

## Meluncurkan cluster dan mengirimkan langkah JAR khusus dengan AWS CLI
<a name="emr-dev-create-jar-cli"></a>

**Untuk meluncurkan cluster dan mengirimkan langkah JAR khusus dengan AWS CLI**

Untuk meluncurkan cluster dan mengirimkan langkah JAR khusus dengan AWS CLI, ketik `create-cluster` subperintah dengan `--steps` parameter.
+ Untuk meluncurkan cluster dan mengirimkan langkah JAR kustom, ketik perintah berikut, ganti *myKey* dengan nama key pair EC2 Anda, dan ganti *amzn-s3-demo-bucket* dengan nama bucket Anda.

  ```
  aws emr create-cluster --name "Test cluster" --release-label emr-7.12.0 \
  --applications Name=Hue Name=Hive Name=Pig --use-default-roles \
  --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \
  --steps Type=CUSTOM_JAR,Name="Custom JAR Step",ActionOnFailure=CONTINUE,Jar=pathtojarfile,Args=["pathtoinputdata","pathtooutputbucket","arg1","arg2"]
  ```
**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 (^).

  Saat Anda menentukan jumlah instance tanpa `--instance-groups` parameter, satu node primer diluncurkan, dan instance yang tersisa diluncurkan sebagai node inti. Semua node menggunakan jenis instance yang Anda tentukan dalam perintah.
**catatan**  
Jika Anda belum pernah membuat peran layanan Amazon EMR default dan profil instans EC2, ketik `aws emr create-default-roles` untuk membuatnya sebelum mengetik `create-cluster` subperintah.

  Untuk informasi selengkapnya tentang penggunaan perintah EMR Amazon di AWS CLI, lihat. [https://docs.aws.amazon.com/cli/latest/reference/emr](https://docs.aws.amazon.com/cli/latest/reference/emr)

## Ketergantungan pihak ketiga
<a name="emr-custom-jar-dependency"></a>

Kadang-kadang mungkin perlu untuk memasukkan dalam MapReduce classpath JARs untuk digunakan dengan program Anda. Anda memiliki dua pilihan untuk melakukan hal ini:
+ Sertakan `--libjars s3://URI_to_JAR` dalam opsi langkah untuk prosedur di [Meluncurkan cluster dan mengirimkan langkah JAR khusus dengan AWS CLI](#emr-dev-create-jar-cli).
+ Luncurkan cluster dengan `mapreduce.application.classpath` pengaturan yang dimodifikasi di`mapred-site.xml`. Gunakan klasifikasi konfigurasi `mapred-site`. Untuk membuat cluster dengan langkah menggunakan AWS CLI, ini akan terlihat seperti berikut:

  ```
  aws emr create-cluster --release-label emr-7.12.0 \
  --applications Name=Hue Name=Hive Name=Pig --use-default-roles \
  --instance-type m5.xlarge --instance-count 2  --ec2-attributes KeyName=myKey \
  --steps Type=CUSTOM_JAR,Name="Custom JAR Step",ActionOnFailure=CONTINUE,Jar=pathtojarfile,Args=["pathtoinputdata","pathtooutputbucket","arg1","arg2"] \
  --configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.json
  ```

  `myConfig.json`:

  ```
  [
      {
        "Classification": "mapred-site",
        "Properties": {
          "mapreduce.application.classpath": "path1,path2"
        }
      }
    ]
  ```

  Daftar jalur yang dipisahkan koma harus ditambahkan ke classpath JVM untuk setiap tugas.