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

Örnekler, konumundaki HDInsight kümesinde /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jarbulunur. Bu örneklerin kaynak kodu konumundaki HDInsight kümesine /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-exampleseklenmiştir.

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

Örnek Açıklama
aggregatewordcount Giriş dosyalarındaki sözcükleri sayar.
aggregatewordhist 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.
join Sıralanmış, eşit bölümlenmiş veri kümeleri üzerinde birleştirme gerçekleştirir.
multifilewc Birkaç dosyadaki sözcükleri sayar.
pentomino Pentomino sorunlarına çözüm bulmak için döşeme döşeme programı.
Pi Quasi-Monte Carlo yöntemini kullanarak Pi'ye yönelik 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.
sort Rastgele yazar tarafından yazılan verileri sıralar.
Sudoku Sudoku çözücü.
teragen Terasort için veri oluşturma.
terasort Terasort'u çalıştırın.
teravalidate Terasort sonuçları denetleniyor.
wordcount 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. SSH oturumunda, örnekleri listelemek için 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 çeşitli giriş yolları sağlayabildiğinizi gösterir. Son yol, çıkışın (kaynak belgelerdeki sözcük sayısı) depolandığı yerdir.

  4. Kümenizle birlikte örnek veri 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.

    Not

    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.txt sözcükleri sayar.

  5. İş tamamlandıktan sonra çıkışı 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. Çıkışı konsolda 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 3x3 kılavuzdan oluşan bir mantıksal bulmacadır. Kılavuzdaki bazı hücreler sayı içerirken, diğerleri boş ve amaç boş hücreler için çö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ılmış

Sudoku bulmacaları oluşturmanın belirli bir yolu vardır; sütun veya satırdaki bir sayıyı yineleyemezsiniz. HdInsight kümesinin düzgün bir şekilde oluşturulduğunda bir ö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 kalma olasılığı, dairenin alanı pi/4'e 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,141591550000000000000000a 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, büyük miktarlardaki verileri (genellikle en az 100 TB) 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. ve Arun Murthytarafından Owen O'Malley 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ını oluşturan bir 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, sample[i-1] <= key < sample[i] gibi tüm anahtarlar i azaltmak için gönderilir. Bu bölümleyici, azaltma çıkışlarının tümünün azaltma ii+1çıkışından küçük olduğunu 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ı olan konumunda 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örevi kullanılacağını bildirir. Son iki parametre, işe 10 GB veri oluşturmasını ve bunu konumunda /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ıralama tarafından 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: