Hadoop’un başlangıcı 1990ların sonu 2000lerin başında Google çalışmalarına gidiyor. Google 2003 senesinde Google File Sistemini çıkarıyor. 2004 yılında Map Reduce ortaya çıkıyor.
Ana prensipleri Developerlar’ın network programlamasında çok uğraşmamaları, Developerların nodeların birbiri ile konuşmaları için minimum uğraşmaları,Nodeların birbiri ile minimum haberleşmeleri, Datanın kopyalanması sayesinde hem kullanılabilirlik hemde ulaşılabilirlik artacaktır.
Hadoopda datayı sisteme yüklediğimizde bloklara ayırarak yazar. Örnek vermek gerekirse 64Mb blocklar diyebiliriz. bir çok node paralel bir şekilde çalışır.
Yukarıda bir master node altlarında ise data nodeları vardır. Data nodelarından bir tanesinin çökmesi durumunda master node bunu anlar ve diğerleri ile devam eder.
Hadoop Apache Software foundation’in open source bir projesidir.
Hadoop Facebook,Linkedin,Yahoo gibi dünya devi şirketlerle gelişmektedir.
Hadoop iki ana yapıdan oluşur.
HDFS(Hadoop Distributed File system)
Map Reduce
Hadoop Cluster’i ne demektir?
Hadoop cluster’i tek tek makinalardan oluşan mimaridir. Node sayısı günümüzde binlerce olan birçok şirket vardır. Daha fazla Node daha iyi performans demektir.
HDFS sayesinde Hadoop Clusterinda dataları tutarız. Daha önce blocklara yazdığımızdan bahsetmiştim. Data block block farklı nodelara yazılır. Her block farklı nodelara kopyası yazılır. Örneğin 3 kopya.
MapReduce Nedir?
MapReduce Hadoop Clusterinda datanın işlenmesi sürecidir. İki aşamalı bir süreçtir.
peki Nedir bu HDFS? HDFS Nedir?
HDFS Java’da yazılmış bir file sistemidir. Temeli Google FS dayanır.
Oluşturulması itibarı ile write once yapar. Karışık,rastgele yazma yoktur.Kesintisiz veri okumayı rastgele okumaya tercih edecektir.
daha önce belirttiğim gibi Master Node yani NameNode ve DataNodelardan oluşur. Data Namenodelara block block yazılır. NameNode blockların takibini yaparlar .
örnek vermek gerekirse Namenodeda deneme.txt dosyasının 1,2,3,4,5 nolu blockları oldugu yazar, her block 3 kopya ve farklı farklı nodelara yazılır.
NameNodeların kesintisiz çalışması çok önemlidir. NameNode durarsa cluster ulaşılmaz olur.Bu yüzdende NameNodeları seçerken çok dikkatli davranmak gerekir. Sağlam bir donanım önemlidir. Secondary NameNode Çok önemlidir. Standby nameNode Namenode backup değildir. Active namenode bir problem yaşadığında Standby NameNode otomatik olarak devreye girecektir. Bu yüzden High Availability şeçilmelidir.
HDFS ye nasil ulaşabilirim?
HDFS ye local file sistem üzerinden ulaşabilirsiniz. komutlar linux benzeridir.
hadoop fs -put deneme.txt deneme.txt (deneme.txt dosyasını local file sistemden Hadoopa kopyaladık) /user/zekeriya/deneme.txt
hadoop fs -ls (user home directory)
hadoop fs -ls / (root directory)
hadoop fs -cat /user/zekeriya/deneme.txt
hadoop fs -mkdir veri (yaratma)
hadoop fs -rm -r veri (silme)
MAP REDUCE programlamanın başlangıç örneği
map(String input_key, String input_value)
foreach word w in input_value:
emit(w, 1)
reduce(String output_key,
Iterator<int> intermediate_vals)
set count = 0
foreach v in intermediate_vals:
count += v
emit(output_key, count)
(1000,’Galatasaray sampiyon olur’)
(2000,’beşiktas sampiyon olur’)
(2200,’Galatasaray Türkiyedir’)
Output Mapper
(‘Galatasaray’, 1), (‘sampiyon’, 1), (‘olur’, 1), (‘beşiktas’, 1),
(‘sampiyon, 1), (‘olur’, 1), (‘Galatasaray’, 1), (‘Türkiyedir’, 1)
Intermediate Data Reducer’a gönderilen
(‘Galatasaray’,[1,1])
(‘sampiyon’,[1,1])
(‘olur’,[1])
(‘beşiktas’,[1])
(‘Türkiyedir’,[1])
Reducer’ın son cıktısı
(‘Galatasaray’,2)
(‘sampiyon’,2)
(‘olur’,1)
(‘beşiktas’,1)
(‘Türkiyedir’,1)