Menjalankan contoh MapReduce yang disertakan dalam HDInsight

Pelajari cara menjalankan contoh MapReduce yang disertakan dengan Apache Hadoop pada HDInsight.

Prasyarat

Contoh MapReduce

Sampel terletak di kluster HDInsight di /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar. Kode sumber untuk sampel ini disertakan pada kluster HDInsight di /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples.

Sampel berikut terkandung dalam arsip ini:

Sampel Deskripsi
aggregatewordcount Menghitung kata-kata dalam file input.
aggregatewordhist Menghitung histogram kata-kata dalam file input.
bbp Menggunakan Bailey-Borwein-Plouffe untuk komputasi digit Pi yang tepat.
dbcount Menghitung log tampilan halaman yang disimpan dalam database.
distbbp Menggunakan rumus jenis BBP untuk menghitung bit Pi yang tepat.
grep Menghitung kecocokan regex dalam input.
join Melakukan gabungan di atas set data yang diurutkan dan dipartisi secara merata.
multifilewc Menghitung kata dari beberapa file.
pentomino Program peletakan petak peta untuk menemukan solusi masalah pentomino.
pi Memperkirakan Pi menggunakan metode kuasi-Monte Carlo.
randomtextwriter Menulis 10 GB data tekstual acak per simpul.
randomwriter Menulis 10 GB data acak per simpul.
secondarysort Menentukan pengurutan sekunder ke fase kurangi.
sort Mengurutkan data yang ditulis oleh penulis acak.
sudoku Pemecah sudoku.
teragen Hasilkan data untuk terasort.
terasort Jalankan terasort.
teravalidate Memeriksa hasil terasort.
wordcount Menghitung kata-kata dalam file input.
wordmean Menghitung panjang rata-rata kata dalam file input.
wordmedian Menghitung panjang median kata-kata dalam file input.
wordstandarddeviation Menghitung simpangan baku panjang kata dalam file input.

Menjalankan contoh wordcount

  1. Menyambungkan ke HDInsight menggunakan SSH. Ganti CLUSTER dengan nama kluster Anda dan masukkan perintah berikut:

    ssh sshuser@CLUSTER-ssh.azurehdinsight.net
    
  2. Dari sesi SSH, gunakan perintah berikut untuk membuat daftar sampel:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar
    

    Perintah ini menghasilkan daftar sampel dari bagian sebelumnya dari dokumen ini.

  3. Gunakan perintah berikut untuk mendapatkan bantuan pada sampel tertentu. Dalam hal ini, sampel wordcount:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount
    

    Anda menerima pesan kesalahan berikut:

    Usage: wordcount <in> [<in>...] <out>
    

    Pesan ini menunjukkan bahwa Anda dapat menyediakan beberapa jalur input untuk dokumen sumber. Jalur akhir adalah tempat output (hitungan kata dalam dokumen sumber) disimpan.

  4. Gunakan langkah berikut ini untuk menghitung semua kata di Notebooks Leonardo da Vinci, yang disediakan sebagai contoh data dengan kluster Anda:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/davinciwordcount
    

    Masukan untuk pekerjaan ini dibaca dari /example/data/gutenberg/davinci.txt. Output untuk contoh ini disimpan di /example/data/davinciwordcount. Kedua jalur terletak pada penyimpanan default untuk kluster, bukan sistem file lokal.

    Catatan

    Seperti yang tercantum dalam bantuan untuk sampel wordcount, Anda juga dapat menentukan beberapa file input. Misalnya, hadoop jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar wordcount /example/data/gutenberg/davinci.txt /example/data/gutenberg/ulysses.txt /example/data/twowordcount akan menghitung kata-kata baik dalam davinci.txt maupun ulysses.txt.

  5. Setelah pekerjaan selesai, gunakan perintah berikut untuk melihat hasil:

    hdfs dfs -cat /example/data/davinciwordcount/*
    

    Perintah ini menggabungkan semua file output yang dihasilkan oleh pekerjaan. Ini menampilkan output ke konsol. Output yang dihasilkan mirip dengan teks berikut:

    zum     1
    zur     1
    zwanzig 1
    zweite  1
    

    Setiap baris mewakili kata dan berapa kali kata itu terjadi dalam data input.

Contoh Sudoku

Sudoku adalah teka-teki logika yang terdiri dari sembilan kisi 3x3. Beberapa sel dalam kisi memiliki angka, sementara yang lain kosong, dan tujuannya adalah untuk memecahkan sel kosong. Tautan sebelumnya memiliki informasi lebih lanjut tentang teka-teki, tetapi tujuan dari sampel ini adalah untuk memecahkan sel kosong. Jadi input kami harus menjadi file yang dalam format berikut:

  • Sembilan baris dari sembilan kolom
  • Setiap kolom bisa berisi angka atau ? (yang menunjukkan sel kosong)
  • Sel dipisahkan oleh spasi

Ada cara tertentu untuk membangun teka-teki Sudoku; Anda tidak bisa mengulangi angka dalam kolom atau baris. Ada contoh kluster HDInsight yang dibangun dengan benar. Terletak di /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta dan berisi teks berikut:

8 5 ? 3 9 ? ? ? ?
? ? 2 ? ? ? ? ? ?
? ? 6 ? 1 ? ? ? 2
? ? 4 ? ? 3 ? 5 9
? ? 8 9 ? 1 4 ? ?
3 2 ? 4 ? ? 8 ? ?
9 ? ? ? 8 ? 5 ? ?
? ? ? ? ? ? 2 ? ?
? ? ? ? 4 5 ? 7 8

Untuk menjalankan contoh masalah ini melalui contoh Sudoku, gunakan perintah berikut:

yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar sudoku /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta

Hasilnya tampak mirip dengan teks berikut:

8 5 1 3 9 2 6 4 7
4 3 2 6 7 8 1 9 5
7 9 6 5 1 4 3 8 2
6 1 4 8 2 3 7 5 9
5 7 8 9 6 1 4 2 3
3 2 9 4 5 7 8 1 6
9 4 7 2 8 6 5 3 1
1 8 5 7 3 9 2 6 4
2 6 3 1 4 5 9 7 8

Contoh Pi (π)

Sampel PI menggunakan metode statistik (kuasi-Monte Carlo) untuk memperkirakan nilai pi. Poin ditempatkan secara acak dalam kotak unit. Persegi ini juga berisi lingkaran. Peluang titik-titik jatuh dalam lingkaran sama dengan area lingkaran, pi/4. Nilai pi dapat diperkirakan dari nilai 4R. R adalah rasio jumlah titik yang berada di dalam lingkaran dengan jumlah total titik yang berada di dalam persegi. Semakin besar sampel titik yang digunakan, semakin baik perkiraannya.

Gunakan perintah berikut untuk menjalankan sampel ini. Perintah ini menggunakan 16 peta dengan masing-masing 10.000.000 sampel untuk memperkirakan nilai pi:

yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar pi 16 10000000

Nilai yang dikembalikan oleh perintah ini mirip dengan 3,14159155000000000000. Untuk referensi, 10 tempat desimal pertama pi adalah 3,1415926535.

Contoh GraySort 10 GB

GraySort adalah semacam tolok ukur. Metrik adalah laju pengurutan (TB/menit) yang dicapai saat mengurutkan data dalam jumlah besar, biasanya minimum 100 TB.

Sampel ini menggunakan data sederhana 10 GB sehingga dapat dijalankan dengan relatif cepat. Ini menggunakan aplikasi MapReduce yang dikembangkan oleh Owen O'Malley dan Arun Murthy. Aplikasi ini memenangkan tolok ukur semacam terabyte tujuan umum tahunan ("Daytona") pada tahun 2009, dengan tingkat 0,578 TB/menit (100 TB dalam 173 menit). Untuk informasi selengkapnya tentang ini dan tolok ukur pengurutan lainnya, lihat situs Urutkan Tolok Ukur.

Sampel ini menggunakan tiga set program MapReduce:

  • TeraGen: Program MapReduce yang menghasilkan baris data untuk diurutkan

  • TeraSort: Sampel data input dan menggunakan MapReduce untuk mengurutkan data ke dalam urutan total

    TeraSort adalah pengurutan MapReduce standar, kecuali untuk partisi kustom. Partisi menggunakan daftar kunci sampel N-1 yang diurutkan yang menentukan rentang kunci untuk setiap pengurangan. Secara khusus, semua kunci seperti sample[i-1] <= key < sample[i] dikirim untuk pengurangan i. Partisi ini menjamin bahwa output pengurangan i semuanya kurang dari output pengurangan i+1.

  • TeraValidate: Program MapReduce yang memvalidasi bahwa output diurutkan secara global

    Program ini membuat satu peta per file di direktori output, dan setiap peta memastikan bahwa setiap kunci kurang dari atau sama dengan yang sebelumnya. Fungsi peta menghasilkan rekaman kunci pertama dan terakhir dari setiap file. Fungsi perkecil memastikan bahwa kunci pertama file i lebih besar dari kunci terakhir file i-1. Setiap masalah dilaporkan sebagai output dari fase perkecil, dengan kunci yang rusak.

Gunakan langkah-langkah berikut untuk menghasilkan data, mengurutkan, lalu memvalidasi output:

  1. Hasilkan 10 GB data, yang disimpan ke penyimpanan default kluster HDInsight di /example/data/10GB-sort-input:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teragen -Dmapred.map.tasks=50 100000000 /example/data/10GB-sort-input
    

    -Dmapred.map.tasks memberi tahu Hadoop berapa banyak tugas peta yang digunakan untuk pekerjaan ini. Dua parameter terakhir menginstruksikan pekerjaan untuk membuat 10 GB data dan menyimpannya di /example/data/10GB-sort-input.

  2. Gunakan perintah berikut untuk mengurutkan data:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar terasort -Dmapred.map.tasks=50 -Dmapred.reduce.tasks=25 /example/data/10GB-sort-input /example/data/10GB-sort-output
    

    -Dmapred.reduce.tasks memberi tahu Hadoop berapa banyak pengurangan tugas yang akan digunakan untuk pekerjaan itu. Dua parameter akhir hanyalah lokasi input dan output untuk data.

  3. Gunakan yang berikut ini untuk memvalidasi data yang dihasilkan oleh pengurutan:

    yarn jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar teravalidate -Dmapred.map.tasks=50 -Dmapred.reduce.tasks=25 /example/data/10GB-sort-output /example/data/10GB-sort-validate
    

Langkah berikutnya

Dari artikel ini, Anda mempelajari cara menjalankan sampel yang disertakan dengan kluster HDInsight berbasis Linux. Untuk tutorial tentang menggunakan Pig, Hive, dan MapReduce dengan HDInsight, lihat topik berikut: