Soru Hadoop giriş bölmelerini nasıl yapıyor?


Bu, Hadoop / HDFS'yi içeren kavramsal bir sorudur. 1 milyar satır içeren bir dosyanız olduğunu söyleyelim. Ve sadelik uğruna, her bir çizginin formda olduğunu düşünelim. <k,v> Burada k başlangıçtan satırın ofseti ve değer satırın içeriğidir.

Şimdi, N harita görevlerini yürütmek istediğimizi söylediğimizde, çerçeve giriş dosyasını N bölmelere ayırıyor ve her harita görevini bu bölme üzerinde çalıştırıyor mu? veya N'yi bölen ve her bir harita görevini oluşturulan bölme üzerinde çalıştıran bir bölümleme işlevi yazmak zorunda mıyız?

Tek bilmek istediğim, bölmelerin dahili olarak yapılıp yapılmadığı yoksa verileri el ile bölmek zorunda mıyız?

Daha spesifik olarak, her defasında map () fonksiyonu ne çağrılır? Key key and Value val parametreler?

Teşekkürler, Deepak


32
2018-05-14 02:27


Menşei




Cevaplar:


InputFormat Bölmeleri sağlamaktan sorumludur.

Genelde, n düğümleriniz varsa, HDFS dosyayı tüm bu düğümler üzerinde dağıtacaktır. Bir işe başlarsanız, varsayılan olarak n mapper olacaktır. Hadoop sayesinde, bir makinedeki mapper bu düğümde saklanan verilerin bir kısmını işleyecektir. Bence bu denir Rack awareness.

Dolayısıyla, uzun bir hikaye kısası yapmak için: Verileri HDFS'ye yükleyin ve bir MR İşi başlatın. Hadoop optimize edilmiş yürütme için ilgilenecek.


23
2018-05-14 13:37



Bir makinedeki eşleyici, diğer makinelerde de verilere erişiyor mu veya sadece makinedeki verileri işler mi? - Deepak
Hadoop sitesinde varsayılan kelime sayısı örneği, InputFormat'ı kullanmaz. Bu örnekte n harita görevlerini çağırırsam ne olur? Her harita görevi dosyadaki tüm içeriğe erişir mi? Tekrar teşekkürler. - Deepak
Öncelikle, oy için teşekkürler :-) --- wordcount örneği, InputFormat'ın bir alt sınıfı olması gereken TextInputFormat kullanır. --- Bölme sayısı eşleştiricilerin sayısıyla eşleştiğinden, her bir haritacı, büyük ihtimalle kendisine en yakın olan verileri işleyecektir. Tabii ki diğer makinelere de erişebilecekti, ancak bu maliyetlerinden dolayı kaçınıldı. - Peter Wippermann


Dosyalar HDFS bloklarına bölünür ve bloklar çoğaltılır. Hadoop veri merkezi prensibine dayanan bir bölünme için bir düğüm atar. Hadoop, haritayı, bloğun bulunduğu düğümlerde yürütmeyi deneyecektir. Çoğaltma nedeniyle, aynı bloğu barındıran birden çok düğüm vardır.

Düğümlerin mevcut olmaması durumunda Hadoop, veri bloğunu barındıran düğüme en yakın olan bir düğümü almaya çalışır. Örneğin, aynı raftaki başka bir düğümü seçebilir. Bir düğüm çeşitli nedenlerle mevcut olmayabilir; tüm harita yuvaları kullanımda olabilir veya düğüm basitçe aşağı inebilir.


14
2018-04-22 13:50





Neyse ki her şey çerçeve ile ilgilenilecek.

Harita indirgeme veri işleme bu kavram tarafından yönlendirilir giriş bölmeleri. Belirli bir uygulama için hesaplanan girdi bölme sayısı, eşleştirici görevlerinin sayısını belirler.

Haritaların sayısı genellikle giriş dosyalarındaki DFS bloklarının sayısına göre belirlenir.

Bu eşleştirici görevlerinin her biri, mümkün olduğunda, giriş bölmesinin saklandığı bir bağımlı düğüme atanır. Kaynak Yöneticisi (veya Hadoop 1'de iseniz JobTracker), giriş bölmelerinin yerel olarak işlenmesini sağlamak için elinden gelenin en iyisini yapar.

Eğer veri yeri Veri düğümlerinin sınırlarını geçen giriş bölünmeleri nedeniyle ulaşılamıyor, bazı veriler bir Veri düğümünden diğer Veri düğümüne aktarılacaktır.

128 MB blok olduğunu ve son kaydın uygun olmadığını varsayalım. Engellemek ve yayılır Blok bsonra veri girişi Blok b düğüme sahip olacak Engellemek

Bu şemaya bir bakın.

enter image description here

İlgili quesitonlara bir göz atın

Hadoop / HDFS dosya bölme hakkında

Hadoop süreç kayıtları blok sınırlarına göre nasıl bölünür?


8
2017-12-13 04:05





InputSplits'in hadoop'ta nasıl çalıştığını daha iyi anlamak için aptallar için hadoop tarafından yazılmış makale. Bu gerçekten yararlıdır.


6
2017-09-02 09:36





Deepak'ın sorduğu şeyin, her biri için girdinin nasıl olduğuyla ilgili olduğunu düşünüyorum. aramak Harita fonksiyonunun her harita üzerinde mevcut olan verilerden ziyade düğüm. Bunu, sorunun ikinci bölümüne dayanarak söylüyorum: Daha spesifik olarak, map () fonksiyonu her seferinde Anahtar tuşu ve Değer val parametresi ne zaman çağrılır?

Aslında, aynı soru beni buraya getirdi ve deneyimli bir hadoop geliştiricisi olsaydım, yukarıdaki cevaplar gibi yorumlamış olabilirim.

Soruyu cevaplamak için

Belirli bir harita düğümündeki dosya, belirlediğimiz değere göre bölünür InputFormat. (Bu java kullanılarak yapılır setInputFormat ()! )

Bir örnek:

conf.setInputFormat (TextInputFormat.class); Burada, TextInputFormat öğesini setInputFormat işlevine geçirerek, her birine ayrı ayrı tedavi edilmesini söyledik. hat Harita düğümündeki giriş dosyasının, harita fonksiyonuna girdi olarak kullanılması. Hat beslemesi veya satır başı geri dönüşü, hattın sonunu işaretlemek için kullanılır. daha fazla bilgi TextInputFormat!

Bu örnekte: Anahtarlar dosyadaki konumdur ve değerler metin satırıdır.

Bu yardımcı olur umarım.


3
2018-03-19 20:53





FileInputFormat Giriş dosyalarının nasıl okunacağını ve döküldüğünü tanımlayan soyut sınıftır. FileInputFormat aşağıdaki işlevsel özellikleri sağlar:  1. giriş olarak kullanılması gereken dosyaları / nesneleri seç  2. Bir dosyayı görev haline getiren girdi bölmelerini tanımlar.

Hadoopp temel işlevselliği gereği, eğer n bölü varsa, n mapper olacaktır.


1
2017-11-25 08:05





Bir Hadoop işi çalıştırıldığında, giriş dosyalarını parçalara böler ve işlem için her bir eşleştirmeyi bir eşleştiriciye atar; buna InputSplit denir.


1
2017-08-01 11:56





Kısa cevap, InputFormat dosyasının bölünmesiyle ilgilenir.

Bu soruya yaklaşma biçimim varsayılan TextInputFormat sınıfına bakmaktır:

Tüm InputFormat sınıfları, bölünmeye dikkat eden FileInputFormat alt sınıfıdır.

Özellikle, FileInputFormat'ın getSplit işlevi, JobContext'te tanımlanan dosya listesinden bir InputSplit listesi oluşturur. Bölme, Min ve Max'in proje xml dosyasında keyfi olarak tanımlanabildiği bayt boyutuna dayanır.


0
2017-11-20 22:37