Hadoop MapReduce Katıl ve Örnekle Say
Mapreduce'a Katılın Nedir?
Mapreduce'a Katılın işlemi iki büyük veri kümesini birleştirmek için kullanılır. Ancak bu süreç, gerçek birleştirme işlemini gerçekleştirmek için çok sayıda kod yazmayı gerektirir. İki veri kümesinin birleştirilmesi, her veri kümesinin boyutunun karşılaştırılmasıyla başlar. Bir veri kümesi diğer veri kümesine göre daha küçükse, kümedeki her veri düğümüne daha küçük veri kümesi dağıtılır.
MapReduce'ta bir birleştirme dağıtıldığında, Mapper veya Redüktör, büyük veri kümesinden eşleşen kayıtları aramak için daha küçük veri kümesini kullanır ve ardından çıktı kayıtları oluşturmak için bu kayıtları birleştirir.
Üyelik Türleri
Gerçek birleştirmenin gerçekleştirildiği yere bağlı olarak Hadoop'taki birleştirmeler şu şekilde sınıflandırılır:
1. Harita tarafı birleştirme – Birleştirmenin eşleştirici tarafından gerçekleştirilmesine harita tarafı birleştirme adı verilir. Bu türde birleştirme, veriler harita işlevi tarafından gerçekten tüketilmeden önce gerçekleştirilir. Her haritaya girişin bölüm biçiminde ve sıralı olması zorunludur. Ayrıca eşit sayıda bölüm bulunmalı ve birleştirme anahtarına göre sıralanmalıdır.
2. Yan birleştirmeyi azalt – Birleştirmenin redüktör ile yapılmasına redüksiyon tarafı birleştirme adı verilir. Bu birleştirmede yapılandırılmış bir biçimde (veya bölümlenmiş) bir veri kümesine sahip olma zorunluluğu yoktur.
Burada, harita tarafı işleme, birleştirme anahtarını ve her iki tablonun karşılık gelen demetlerini yayar. Bu işlemin bir sonucu olarak, aynı birleştirme anahtarına sahip tüm tuple'lar aynı azaltıcıya düşer ve bu daha sonra kayıtları aynı birleştirme anahtarıyla birleştirir.
Hadoop'taki birleştirmelerin genel süreç akışı aşağıdaki şemada gösterilmektedir.

İki Veri Kümesine Nasıl Birleştirilir: MapReduce Örneği
İki Farklı Dosyada (aşağıda gösterilmektedir) iki Veri Kümesi vardır. Anahtar Dept_ID her iki dosyada da ortaktır. Amaç, bu dosyaları birleştirmek için MapReduce join'i kullanmaktır.


Giriş: Giriş veri seti bir txt dosyasıdır, DeptName.txt ve DepStrength.txt
Giriş Dosyalarını Buradan İndirin
Hadoop'un kurulu olduğundan emin olun. MapReduce join örneğinin gerçek işlemine başlamadan önce, kullanıcıyı 'hduser' olarak değiştirin (Hadoop yapılandırması sırasında kullanılan kimlik, Hadoop yapılandırmanız sırasında kullanılan kullanıcı kimliğine geçebilirsiniz).
su - hduser_
) 1 Adım Zip dosyasını istediğiniz konuma kopyalayın
) 2 Adım Sıkıştırılmış Dosyayı Açın
sudo tar -xvf MapReduceJoin.tar.gz
) 3 Adım MapReduceJoin/ dizinine gidin
cd MapReduceJoin/
) 4 Adım Hadoop'u başlat
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
) 5 Adım DeptStrength.txt ve DeptName.txt, bu MapReduce join örnek programı için kullanılan giriş dosyalarıdır.
Bu dosyanın aşağıdaki komutu kullanarak HDFS'ye kopyalanması gerekiyor.
$HADOOP_HOME/bin/hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /
) 6 Adım Aşağıdaki komutu kullanarak programı çalıştırın-
$HADOOP_HOME/bin/hadoop jar MapReduceJoin.jar MapReduceJoin/JoinDriver/DeptStrength.txt /DeptName.txt /output_mapreducejoin
) 7 Adım Yürütmeden sonra çıktı dosyası ('part-00000' adlı) HDFS'de /output_mapreducejoin dizininde saklanacaktır.
Sonuçlar komut satırı arayüzü kullanılarak görülebilir
$HADOOP_HOME/bin/hdfs dfs -cat /output_mapreducejoin/part-00000
Sonuçlar ayrıca bir web arayüzü aracılığıyla da görülebilir.
Şimdi seçin 'Dosya sistemine göz atın' ve yukarıya doğru ilerleyin /output_mapreducejoin
Açılış bölüm-r-00000
Sonuçlar gösteriliyor
NOT: Bu programı bir dahaki sefere çalıştırmadan önce, /output_mapreducejoin çıktı dizinini silmeniz gerekeceğini lütfen unutmayın.
$HADOOP_HOME/bin/hdfs dfs -rm -r /output_mapreducejoin
Bunun alternatifi çıktı dizini için farklı bir ad kullanmaktır.
MapReduce'ta Sayaç Nedir?
A MapReduce'taki sayaç MapReduce işleri ve etkinlikleri hakkında istatistiksel bilgilerin toplanması ve ölçülmesi için kullanılan bir mekanizmadır. Sayaçlar, MapReduce'ta gerçekleşen operasyon sayısı ve operasyonun ilerleyişi gibi çeşitli iş istatistiklerini takip eder. Sayaçlar MapReduce'ta Sorun teşhisi için kullanılır.
Hadoop Sayaçları, bir haritanın veya azaltmanın koduna bir günlük mesajı koymaya benzer. Bu bilgi MapReduce iş sürecindeki bir sorunun teşhisinde faydalı olabilir.
Tipik olarak, Hadoop'taki bu sayaçlar bir programda tanımlanır (harita veya azaltma) ve yürütme sırasında belirli bir olay veya koşul (bu sayaca özel) meydana geldiğinde artırılır. Hadoop sayaçlarının çok iyi bir uygulaması, bir giriş veri kümesindeki geçerli ve geçersiz kayıtları izlemektir.
MapReduce Sayaçlarının Türleri
Temelde 2 tip vardır Harita indirgeme Sayaçlar
- Hadoop Yerleşik sayaçlar:İş başına mevcut olan bazı yerleşik Hadoop sayaçları vardır. Aşağıda yerleşik sayaç grupları bulunmaktadır.
- MapReduce Görev Sayaçları – Yürütme süresi boyunca göreve özgü bilgileri (örneğin, giriş kayıtlarının sayısı) toplar.
- Dosya Sistemi Sayaçları – Bir görevin okuduğu veya yazdığı bayt sayısı gibi bilgileri toplar
- FileInputFormat Sayaçları – FileInputFormat aracılığıyla okunan bayt sayısı bilgisini toplar
- FileOutputFormat Sayaçları – FileOutputFormat aracılığıyla yazılan belirli sayıda baytlık bilgileri toplar
- İş Sayaçları – Bu sayaçlar JobTracker tarafından kullanılır. Onlar tarafından toplanan istatistikler arasında örneğin bir iş için başlatılan görev sayısı yer alır.
- Kullanıcı Tanımlı Sayaçlar
Yerleşik sayaçlara ek olarak kullanıcı, aşağıdakilerin sağladığı benzer işlevleri kullanarak kendi sayaçlarını tanımlayabilir: Programlama dilleri. Örneğin, Java 'enum' kullanıcı tanımlı sayaçları tanımlamak için kullanılır.
Sayaçlar Örneği
Eksik ve geçersiz değerlerin sayısını saymak için Sayaçlı örnek bir MapClass. Bu eğitimde kullanılan giriş veri dosyası Giriş veri setimiz bir CSV dosyasıdır, SatışOcak2009.csv
public static class MapClass extends MapReduceBase implements Mapper<LongWritable, Text, Text, Text> { static enum SalesCounters { MISSING, INVALID }; public void map ( LongWritable key, Text value, OutputCollector<Text, Text> output, Reporter reporter) throws IOException { //Input string is split using ',' and stored in 'fields' array String fields[] = value.toString().split(",", -20); //Value at 4th index is country. It is stored in 'country' variable String country = fields[4]; //Value at 8th index is sales data. It is stored in 'sales' variable String sales = fields[8]; if (country.length() == 0) { reporter.incrCounter(SalesCounters.MISSING, 1); } else if (sales.startsWith("\"")) { reporter.incrCounter(SalesCounters.INVALID, 1); } else { output.collect(new Text(country), new Text(sales + ",1")); } } }
Yukarıdaki kod pasajı, Hadoop Harita Azaltma'daki sayaçların örnek bir uygulamasını göstermektedir.
Burada, Satış Sayaçları kullanılarak tanımlanan bir sayaçtır 'Sıralama'. Saymak için kullanılır EKSİK ve GEÇERSİZ giriş kayıtları.
Kod pasajında, eğer 'ülke' alanın uzunluğu sıfırsa değeri eksiktir ve dolayısıyla karşılık gelen sayaç Satış Sayaçları.MISSING artırılır.
Sonraki ise 'satış' alan a ile başlar " bu durumda kayıt GEÇERSİZ olarak kabul edilir. Bu, artan sayaçla gösterilir Satış Sayaçları.GEÇERSİZ.