Aracılığıyla paylaş


HDInsight'ta bulunan MapReduce örneklerini çalıştırma

HDInsight üzerinde Apache Hadoop ile birlikte verilen MapReduce örneklerini çalıştırmayı öğrenin.

Önkoşullar

MapReduce örnekleri

HDInsight kümesinde, /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar konumunda örnekler bulunur. Bu örneklerin kaynak kodu, /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples konumundaki HDInsight kümesine dahil edilmiştir.

Bu arşivde aşağıdaki örnekler bulunur:

Örnek Açıklama
toplam kelime sayısı Giriş dosyalarındaki sözcükleri sayar.
birleştirilmiş kelime geçmişi Giriş dosyalarındaki sözcüklerin histogramını hesaplar.
bbp Pi'nin tam rakamlarını hesaplamak için Bailey-Borwein-Plouffe kullanır.
dbcount Veritabanında depolanan sayfa görünümü günlüklerini sayar.
distbbp Pi'nin tam bitlerini hesaplamak için BBP türünde bir formül kullanır.
Grep Girişteki bir regex'in eşleşmelerini sayar.
katıl Sıralanmış, eşit bölümlenmiş veri kümeleri üzerinde birleştirme gerçekleştirir.
multifilewc Birkaç dosyadaki sözcükleri sayar.
pentomino (beş kareli şekil) Pentomino sorunlarına çözüm bulmak için döşeme yerleştirme programı.
pi Quasi-Monte Carlo yöntemini kullanarak Pi'ye tahminde bulunur.
randomtextwriter Düğüm başına 10 GB rastgele metin verileri yazar.
randomwriter Düğüm başına 10 GB rastgele veri yazar.
secondarysort Azaltma aşamasına ikincil bir sıralama tanımlar.
sırala Rastgele yazar tarafından yazılan verileri sıralar.
sudoku Sudoku çözücü.
teragen Terasort için veri oluşturun.
Terasort (belirli bir sıralama algoritması/süreç adı) Terasort'u çalıştırın.
tera doğrulama Terasort sonuçları kontrol ediliyor.
kelime sayısı Giriş dosyalarındaki sözcükleri sayar.
wordmean Giriş dosyalarındaki sözcüklerin ortalama uzunluğunu sayar.
wordmedian Giriş dosyalarındaki sözcüklerin ortanca uzunluğunu sayar.
wordstandarddeviation Giriş dosyalarındaki sözcüklerin uzunluğunun standart sapması sayar.

Wordcount örneğini çalıştırma

  1. SSH kullanarak HDInsight'a bağlanın. değerini kümenizin adıyla değiştirin CLUSTER ve aşağıdaki komutu girin:

    ssh sshuser@CLUSTER-ssh.azurehdinsight.net
    
  2. Örnekleri listelemek için SSH oturumunda aşağıdaki komutu kullanın:

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

    Bu komut, bu belgenin önceki bölümünde yer alan örnek listesini oluşturur.

  3. Belirli bir örnekle ilgili yardım almak için aşağıdaki komutu kullanın. Bu durumda , wordcount örneği:

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

    Aşağıdaki iletiyi alırsınız:

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

    Bu ileti, kaynak belgeler için birkaç giriş yolu sağlayabileceğinizi gösterir. Son yol, çıkışın (kaynak belgelerdeki sözcük sayısı) depolandığı yerdir.

  4. Kümenizle birlikte örnek veriler olarak sağlanan Leonardo da Vinci Not Defterleri'ndeki tüm sözcükleri saymak için aşağıdakileri kullanın:

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

    Bu işin girişi öğesinden /example/data/gutenberg/davinci.txtokunur. Bu örneğin çıktısı içinde /example/data/davinciwordcountdepolanır. Her iki yol da yerel dosya sistemi için değil küme için varsayılan depolamada bulunur.

    Uyarı

    Wordcount örneğinin yardımında belirtildiği gibi, birden çok giriş dosyası da belirtebilirsiniz. Örneğin, 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 hem davinci.txt hem de ulysses.txtsözcükleri sayar.

  5. İş tamamlandıktan sonra çıktıyı görüntülemek için aşağıdaki komutu kullanın:

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

    Bu komut, iş tarafından üretilen tüm çıkış dosyalarını birleştirir. Konsolun çıkışını görüntüler. Çıktı aşağıdaki metne benzer:

    zum     1
    zur     1
    zwanzig 1
    zweite  1
    

    Her satır, bir sözcüğü ve giriş verilerinde kaç kez gerçekleştiğini temsil eder.

Sudoku örneği

Sudoku dokuz adet 3x3'lik kareden oluşan bir mantık bulmacasıdır. Kılavuzdaki bazı hücrelerde sayılar bulunurken, diğerleri boş ve amaç boş hücreleri çözmektir. Önceki bağlantı bulmaca hakkında daha fazla bilgiye sahiptir, ancak bu örneğin amacı boş hücreler için çözmektir. Bu nedenle girişimiz aşağıdaki biçimde bir dosya olmalıdır:

  • Dokuz sütundan oluşan dokuz satır
  • Her sütun bir sayı veya ? (boş bir hücreyi gösterir) içerebilir
  • Hücreler boşlukla ayrılır

Sudoku bulmacaları oluşturmanın belirli bir yolu vardır; sütun veya satırdaki bir sayıyı yineleyemezsiniz. Düzenli bir şekilde oluşturulmuş bir HDInsight kümesi örneği vardır. konumunda bulunur /usr/hdp/*/hadoop/src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/dancing/puzzle1.dta ve aşağıdaki metni içerir:

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

Bu örnek sorunu Sudoku örneği aracılığıyla çalıştırmak için aşağıdaki komutu kullanın:

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

Sonuçlar aşağıdaki metne benzer şekilde görünür:

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

Pi (π) örneği

Pi örneği, pi değerini tahmin etmek için istatistiksel (quasi-Monte Carlo) yöntemini kullanır. Noktalar bir birim karesine rastgele yerleştirilir. Kare bir daire de içerir. Noktaların daire içinde olma olasılığı, dairenin pi/4 alanına eşittir. pi değeri, değerinden 4Rtahmin edilebilir. R, dairenin içindeki nokta sayısının kare içindeki toplam nokta sayısına oranıdır. Kullanılan puan örneği ne kadar büyük olursa tahmin o kadar iyi olur.

Bu örneği çalıştırmak için aşağıdaki komutu kullanın. Bu komut, pi değerini tahmin etmek için her biri 10.000.000 örnek içeren 16 eşleme kullanır:

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

Bu komut tarafından döndürülen değer 3,1415915500000000000000000000a benzer. Başvurular için pi'nin ilk 10 ondalık basamak sayısı 3,1415926535'tir.

10 GB GraySort örneği

GraySort bir karşılaştırmalı sıralamadır. Ölçüm, genellikle en az 100 TB olan büyük miktarda veriyi sıralarken elde edilen sıralama hızıdır (TB/dakika).

Bu örnek, nispeten hızlı bir şekilde çalıştırılabilmesi için 10 GB'lık mütevazı bir veri kullanır. Owen O'Malley ve Arun Murthy tarafından geliştirilen MapReduce uygulamalarını kullanır. Bu uygulamalar 2009 yılında 0,578 TB/dk (173 dakikada 100 TB) ile yıllık genel amaçlı ("Daytona") terabayt sıralama karşılaştırmasını kazandı. Bu ve diğer sıralama karşılaştırmaları hakkında daha fazla bilgi için Sıralama Karşılaştırması sitesine bakın.

Bu örnekte üç MapReduce programı kümesi kullanılır:

  • TeraGen: Sıralanacak veri satırları oluşturan mapreduce programı

  • TeraSort: Giriş verilerini örnekler ve mapreduce kullanarak verileri toplam düzende sıralar

    TeraSort, özel bölümleyici dışında standart bir MapReduce sıralamasıdır. Bölümleyici, her azaltma için anahtar aralığını tanımlayan N-1 örneklenmiş anahtarların sıralanmış bir listesini kullanır. Özellikle, örnek[i-1] = anahtar < örneği[i] <gibi tüm anahtarlar i'yi azaltmak için gönderilir. Bu bölümleyici, i azaltma işleminin çıktılarının i+1 azaltma işleminin çıktısından daha küçük olmasını garanti eder.

  • TeraValidate: Çıkışın genel olarak sıralandığını doğrulayan bir MapReduce programı

    Çıkış dizininde dosya başına bir eşleme oluşturur ve her eşleme her anahtarın öncekinden küçük veya buna eşit olmasını sağlar. Map işlevi, her dosyanın ilk ve son anahtarlarının kayıtlarını oluşturur. reduce işlevi, i dosyasının ilk anahtarının i-1 dosyasının son anahtarından büyük olmasını sağlar. Tüm sorunlar, anahtarların sıra dışı olduğu azaltma aşamasının çıkışı olarak bildirilir.

Veri oluşturmak, sıralamak ve çıkışı doğrulamak için aşağıdaki adımları kullanın:

  1. HDInsight kümesinin varsayılan depolama /example/data/10GB-sort-inputalanına depolanan 10 GB veri oluşturun:

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

    Hadoop'a -Dmapred.map.tasks bu iş için kaç eşleme görevinin kullanılacağını bildirir. Son iki parametre, işe 10 GB veri oluşturmasını ve içinde /example/data/10GB-sort-inputdepolamasını belirtir.

  2. Verileri sıralamak için aşağıdaki komutu kullanın:

    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
    

    Hadoop'a -Dmapred.reduce.tasks iş için kaç azaltma görevi kullanılacağını bildirir. Son iki parametre yalnızca verilerin giriş ve çıkış konumlarıdır.

  3. Sıralamayla oluşturulan verileri doğrulamak için aşağıdakileri kullanın:

    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
    

Sonraki adımlar

Bu makalede, Linux tabanlı HDInsight kümelerine dahil edilen örnekleri çalıştırmayı öğrendiniz. HDInsight ile Pig, Hive ve MapReduce kullanma hakkında öğreticiler için aşağıdaki konulara bakın: