Hadoop Partitioner: Giriş, Sözdizimi ve Uygulama Hakkında Bilgi Edinin
Yayınlanan: 2020-05-14Bu Hadoop Partitioner öğreticisinin temel amacı, Hadoop'ta kullanılan her parçanın nokta nokta tanımını size vermektir. Bu yazıda Hadoop Partitioner'ın anlamını, Hadoop'ta Partitioner'a olan ihtiyacı ve kötü bir Hadoop bölümleme vakasını ele alacağız.
Hadoop Partitioner'ın ne olduğunu anlayalım.
İçindekiler
Hadoop'ta Partitioner nedir?
Bir Bölücü, çıktıların harita aşamasından indirgeyicilere nasıl gittiğinin yayılmasına izin verir.
Partitioner, orta harita çıktılarının anahtar bölümünü kontrol eder. Anahtar veya anahtarın bir alt kümesi, bölmeyi bir karma işleviyle çıkarmak için kullanılır.
Nitekim Hadoop yapısı karma tabanlı bir bölümleyicidir. Hadoop'taki bu karma işlevi, bölümün türetilmesine yardımcı olur.
Bölüm, anahtar değerine bağlı olarak eşleyici çıktısında çalışır. Aynı anahtar değeri, her eşleyicide aynı bölüme gider. Bu işlemden sonra son bölüm bir redüktöre gönderilir.

Bir bölümün sınıfı, bir anahtar ve değer çiftinin nereye gideceğine karar verir. Bölümleme aşaması haritanın ortasına düşer ve aşamaları azaltır.
Bir Hadoop Partitioner'a neden ihtiyaç duyulduğunu görelim.
Hadoop Partitioner'a ne gerek var?
MapReduce mimarisi iş aşamasında bir girdi veri seti alınır ve anahtar ve değer çiftlerinin bir listesi üretilir. Bu anahtar ve değer çiftleri harita aşamasında oluşturulur. Bu, giriş verileri bölündüğünde meydana gelir, bu daha sonra her bir görev ve harita tarafından işlenir ve bir anahtar ve değer çiftleri listesi üretilir.
Ancak, eşleme bölümü, anahtar ve değere dayalı olarak, azaltma aşamasından hemen önce gerçekleşir. Bu şekilde aynı değerlere sahip tüm anahtarlar birlikte gruplanır ve aynı redüktöre giderler. Böylece haritadan çıkan çıktının redüktör üzerindeki dağılımı dahi sağlanmaktadır.
Hadoop MapReduce bölümleme, doğru anahtarın doğru redüktöre gitmesini sağlayarak eşleyici çıktısının redüktör üzerinde eşit dağılımına izin verir.
Okuyun : Hindistan'da Hadoop Geliştirici Maaşı
Hadoop'ta Hash Partitioner Sözdizimi
Hadoop'ta bir karma bölümleyicinin varsayılan sözdizimi buradadır.
public int getPartition(K tuşu, V değeri
int numReduceTasks)
{
return(key.hashCode() & Integer.MAX_VALUE) % numRedudeTasks;
}
Hadoop Partitioner'ın Uygulanması
Hadoop Partitioner'ın pratik uygulamalarda kullanımına dair bir örnek görmek için, bir binada bir blokta yaşayanlar için verileri içeren aşağıdaki tabloya bakalım.
Daire numarası | İsim | Cinsiyet | Aile üyeleri | Elektrik faturası | |
1101 | Manişa | Dişi | 3 | 1500 | |
1102 | Deepak | Erkek | 4 | 2000 | |
1103 | Sanjay | Erkek | 3 | 1100 | |
1104 | Nidhi | Dişi | 2 | 900 | |
1105 | Prateek | Erkek | 1 | 650 | |
1106 | Gopal | Erkek | 4 | 1800 | |
1107 | Samikşa | Dişi | 2 | 1300 |
Şimdi farklı aile üyesi gruplarında cinsiyete göre en yüksek elektrik faturasını bulan bir program yazalım – 2'den 3'e ve 4'ün altında.

Verilen veriler “/home/Hadoop/HadoopPartitioner” dizinine input.txt olarak kaydedilir.
Tuş bir kalıbı takip eder - özel tuş + dosya adı + satır numarası. Örneğin,
anahtar = giriş@1
Bunun için değer
değer = 1101 \t Manisha \t Kadın \t 3 \t 1500
İşte operasyon nasıl olacak:
- Değeri oku
- Cinsiyetleri ayırmak ve bunları bir dizge değişkeninde saklamak için bölme işlevini kullanın
String[] str = value.toString().split(“\t”, -2);
String cinsiyet = str[2];
- Şimdi cinsiyet bilgilerini gönderin ve veri değerini ley ve değer çifti olarak bölümleme görevine kaydedin
bağlam.write(yeni Metin(cinsiyet), yeni Metin(değer));
- Tüm kayıtlar için tekrarlayın
Çıktı olarak, sıralanmış cinsiyet verilerini ve veri değerini anahtar ve değer çiftleri olarak alacaksınız.
İşte bölümleyici görevinin nasıl gideceği.
İlk olarak, bölümleyici kendisine gönderilen anahtar ve değer çiftlerini girdi olarak alacaktır. Şimdi, verileri farklı segmentlere bölecek.
Giriş
anahtar = cinsiyet alanı değeri
değer = o cinsiyetin kayıt değeri
İşte süreç nasıl ilerleyecek.
- Anahtar değer çiftinden aile üyesi değerini okuyun
String[] str = value.toString().split(“\t”);
int yaş = Tamsayı.parseInt(str[3]);
- Aşağıdaki koşullarla aile üyelerinin değerini kontrol edin
- 2'den 3'e kadar aile üyeleri
- 4 yaşından küçük aile üyeleri
if(aile üyeleri<4)
{
0 döndür;
}
else if(aile üyeleri>=2 && aile üyeleri<=3)
{
%1 döndür numReduceTasks;
}
Başka
{
%2 numReduceTasks döndür;
}
Çıktı
Anahtar ve değer çiftlerinin verileri, verilen üç koleksiyona bölünecektir.
Şunları da öğrenin: Hakkında Bilmeniz Gereken En İyi Hadoop Araçları
Kötü Bölümleme ve Üstesinden Gelme
Giriş verilerinizdeki tuşlardan birinin diğer tuşlardan daha fazla görüneceğini tahmin edebileceğinizi varsayalım. Bu nedenle, tüm anahtarınızı (çok büyük bir sayı) bir bölüme göndermeniz ve ardından kalan anahtarları hashCode() ile diğer tüm bölümlere dağıtmanız gerekebilir.
Yani, şimdi bölümlere bilgi göndermek için iki mekanizmanız var:
- İlk olarak, daha fazlasını gösteren anahtar bir bölüme gönderilecektir.
- İkinci olarak, kalan tüm anahtarlar, hashCode()'larına göre bölümlere gönderilecektir.
Şimdi, diyelim ki hashCode() tekniğiniz diğer anahtarları bölümlere uygun şekilde dağıtmıyor. Bu nedenle, bilgi bölmelerde ve redüktörlerde eşit olarak dağıtılmaz. Bunun nedeni, her bölümün bir redüktörle orantılı olmasıdır.

Bu nedenle, bazı redüktörler diğer redüktörlerden daha büyük miktarda veriye sahip olacaktır. Bu nedenle, kalan redüktörler, eldeki yük nedeniyle bir redüktör (kullanıcı tanımlı anahtarlara sahip) beklemek zorunda kalacaktır.
Bu durumda, verileri farklı redüktörler arasında paylaşacak bir metodoloji izlemelisiniz. Hadoop nihai öğreticimizle Hadoop hakkında daha fazla bilgi edinin.
Çözüm
Hadoop Partitioners hakkındaki bu kılavuzun size yardımcı olduğunu umuyoruz. Bu konuyla ilgili daha fazla bilgi için upGrad'daki uzmanlarla iletişime geçin, bu konuda size yardımcı olalım.
Büyük Veri hakkında daha fazla bilgi edinmek istiyorsanız, çalışan profesyoneller için tasarlanmış ve 7+ vaka çalışması ve proje sağlayan, 14 programlama dili ve aracını kapsayan, pratik uygulamalı Büyük Veride Yazılım Geliştirme Uzmanlığı programında PG Diplomamıza göz atın çalıştaylar, en iyi firmalarla 400 saatten fazla titiz öğrenim ve işe yerleştirme yardımı.
Dünyanın En İyi Üniversitelerinden Online Yazılım Geliştirme Kursları öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.
