MapReduce - API
Bu bölümde, MapReduce programlamasının işlemlerinde yer alan sınıflara ve yöntemlerine yakından bakacağız. Öncelikle aşağıdakilere odaklanmaya devam edeceğiz -
- JobContext Arayüzü
- İş Sınıfı
- Eşleyici Sınıfı
- Redüktör Sınıfı
JobContext Arayüzü
JobContext arabirimi, MapReduce'ta farklı işleri tanımlayan tüm sınıflar için süper arabirimdir. Görevler çalışırken onlara sağlanan işin salt okunur bir görünümünü verir.
Aşağıdakiler, JobContext arayüzünün alt arayüzleridir.
S.No. | Alt Arayüz Tanımı |
---|---|
1. | MapContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
Eşleştiriciye verilen bağlamı tanımlar. |
2. | ReduceContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
Redüktöre aktarılan bağlamı tanımlar. |
Job sınıfı, JobContext arayüzünü uygulayan ana sınıftır.
İş Sınıfı
Job sınıfı, MapReduce API'deki en önemli sınıftır. Kullanıcının işi yapılandırmasına, göndermesine, yürütülmesini kontrol etmesine ve durumu sorgulamasına olanak tanır. Ayar yöntemleri yalnızca iş gönderilinceye kadar çalışır, daha sonra bir IllegalStateException oluşturur.
Normalde, kullanıcı uygulamayı oluşturur, işin çeşitli yönlerini tanımlar ve ardından işi gönderir ve ilerlemesini izler.
İşte bir işin nasıl gönderileceğine dair bir örnek -
// Create a new Job
Job job = new Job(new Configuration());
job.setJarByClass(MyJob.class);
// Specify various job-specific parameters
job.setJobName("myjob");
job.setInputPath(new Path("in"));
job.setOutputPath(new Path("out"));
job.setMapperClass(MyJob.MyMapper.class);
job.setReducerClass(MyJob.MyReducer.class);
// Submit the job, then poll for progress until the job is complete
job.waitForCompletion(true);
İnşaatçılar
Job sınıfının yapıcı özeti aşağıdadır.
S.No | Yapıcı Özeti |
---|---|
1 | Job() |
2 | Job(Yapılandırma konf.) |
3 | Job(Konfigürasyon conf, String jobName) |
Yöntemler
Job sınıfının önemli yöntemlerinden bazıları aşağıdaki gibidir -
S.No | Yöntem Açıklama |
---|---|
1 | getJobName()
Kullanıcı tarafından belirlenen iş adı. |
2 | getJobState() İşin mevcut durumunu döndürür. |
3 | isComplete() İşin bitip bitmediğini kontrol eder. |
4 | setInputFormatClass() İş için InputFormat'ı ayarlar. |
5 | setJobName(String name) Kullanıcı tarafından belirlenen iş adını ayarlar. |
6 | setOutputFormatClass() İş için Çıktı Formatını ayarlar. |
7 | setMapperClass(Class) İş için Eşleştiriciyi ayarlar. |
8 | setReducerClass(Class) İş için Redüktörü ayarlar. |
9 | setPartitionerClass(Class) İş için Partitioner'ı ayarlar. |
10 | setCombinerClass(Class) İş için Birleştiriciyi ayarlar. |
Eşleyici Sınıfı
Mapper sınıfı, Map işini tanımlar. Giriş anahtar / değer çiftlerini bir dizi ara anahtar / değer çifti ile eşler. Haritalar, giriş kayıtlarını ara kayıtlara dönüştüren bağımsız görevlerdir. Dönüştürülen ara kayıtların girdi kayıtlarıyla aynı türde olması gerekmez. Verilen bir girdi çifti, sıfır veya birçok çıktı çiftiyle eşleşebilir.
Yöntem
mapMapper sınıfının en belirgin yöntemidir. Sözdizimi aşağıda tanımlanmıştır -
map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)
Bu yöntem, giriş bölümündeki her anahtar / değer çifti için bir kez çağrılır.
Redüktör Sınıfı
Reducer sınıfı, MapReduce'ta Reduce işini tanımlar. Bir anahtarı paylaşan bir dizi ara değeri daha küçük bir değer kümesine indirger. İndirgeyici uygulamaları JobContext.getConfiguration () yöntemi aracılığıyla bir işin Yapılandırmasına erişebilir. Bir Redüktörün üç ana aşaması vardır - Shuffle, Sort ve Reduce.
Shuffle - Reducer, ağ üzerinde HTTP kullanarak her Eşleştiriciden sıralanmış çıktıları kopyalar.
Sort- Çerçeve, Reducer girişlerini anahtarlarla birleştirerek sıralar (çünkü farklı Mappers aynı anahtarı çıkarmış olabilir). Karıştırma ve sıralama aşamaları aynı anda gerçekleşir, yani çıktılar getirilirken birleştirilirler.
Reduce - Bu aşamada, sıralanmış girdilerdeki her <anahtar, (değerler koleksiyonu)> için azaltma (Nesne, Yinelenebilir, Bağlam) yöntemi çağrılır.
Yöntem
reduceReducer sınıfının en öne çıkan yöntemidir. Sözdizimi aşağıda tanımlanmıştır -
reduce(KEYIN key, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context context)
Bu yöntem, anahtar / değer çiftleri koleksiyonundaki her anahtar için bir kez çağrılır.