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.

Hadoop MapReduce'ta Birleştirme Türleri
Hadoop MapReduce'ta Birleştirme Türleri

İ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.

MapReduce Örneği
1 Dosya
MapReduce Örneği
2 Dosya

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_

MapReduce Örneği

) 1 Adım Zip dosyasını istediğiniz konuma kopyalayın

MapReduce Örneği

) 2 Adım Sıkıştırılmış Dosyayı Açın

sudo tar -xvf MapReduceJoin.tar.gz

MapReduce Örneği

) 3 Adım MapReduceJoin/ dizinine gidin

cd MapReduceJoin/

MapReduce Örneği

) 4 Adım Hadoop'u başlat

$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh

MapReduce Örneği

) 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 /

MapReduce Örneği

) 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

MapReduce Örneği

MapReduce Örneği

) 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

MapReduce Örneği

Sonuçlar ayrıca bir web arayüzü aracılığıyla da görülebilir.

MapReduce Örneği

Şimdi seçin 'Dosya sistemine göz atın' ve yukarıya doğru ilerleyin /output_mapreducejoin

MapReduce Örneği

Açılış bölüm-r-00000

MapReduce Örneği

Sonuçlar gösteriliyor

MapReduce Örneği

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

  1. 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.
  2. 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.