Mapreduce'ta Join nedir?
Mapreduce Join işlemi, iki büyük veri kümesini birleştirmek için kullanılır. Ancak bu işlem, gerçek birleştirme işlemini gerçekleştirmek için çok sayıda kod yazmayı içerir. İki veri kümesini birleştirmek, her veri kümesinin boyutunu karşılaştırarak başlar. Bir veri kümesi diğer veri kümesine kıyasla daha küçükse, kümedeki her veri düğümüne daha küçük veri kümesi dağıtılır.
MapReduce'da bir birleştirme dağıtıldıktan sonra, Mapper veya Reducer, büyük veri kümesindeki eşleşen kayıtlara yönelik bir arama gerçekleştirmek için daha küçük veri kümesini kullanır ve ardından çıktı kayıtlarını oluşturmak için bu kayıtları birleştirir.
Bu eğitimde öğreneceksiniz-
- MapReduce'ta Katılım nedir?
- Birleştirme Türleri
- İki Veri Kümesine Nasıl Katılırsınız: MapReduce Örneği
- MapReduce'ta Sayaç nedir?
- MapReduce Sayaç Türleri
- Sayaç Örneği
Birleştirme Türleri
Gerçek birleştirmenin gerçekleştirildiği yere bağlı olarak, Hadoop'taki birleşimler olarak sınıflandırılır:
1. Harita tarafı birleştirme - Birleştirme eşleyici tarafından gerçekleştirildiğinde, buna harita tarafı birleştirme denir. Bu türde birleştirme, veriler gerçekten harita işlevi tarafından tüketilmeden önce gerçekleştirilir. Her haritaya yapılan girdinin bölüm şeklinde ve sıralı düzende olması zorunludur. Ayrıca, eşit sayıda bölüm olmalı ve birleştirme anahtarına göre sıralanmalıdır.
2. İndirgeme tarafı birleştirme - Birleştirme redüktör tarafından yapıldığında, buna indirgeme tarafı birleştirme denir. Bu birleşimde yapılandırılmış bir formda (veya bölümlenmiş) bir veri kümesine sahip olma zorunluluğu yoktur.
Burada, harita tarafı işleme, her iki tablonun birleştirme anahtarını ve karşılık gelen tuplelarını yayınlar. Bu işlemin bir sonucu olarak, aynı birleştirme anahtarına sahip tüm demetler aynı indirgeyiciye düşer ve daha sonra kayıtları aynı birleştirme anahtarıyla birleştirir.
Hadoop'taki birleştirme işlemlerinin genel bir süreç akışı aşağıdaki diyagramda gösterilmektedir.
İki Veri Kümesine Nasıl Katılırsınız: MapReduce Örneği
İki Farklı Dosyada iki Veri Kümesi vardır (aşağıda gösterilmiştir). Anahtar Dept_ID her iki dosyada da ortaktır. Amaç, bu dosyaları birleştirmek için MapReduce Join kullanmaktır.
Girdi: Girdi veri kümesi bir txt dosyası, DeptName.txt & DepStrength.txt'dir
Giriş Dosyalarını Buradan İndirin
Hadoop'un kurulu olduğundan emin olun. MapReduce Join örneği gerçek sürecine başlamadan önce, kullanıcıyı 'hduser' olarak değiştirin (Hadoop yapılandırmasında kullanılan kimlik, Hadoop yapılandırmanız sırasında kullanılan kullanıcı kimliğine geçebilirsiniz).
su - hduser_
Adım 1) Zip dosyasını seçtiğiniz konuma kopyalayın
Adım 2) Sıkıştırılmış Dosyayı Açın
sudo tar -xvf MapReduceJoin.tar.gz
Adım 3) MapReduceJoin / dizinine gidin
cd MapReduceJoin/
Adım 4) Hadoop'u başlatın
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
Adım 5) DeptStrength.txt ve DeptName.txt, bu MapReduce Join örnek programı için kullanılan girdi dosyalarıdır.
Bu dosyanın aşağıdaki komut kullanılarak HDFS'ye kopyalanması gerekir.
$HADOOP_HOME/bin/hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /
Adım 6) 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
Adım 7) Yürütmeden sonra, çıktı dosyası ('part-00000' olarak adlandırılır) HDFS'de / output_mapreducejoin dizininde saklanı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 'Dosya sistemine gözat'ı seçin ve / output_mapreducejoin'e gidin
Açık yarı r-00000
Sonuçlar gösterilir
NOT: Bu programı bir sonraki sefer çalıştırmadan önce, çıktı dizinini / output_mapreducejoin'i silmeniz gerektiğini lütfen unutmayın.
$HADOOP_HOME/bin/hdfs dfs -rm -r /output_mapreducejoin
Alternatif, çıktı dizini için farklı bir ad kullanmaktır.
MapReduce'ta Sayaç nedir?
MapReduce'ta bir Sayaç, MapReduce işleri ve olayları hakkında istatistiksel bilgileri toplamak ve ölçmek için kullanılan bir mekanizmadır. Sayaçlar, gerçekleşen işlem sayısı ve işlemin ilerlemesi gibi MapReduce'daki çeşitli iş istatistiklerini takip eder. MapReduce'ta Sorun teşhisi için sayaçlar kullanılır.
Hadoop Sayaçları, bir harita veya küçültme koduna günlük mesajı koymaya benzer. Bu bilgiler, MapReduce iş işlemede bir sorunun teşhisi için yararlı olabilir.
Tipik olarak, Hadoop'taki bu sayaçlar bir programda tanımlanır (eşleme veya azaltma) ve belirli bir olay veya koşul (o sayaca özgü) meydana geldiğinde yürütme sırasında 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ç Türleri
Temel olarak 2 tür MapReduce Sayacı vardır
- Hadoop Yerleşik sayaçları: İş başına 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ş kaydı sayısı) toplar.
- FileSystem Sayaçları - Bir görev tarafından okunan veya yazılan bayt sayısı gibi bilgileri toplar
- FileInputFormat Sayaçları - FileInputFormat aracılığıyla okunan birkaç bayt bilgisini toplar
- FileOutputFormat Counters - FileOutputFormat aracılığıyla yazılan birkaç bayt bilgisini toplar
- İş Sayaçları - Bu sayaçlar JobTracker tarafından kullanılır. Onlar tarafından toplanan istatistikler, örneğin bir iş için başlatılan görev sayısını içerir.
- Kullanıcı Tanımlı Sayaçlar
Yerleşik sayaçlara ek olarak, bir kullanıcı programlama dilleri tarafından sağlanan benzer işlevleri kullanarak kendi sayaçlarını tanımlayabilir. Örneğin, Java'da 'enum' kullanıcı tanımlı sayaçları tanımlamak için kullanılır.
Sayaç Örneği
Eksik ve geçersiz değerlerin sayısını saymak için Sayaçlı örnek bir MapClass. Bu eğiticide kullanılan girdi veri dosyası Girdi veri kümemiz bir CSV dosyası, SalesJan2009.csv'dir
public static class MapClassextends MapReduceBaseimplements Mapper{static enum SalesCounters { MISSING, INVALID };public void map ( LongWritable key, Text value,OutputCollector output,Reporter reporter) throws IOException{//Input string is split using ',' and stored in 'fields' arrayString fields[] = value.toString().split(",", -20);//Value at 4th index is country. It is stored in 'country' variableString country = fields[4];//Value at 8th index is sales data. It is stored in 'sales' variableString 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 parçacığı, Hadoop Map Reduce'daki sayaçların örnek uygulamasını gösterir.
Burada SalesCounters , 'enum' kullanılarak tanımlanan bir sayaçtır . EKSİK ve GEÇERSİZ girdi kayıtlarını saymak için kullanılır .
Kod parçacığında, 'ülke' alanının uzunluğu sıfırsa değeri eksiktir ve dolayısıyla ilgili sayaç SalesCounters.MISSING artırılır.
Ardından, 'satış' alanı bir " ile başlıyorsa kayıt GEÇERSİZ olarak kabul edilir. Bu, SalesCounters.INVALID sayacının artırılmasıyla gösterilir.