HDInsight'ta bulunan MapReduce örneklerini çalıştırma
HDInsight üzerinde Apache Hadoop ile birlikte verilen MapReduce örneklerini çalıştırmayı öğrenin.
Önkoşullar
HDInsight üzerinde bir Apache Hadoop kümesi. Bkz. Linux'ta HDInsight kullanmaya başlama.
Bir SSH istemcisi. Daha fazla bilgi için bkz. SSH kullanarak HDInsight'a (Apache Hadoop) bağlanma.
MapReduce örnekleri
Örnekler, konumundaki HDInsight kümesinde /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar
bulunur. Bu örneklerin kaynak kodu konumundaki HDInsight kümesine /usr/hdp/current/hadoop-client/src/hadoop-mapreduce-project/hadoop-mapreduce-examples
eklenmiş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
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
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.
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.
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.txt
okunur. Bu örneğin çıktısı içinde/example/data/davinciwordcount
depolanı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.İş 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 4R
tahmin 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 Murthy
tarafı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
i
i+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:
HDInsight kümesinin varsayılan depolama
/example/data/10GB-sort-input
alanı 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-input
depolamasını belirtir.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.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: