dijitalturk.comdijitalturk.com/.../uploads/2016/12/Hadoop-17_08_2016-1.docx · Web view2014...
Transcript of dijitalturk.comdijitalturk.com/.../uploads/2016/12/Hadoop-17_08_2016-1.docx · Web view2014...
T.C.
MALTEPE ÜNİVERSİTESİ
FEN BİLİMLERİ ENSTİTÜSÜ
BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİM DALI
HADOOP VE BÜYÜK VERİ
Ahmet Veysel TOPLU
Yüksek Lisans Projesi
Proje Danışmanı
Doç. Dr. Şenol Zafer ERDOĞAN
İSTANBUL – 2016
T.C.
MALTEPE ÜNİVERSİTESİ
FEN BİLİMLERİ ENSTİTÜSÜ
BİLGİSAYAR MÜHENDİSLİĞİ ANABİLİM DALI
HADOOP VE BÜYÜK VERİ
YÜKSEK LİSANS PROJESİ
Ahmet Veysel TOPLU
Proje Danışmanı
Doç. Dr. Şenol Zafer ERDOĞAN
İSTANBUL – 2016
ÖZETGünümüzde artık birçok noktadan gelen veriler birleştirilip çok büyük yığınlar
oluşturmaktadır. Bu durumda analizin gerçekleştirilmesi zorlaşabilmektedir. Bu sorunu
girebilmek için, dağıtık sistemler diye adlandırılan kaynakların paylaşımını sağlayan
yapılar kullanılmaya başlanmıştır. Büyük verilerin ölçeklenebilir, güvenli, hızlı ve
kararlı şekilde analizleri için bu sistemler tercih edilmektedir. Apache Hadoop, dağıtık
sistemlerde kullanılan yazılımlardan bir tanesidir. Bu yazılım, Google Dosya Sistemi
altyapısı üzerinde geliştirilmiş ve harita azaltma (MapReduce) algoritmasını kullanarak
verileri işlemeyi sağlamıştır. Bu çalışmada Hadoop hakkında genel bilgiler verilip,
örnek bir uygulama ile Hadoop yapısı anlatılmaktadır.
Anahtar Kelimeler: Hadoop, Büyük veri, Analiz, Eşleme, Azaltma, Java, Dağıtık
sistemler.
ABSTRACTToday, many types of data which come from various points, are gathered and they
produce piles of masses. In this cases, performing of analysis becomes more tedious. In
order to solve these kinds of problems, structures which enable resource sharing called
distributed systems are begun to be used. These systems are preferred due to their
scalability, dependability, facticity and speed in data analysis. Apache Hadoop is an
application used in distributed systems. This application is developed in Google File
System infrastructure and enables data processing by using mapreduce algorithm. In this
study, general information about Hadoop is given and Hadoop’s structure is explained
with an sample application.
Keywords: Hadoop, Big data, Analysis, Map, Reduce , Java, Distributed Systems.
III
İÇİNDEKİLER
ÖZET...............................................................................................................................III
ABSTRACT....................................................................................................................III
İÇİNDEKİLER................................................................................................................IV
KISALTMALAR..............................................................................................................V
ŞEKİL LİSTESİ..............................................................................................................VI
TABLO LİSTESİ.........................................................................................................VIII
1. GİRİŞ.........................................................................................................................1
2. HADOOP...................................................................................................................3
2.1 Dağıtık Sistemler (Distributed Systems)............................................................3
2.2 Eşleme Azaltma (MapReduce)...........................................................................4
2.3 Hadoop Altyapısı................................................................................................7
2.3.1 HDFS – Hadoop Distributed File System.........................................................7
2.3.2 İsim Düğümü.....................................................................................................9
2.3.3 Veri Düğümü.....................................................................................................9
2.3.4 Veri Sıkıştırması................................................................................................9
2.3.5 HADOOP’un Olumlu ve Olumsuz Tarafları..................................................10
2.3.6 Harici HADOOP Bileşenleri...........................................................................11
3. HADOOP KULLANIMI HAKKINDA GENEL BİLGİLER..................................12
4. KURULUM..............................................................................................................14
4.1 Kurulum Adımları.............................................................................................14
4.2 HADOOP Sistem Kurulumu............................................................................21
4.2.1 Sahte Dağıtık Kurulum...................................................................................21
5. SONUÇ....................................................................................................................32
6. Kaynakça..................................................................................................................33
IV
KISALTMALAR
Kısaltma Türkçesi İngilizcesi
RDBMS Bağlantılı Veri Tabanı Yönetim
Sistemi
Relational Database Management
System
HDFS Hadoop Dosya Sistemi Hadoop File System
SQL Yapılandırılmış Sorgu Dili Structured Query Language
RAID Bağımsız Disklerin Artıklı Dizisi Redundant Array of Inexpensive
Disks
TCP/IP İletim kontrol protokolü / İnternet
Protokolü
Transmission Control Protocol /
Internet Protocol
JDK Java Geliştirici Paketi Java Development Kit
SSH Güvenli Kabuk Secure Shell
IPv6 İnternet Protokolü Versiyon 6 Internet Protocol Version 6
V
ŞEKİL LİSTESİ
Şekil 1.1: Dünya çapında 60sn içerisinde gerçekleşen işlemler.......................................1
Şekil 2.1.1: Farklı kümelere ayrılmış bir dağıtık sistem şeması.......................................4
Şekil 2.2.1: Bir sunucu ile dağıtık sunucu yapısı arasındaki hız farkı..............................5
Şekil 2.2.2: Eşleme ve azaltma işlemlerinin örnek bir veri ile uygulanış şeması.............6
Şekil 2.2.3: İş planlayıcı ve iş yapıcı katman yapısı.........................................................7
Şekil 2.3.1.1: HDFS ve eşleme azaltma yapısının bağlantı şeması..................................8
Şekil 2.3.3.1: Veri düğümü altında yedeklenen veri bloklarının yapısı............................9
Şekil 3.1: Gittigidiyor.com sitesi Hadoop kullanım alanları..........................................12
Şekil 4.1.1: “Maven Project” proje oluşturma ekranı....................................................14
Şekil 4.1.2: Proje bilgilerinin doldurulacağı ekran.........................................................15
Şekil 4.1.3: Proje sınıfı(class) yapısı görünümü.............................................................15
Şekil 4.1.4: Projeye tanımlanacak eklentilerin ekran görüntüsü.....................................16
Şekil 4.1.5: Eşleme sınıfı kodları....................................................................................17
Şekil 4.1.6: Azaltma sınıfı kodları..................................................................................18
Şekil 4.1.7: İş sınıfı kodları.............................................................................................19
Şekil 4.1.8: Sınıf tanımlamaları yapılmış Eclipse görünümü..........................................20
Şekil 4.1.9: Projenin derlenmesi.....................................................................................20
Şekil 4.1.10: Çalıştırılabilir eşleme azaltma “.jar” uygulaması......................................20
Şekil 4.2.1.1: JDK kurulum komutu uygulanması..........................................................21
Şekil 4.2.1.2: Ubuntu sisteminde kullanıcı tanımlama ekranı........................................22
Şekil 4.2.1.3: Hduser yetkilendirmesi gönümü...............................................................22
Şekil 4.2.1.4: Ssh kurulumu ekran görüntüsü.................................................................23
Şekil 4.2.1.5: Ssh anahtarının üretildiği ekran görüntüsüdür..........................................23
Şekil 4.2.1.6: Kök kullanıcıya geçiş işlemi ekranı..........................................................23
Şekil 4.2.1.7: Yetkilendirme işlemi ekranı......................................................................24
Şekil 4.2.1.8: Klasörlerin oluşturulduğu ekran...............................................................24
Şekil 4.2.1.9: Hadoop dosyalarının indirildiği ekran görüntüsü.....................................25
Şekil 4.2.1.10: İsim düğümü biçimlendirme ekranı........................................................28
Şekil 4.2.1.11: Hadoop servisleri başlatma ekranı..........................................................28
Şekil 4.2.1.12: Eşleme azaltma uygulaması çalıştırılma ekranı......................................29
Şekil 4.2.1.13: “/data” klasörü içindeki veri miktarı görünümü.....................................29
Şekil 4.2.1.14: Hadoop sisteminin tarayıcı ekranından görünümü.................................30
VI
Şekil 4.2.1.15: İşlenmiş verilerin görünümü...................................................................31
Şekil 4.2.1.16: Derlenen verilerin sonuç çıktısı..............................................................31
VII
TABLO LİSTESİ
Tablo 2.3.4.1: Hadoop sıkıştırma kütüphaneleri. 10
Tablo 3.1: Hadoop yapısını kullanan bazı firmalar. 13
VIII
1. GİRİŞ
Günümüzde teknolojinin ilerlemesiyle birlikte artık neredeyse her elektronik cihaz,
kullanım şekline göre veri üretmeye başlamıştır. Bu verilerin sağlıklı olarak saklanması
ihtiyacı ortaya çıkmış ve birçok sebepten (güvenlik, hata tespitleri, kullanıcı
davranışlarını yorumlama) bu verilerin analizi ve yorumlanabilir hale gelmesi
gerekmiştir.
Dünyada 3.000.000.000‘ın üzerinde internet kullanıcısı bulunmaktadır1, 2015 yılında
yapılan bir araştırmaya göre o tarihe kadar Twitter’da toplam 13 milyar Tweet
atılmıştır.2 2014 yılında çıkan bir habere göre Türkiye’de 56,4 milyon adet kredi kartı
basılmıştır. Yine 2014 yılında Gittigidiyor.com aylık ziyaretçi sayısını 27,5 milyon, ilk
üç ayındaki ürün satış adedi ise 2 milyon 670 bin olarak açıklamıştır3. Google’da ise
günde yaklaşık 3 milyar arama yapılmaktadır4. Bu bilgilere bakarak ne kadar büyük
verilerin oluşabileceği ve bunların saklanıp analiz edilebileceği tahmin edilebilir. İşte bu
veriler karşımıza büyük veri (big data) olarak çıkmaktadır.
Şekil 1.1: Dünya çapında 60sn içerisinde gerçekleşen işlemler.5
1 internetlivestats.com2 http://expandedramblings.com/3 http://webrazzi.com/2014/05/20/gittigidiyordan-ilk-ceyrek-raporu-2-milyon-670-bin-urun-satisi/4 http://www.worldometers.info/tr/5 https://unteaglestrategies.com/2015/10/04/the-evolution-of-the-internet/
1
Ortalıkta bu kadar çok veri varken bunlar hızlı ve doğru şekilde analiz edilmezse bir
anlam ifade etmeyecektir. Önemli olan, bu verilerin içindeki ihtiyaç duyulan bilgiye
ulaşabilmek ve amacına uygun şekilde yorumlanabilir hale getirmektir.
Normal şartlarda kişisel bilgisayarda bir mp3 aramak istenildiğinde bile sonucu birkaç
saniyede alıyorken, internet ortamında standart veri tabanı sistemlerinde petabyte
seviyelerine çıkabilen veriler içerisinde arama yapmanın ne kadar güç bir işlem olacağı
tahmin edilebilir.
Verilerin tablolarda satır ve sütunlar halinde tutulduğu klasik sistemlerde İlişkisel Veri
tabanı Yönetim Sistemi (RDBMS – Relational Database Management System)
kullanılmaktadır ve bu büyüklükteki verileri işlemek bu sistemlerde hem maliyet hem
de performans açısından çok zor olacaktır. Bu sebepten büyük verilerin hızlı bir biçimde
işlenmesi ve anlamlı sonuçlar elde edilebilmesi için farklı dağıtık yapılar
oluşturulmuştur. Bunlardan birisi de Hadoop yapısıdır.
2
2. HADOOP
Hadoop, dağıtık sistem yapısını kullanarak bloklara ayırdığı büyük veriyi eşleme
azaltma (Mapreduce) işleminden geçirip makul zaman ve kabul edilebilir maliyet ile
anlaşılabilir sonuçlar elde edilmesini sağlayan açık kaynak kodlu bir yazılımdır. Dağıtık
sistem yapısının kullanılması veri işlemede Hadoop için büyük bir kolaylık
sağlamaktadır çünkü bir sunucuya bağımlı kalmadan imkanlar dahilinde bir çok
sunucuyu birleştirilerek tek bir fiziksel sunucuymuş gibi işlem yapma yeteneğine sahip
olur. Dağıtık yapıdaki bu sunucular haritalama azaltma yöntemi ile verileri istenilen
yapıya uygun hale getirilmesini ve anlaşılabilir olarak alınmasını sağlayacaktır. Eşleme
azaltma işlemi isminden de anlaşılacağı üzere iki aşamadan oluşmaktadır. Eşleme işlemi
ile dağınık halde bulunan verilerimizde istediğimiz alanlara ulaşmak, süzmek için
ihtiyaç duyulur. Azaltma işleminde ise süzdüğümüz verileri belirlenen parametrelerle
anlamlandırma işlemi gerçekleştirilmiş olur. Eşleme azaltma, Java ortamında
yazabildiğimiz için ek maliyet getirmemektedir. Hadoop açık kaynak kodlu bir
mimariye sahip olmasından dolayı maliyet açısından benzerleri ile kıyaslandığında çok
daha ekonomiktir ve geliştirilmeye daha açıktır.
2.1 Dağıtık Sistemler (Distributed Systems)
Dağıtık sistemler, aynı fiziksel yapı üzerinde bulunmayan, yani hafıza ve saati ortak
olmayan işlemciler kümesi olarak tanımlanabilir. Bu sistemler haberleşmeyi ağ
üzerinden yaparlar. Bu tip yapılarda bilgiyi işleme, tek bir cihaz üzerinde değil sistem
içinde birden çok cihaz üzerine dağıtılarak yapılır. Dağıtık sistemler karmaşık bir yapıya
sahiptirler ve yönetimi kolay değildir, fakat kaynak paylaşımı, performansları, hataya
karşı işleme devam edebilme yetenekleri ve eş zamanlı veri işleme yeteneği ile ön plana
çıkmaktadırlar.
3
Şekil 2.1.1: Farklı kümelere ayrılmış bir dağıtık sistem şeması.
2.2 Eşleme Azaltma (MapReduce)
Google tarafından geliştirilmiş bir programlama modelidir ve HDFS (Hadoop File
System) üzerinde barındırılan büyük verilerin işlenmesi aşamasında kullanılır. Verilerin
filtrelenmesinde Eşleme (Map) fonksiyonu ve bu verilerin listelenmesinde ise azaltma
(Reduce) fonksiyonları kullanılır. Eşleme azaltma işlemini Yapısal Sorgulama Dilinde
(SQL – Structured Query Language) anlamaya çalışılırsa, WHERE ile yapılan
filtreleme eşleme işlemine, SUM veya COUNT gibi birleştirme işlemleri azaltma
işlemine denk gelmektedir.
Hadoop, eşleme ve azaltma fonksiyonlarından oluşan iş parçacıklarını küme üzerine
dağıtarak aynı anda işler yani paralel olarak çalışmaktadır ve dönen sonuçları
birleştirmektedir. İşlenen dosyalar, yerel diskler üzerinde çalıştırılacağı için bant
genişliğini tüketmeyecektir ve birden fazla iş aynı anda işlenerek oldukça hızlı sonuçlar
elde edilebilecektir.
Eşleme azaltma sürecinin ilk mimarları Doug Cutting ve Michael Caferella olup, 2005
yılında Nutch arama motoru oluşturma projesine eşleme azaltma işlemi uygulamak için
çalışmalar yapmışlardır. Sonrasında projeyi Google sahiplenip geliştirmeler yapmıştır.
Günümüzde ise Hadoop, Java dili ile yazılmış olup Apache tarafından sürdürülen
eşleme azaltma çatısı olarak ifade edebilir. Hadoop, yapısı gereği büyük veriyi parçalar,
4
bloklara ayırır ve küme içerisindeki tüm düğümlere dağıtır, bu sayede veriler paralel
işlenerek muazzam bir işlem gücü elde edilir.
Bu işlemleri yaparken iki fonksiyonla haberleşme içerisinde olacaktır. Bu fonksiyonlar:
İş Planlayıcı (JobTracker): Atanacak görevleri planlar.
İş Yapıcı (TaskTracker): Atanan görevleri uygular.
1(Bir) Terabyte (TB) veri okunması
Şekil 2.2.1: Bir sunucu ile dağıtık sunucu yapısı arasındaki hız farkı.6
Eşleme, işlem yaparken, ana düğüm’ de bulunan iş planlayıcı, veri girişlerini
alır. Bunları küçük alt görevlere bölerek ayırır. İş yapıcı düğümlere dağıtır. İşçi
düğümlerde bulunan iş yapıcılar işi yaptıktan sonra ana düğüme cevabı gönderir.
Azaltma, işlem yaparken, ana düğüm işçi düğümlerden gelen cevapları alır.
Sonucu almak için tekrar işçi düğümlere gönderir.
6 http://www3.lenovo.com/au/en/systems/servers/c/servers
5
1 sunucu
45 dakika
10 sunucu
4.5 dakika
Şekil 2.2.2: Eşleme ve azaltma işlemlerinin örnek bir veri ile uygulanış şeması
Hadoop, Java dili ile geliştirildiği için eşleme azaltma uygulamaları Java ile kodlanır,
“.jar” uzantısı ile paketlenir. Yapısı incelendiğinde iş yapıcı ve iş planlayıcı
süreçlerinden oluştuğu görülür.
İş Planlayıcı: Yazılan eşleme azaltma fonksiyonunun kümelere dağıtılarak çalışmasını
sağlar. Bu fonksiyonlar iş parçacıklarını izler, böylece çalışırken ortaya çıkan sorunlarda
işi sonlandırmak veya yeniden başlatmak gerekirse sisteme müdahale ederler. Daha
sade bir anlatımla iş planlamasını yapar ve eşleme işlemi gerçekleştirmesi için işi iş
yapıcılara dağıtır. İsim düğümü gibi bir tane bulunur. Birden fazla iş parçacığı
çalıştırılabilir.
İş Yapıcı: Veri düğümünün bulunduğu sunucular üzerinde işlem yapmaktadırlar. İş
planlayıcı, gelen işleri yapan fonksiyonlardır. İş yapıcı, isim düğümünden aldığı
bilgilerle, veri düğümünün yerel sabit sürücüsünde bulunan veriye göre en uygun
eşleme işini iş yapıcılara verir. Yapılan işlerin durumu hakkında iş planlayıcı iş yapıcı
tarafından sürekli bilgilendirilir. Sonuç hesaplandığında HDFS üzerinde bir dosya
olarak kaydedilir.
6
İş yapıcı
İş planlayıcı
İsim düğümü
Veri düğümü
İş yapıcı
Veri düğümü
Eşleme azaltma katmanı
HDFS katmanı
Ana Sunucu İşçi Sunucu
Şekil 2.2.3: İş planlayıcı ve iş yapıcı katman yapısı.
2.3 Hadoop Altyapısı
Hadoop, HDFS(Hadoop Distributed File System) dosyalama sistemi üzerine kurulmuş,
eşleme azaltma işlemini bu dosya sistemi içerisinde çalıştıran bir yapıya sahiptir.
2.3.1 HDFS – Hadoop Distributed File System
En alt katmanda bulunur. Verilerin saklanması için kullanılan alandır. Makul
maliyetlerdeki sunucuların, sabit depolama sürücülerini birleştirerek tek bir sürücü gibi
çalışmasını sağlar. Böylece, tek bir sunucuda saklanması için büyük yatırımlar
yapılması gereken veriler, daha uygun maliyette ve daha performanslı olarak
saklanabilir.
Dışarıdan bakıldığında hiyerarşik bir dosya sistemi gibi görünmektedir. HDFS dosya
sisteminde, bilinen tüm dosyalama işlemleri (yazma, silme, taşıma) yapılabilir. Veriler
64mb ya da 128 mb’lık bloklar halinde saklanır ve her bloğun varsayılan olarak 3
kopyası bulunur, böylece erişilebilirlik ve güvenilirlik değerlerini sağlamış olur. Bu yapı
RAID sistemlerine benzerdir. Bunun sayesinde çok büyük veriler üzerinde analiz
işlemleri kolaylıkla yapılabilir.
HDFS – Hadoop Distributed File System aşağıda belirtilen iki bileşenden oluşmaktadır;
İsim Düğümü (NameNode): Veri bloklarının bilgilerini tutar.
Veri Düğümü (DataNode): Veri bloklarını saklar.
7
Şekil 2.3.1.1: HDFS ve eşleme azaltma yapısının bağlantı şeması
HDFS’in yapısı incelendiğinde, üst katmanda çalışan eşleme azaltma sürecinin, iş
planlayıcı ve iş yapıcılardan oluşan iş parçacıkları olduğu görülür. HDFS yapısı
ayarlanırken blok boyutu ve verilerin kopyalanma sayısı da ayarlanabilir. Tüm işlemler
ağ protokolü bileşeni olan Transmission Control Protocol / Internet Protocol (TCP/IP)
ile gerçekleşir.
2.3.2 İsim Düğümü
Ana süreçtir, sadece özet bilgi saklar; görevi blokların sunuculara dağılımı yönetmek,
blokların oluşturulmasını sağlamak, mevcut blokların gerektiğinde silinmesi sağlamak,
sorun olan bir bloğun tekrar oluşmasını sağlamak, dosya erişimlerini yönetmektir.
HDFS üzerindeki tüm dosya işlemlerinden sorumludur. Hangi blok, hangi dosya
nerededir, takip eder. Kesintiye uğramamalıdır ve her kümede bir tane olmalıdır. Eğer
isim düğümü çalışmaz ise bütün küme çalışmaz hale gelir.
2.3.3 Veri Düğümü
Bloklar halindeki dosyaları saklamak için oluşturulmuş süreçlerdir. Farklı disklerde
bulunan veri düğümlerinin yedeklerini barındırırlar, böylece kapanması durumunda
aksaklık oluşmaz. Bir küme içerisinde birden fazla veri düğümü olabilir. Veriler bu
8
düğümlerde saklandığı için analiz işlemi düğümde başlayacağından yük dağıtılmış
olacaktır. Sayıları arttıkça analiz hızı da artacaktır.
Şekil 2.3.3.1: Veri düğümü altında yedeklenen veri bloklarının yapısı.
2.3.4 Veri Sıkıştırması
HDFS’de yapılan işlemler çok büyük boyutlarda olduğu için veriyi sıkıştırmak disk
üzerindeki işlemlerini hızlandıracak, yer tasarrufu sağlayacak ve ağ trafiğini olumlu
yönde etkileyecektir. İşlemci kullanımı, sıkıştırma ve açma işlemlerinden dolayı artacak
ve işlem süresi uzayacaktır.
Tablo 2.3.4.1: Hadoop sıkıştırma kütüphaneleri.
Format Algoritma Açıklama
Zlib Klasör tabanlı, APIYüksek sıkıştırma oranı
vardır
GzipKlasör tabanlı standart
sıkıştırma sağlar.
Orta seviyeli sıkıştırma
oranı vardır. Çok hızlı
değildir.
bzip2Değişim tabanlı, blok yönlü
sıkıştırma sağlar.
Zlib’e göre daha
yüksek sıkıştırma oranı
sağlar.
LZOKlasör tabanlı, blok yönlü
sıkıştırma sağlar, APIHızlı sıkıştırma sağlar.
LZ4Sadeleştirilmiş LZ77 türevi
sıkıştırma sağlar.Hızlı tarama sağlar.
Snappy Blok yapılı sıkıştırma sağlar, Çok hızlı sıkıştırma
9
API sağlar.
2.3.5 HADOOP’un Olumlu ve Olumsuz Tarafları
Ölçeklenebilir: Büyük veri, günümüz dünyasında gelişen teknoloji ile beraber sürekli
olarak büyümeye devam edecektir. Hadoop, büyümeye devam eden bu veriyi hızlı bir
şekilde analiz edebilmek için düğümler ekleyerek genişleyebilmektedir.
Uygun Fiyat: Bu kadar becerikli bir sistemin pahalı olması gerektiği düşünülebilir.
Ancak açık kaynak kodlu oluşu, alt yapısı için özel donanımsal ihtiyaçlarının olmayışı
ve standart özelliklerdeki her sunucuda kolaylıkla çalıştırılabileceği için maliyeti çok
uygundur.
En Az Hata: Analizi yapılacak büyük veri birden fazla bloklara bölündükten sonra
birden çok düğüme gönderilir. Bu sayede küme içerisinde bir düğümde hata olması
durumunda sistem aksamadan çalışmaya devam edecektir.
Olumlu tarafları;
Dağıtılmış veriler, veri düğümlerinde işlendiğinden ağ ortamında trafiğe sebep
olmaz.
İş parçaları birbirinden bağımsız işlediği için hızlıdır.
Hata önleme sistemi vardır.
Çok büyük ebatta verileri saklayabilir.
Olumsuz tarafları;
Büyük veri kavramına uymayan yapılar içerisinde analiz yapılacaksa, buna
uygun değildir.
Hadoop, küme yapısı paralel analiz için geliştirilmiş olup uygulamalar buna
adapte olacak şekilde yapılandırılmamışsa verim alınmaz.
Kümeler üzerinde hata kaydı ve hata ayıklama işlemleri yapmak zordur.
Eşleme azaltma işlemleri yapması ileri seviye yazılım bilgisi gerektirebilir.
2.3.6 Harici HADOOP Bileşenleri
10
Hadoop uygulaması için geliştirilen beş temel bileşen bulunmaktadır. Bu geliştirmeler,
çeşitli ihtiyaçlar doğrultusunda Hadoop’un yönetimini ve işlevselliğini arttırmak amacı
ile yapılmış çalışmalardır.
HiveQL: Facebook tarafından geliştirilmiştir. SQL’e benzer bir yapısı vardır. Java
kullanmadan eşleme azaltma uygulamalarının geliştirilmesi için tasarlanmıştır. İlk
olarak HDFS üzerindeki dosyaların tablo olarak tanıtılması gerekmektedir. Bu işlemden
sonra oluşturulan sanal tablo sorgulanabilir.
Pig: Yahoo tarafından geliştirilmiş olup, eşleme azaltma uygulaması yazmak için
kendine özgü kodlama standartları olan PigLatin dili kullanır. HiveQL’in aksine SQL’e
hiç benzemez.
Hbase: Hadoop üzerinde çalışan bir veri tabanıdır. HDFS alt yapısında çalıştığından
dolayı eşleme azaltma işlemlerini desteklemektedir. Petabyte seviyesinde veriyi
saklayabilir.
Mahout: Hadoop üzerinde çalışan Machine Learning algoritmalarını içeren bir
kütüphanedir.
Impala: Eşleme azaltma yapmadan verilere direk erişim sağlamak için Cloudera firması
tarafından geliştirilmiştir.
11
3. HADOOP KULLANIMI HAKKINDA GENEL BİLGİLER
Dünya’da ve Türkiye’de Hadoop kullanımı yaygınlaşmaya başlamıştır. Şekil 3.1 ‘de
Gittigidiyor.com sitesinin ziyaretçilerine Hadoop sistemi kullanılarak sonuçların nasıl
yansıtıldığı gösterilmiştir.
Şekil 3.1: Gittigidiyor.com sitesi Hadoop kullanım alanları.
Konu ile alâkalı olarak, Gittigidiyor.com resmi sitesinde yayınlanan bir makalede şöyle
denilmiştir: “Hadoop teknolojisini ilk olarak 2011 yılında geliştirdiğimiz Akıllı
Sıralama projesi kapsamında altyapımıza dahil ettik,” ve eklenmiş “Akıllı Sıralama
projesi sayesinde arama sonuçlarında kullanıcılara milyonlarca ürün içerisinde
aradıkları ürüne en uygun sonuçları getirdik.”7
7 http://kurumsal.gittigidiyor.com/2014/03/24/gittigidiyorda-big-data-ve-hadoop-teknolojileri/
12
Tablo 3.1: Hadoop yapısını kullanan bazı firmalar.
2006-2007 2008 2009 2010
Yahoo! Google Aol Samsung
Internet Archive Imageshack Itrend Ebay
Ibm Hulu Linkedin
Facebook Hola Microsoft
Lookery Amazon Twitter
Netseer Cloudera Rockspace
News Corporation System eth Admeld
Alibaba, EBay, Facebook, LinkedIn, Yahoo! günümüzde Hadoop kullanan firmalardan
bazılarıdır.8
8 https://wiki.apache.org/hadoop/PoweredBy
13
4. KURULUM
Hadoop, ihtiyaca göre üç farklı tipte kurulabilmektedir. Tekil kurulum(Standalone
Mod), Sahte dağıtık kurulum (Pseudo-Distributed Mod), Tam dağıtık kurulum(Fully-
Distributed Mod). İhtiyaca göre bu üç tipten birine karar verilip kurulum adımları buna
göre işletilmelidir. Bu çalışmada detaylı açıklaması yapılacak olan kurulum, sahte
dağıtık kurulum tipidir.
3GB’lık bir web sitesi kayıtlarını analiz ederek “VT” ile başlayan oturum anahtarı
(session) numaralarının sayılması, böylece sistemde kaç adet kaydın olduğunu
hesaplayarak her bir oturum anahtarına göre sayım yaparak giriş sayısını hesaplanması
gerçekleştirilmektedir. Sistemin uygulanabilmesi için, Windows 10 işletim sistemine
Virtual Box sanallaştırma uygulaması yüklenerek Linux işletim sisteminin Ubuntu
dağıtımı kurulması önerilir.
4.1 Kurulum Adımları
Eşleme azaltma kodlarının hazırlanması için Eclipse uygulamasının yüklenmiş olması
gerekmektedir. Uygulama https://eclipse.org/ web adresinden temin edilebilir.
1) Şekil 4.1.1’de gösterildi gibi yeni bir Maven çalışması oluşturulur.
Şekil 4.1.1: “Maven Project” proje oluşturma ekranı.
14
2) Şekil 4.1.2 ‘de gösterildiği gibi eşleme azaltma çalışması için genel bilgiler
girilir
Şekil 4.1.2: Proje bilgilerinin doldurulacağı ekran.
Java uygulamasının çalışması için gerekli ana yapı şekil 6.1.3’de gösterildiği gibi
olacaktır.
Şekil 4.1.3: Proje sınıfı(class) yapısı görünümü.
15
3) Pom.xml dosyasında java kodlarının çalışacağı eşleme azaltma uygulamasının
kullanacağı eklentiler (plug-in) tanımlanır ve bazı genel bilgiler girilir.
Şekil 4.1.4: Projeye tanımlanacak eklentilerin ekran görüntüsü.
4) Eşleme (Mapper) sınıfı oluşturulur.
Hadoop.mr yapısının altına ProtectionMapper.java sınıfı oluşturulmalı ve içerisine
aşağıdaki kodlama yapılmalıdır.
Bu kodlama ile veriler kontrol edilerek gelen veri kümesi boşluklara göre parçalanır. 1.
Parça anahtar olarak alınır ve context değişkenine 1 değeri yazılır. Böylece haritalama
işlemi yapılmış ve azaltma işlemine geçiş için hazır olacaktır.
// ProjectionMapper class’ı tanımlanır
public class ProjectionMapper extends Mapper<LongWritable, Text, Text,
LongWritable> {
//Word isminde bir Text tipinde bir değer oluşturuyoruz.
private Text word = new Text();
//count isminde LongWritable tipinde bir değer oluşturuyoruz.
private LongWritable count = new LongWritable();
//java veri yapısına göre Key ve Value ları tutan bir map yapısının oluşturulması
sağlanır.
@Override
protected void map(LongWritable key, Text value, Context context) throws
IOException, InterruptedException {
//split adında bir dizi oluşturuyoruz ve gelen değeri boşluklara göre parçalıyoruz.
String[] split = value.toString().split("\t+");
16
//split dizisinin birinci değişkeni Word değişkenine atanır.
word.set(split[1]);
if (split.length > 2) {
//split in içeriği boş değilse count 1 olarak yazılır.
count.set(1);
//context ‘e Word(session) ve count(1) yazılır
context.write(word, count);
}
}
}
Şekil 4.1.5: Eşleme sınıfı kodları.
İşlenecek veri dosyasının yapısı dört sütundan oluşmaktadır. Bunlar tarih, oturum
anahtarı (session), bağlantı adresi ve ülke kodu şeklindedir. Şekil 6.1.5’deki gibi
genişletme (extend) işleminde bu alanlar ve tipleri tanımlanmış olur. word.set(split[1]);
kodu ile anahtar(key) değerimiz belirtilir. count.set(1); kodu ile değeri “1” olarak atanır
çünkü azaltma işleminde bu değerler toplanarak toplam sayı bulunacaktır.
5) Azaltma sınıfı oluşturulur
“Hadoop.mr” altına “LongSumReducer.java” oluşturulur ve içerisine aşağıdaki kodlama
yapılır. Bu kod yapısıyla, gelen veriler doğrultusunda kendisine gelen anahtar ve
sayıları alarak toplama işlemi yapar ve toplamları içeriğe (context) aktarır.
Gelen her bir anahtar değeri için değerler toplanır. Örneğin AAA kullanıcısı 3 defa
siteye girmiş ise o zaman AAA kullanıcısı için 3 defa “for” döngüsüne girecektir ve
sayaç arttırılacaktır.
17
// LongSumReducer clas’ı tanımlanır
public class LongSumReducer<KEY> extends Reducer<KEY, LongWritable,
KEY,LongWritable> {
//LongWritable tipinde result adında bir değer tanımlanır. Sonuçlar burada toplanır
private LongWritable result = new LongWritable();
public void reduce(KEY key, Iterable<LongWritable> values,
Context context) throws IOException, InterruptedException {
//count adında değişken tanımlanarak değeri 0 olarak atanır
long count = 0;
//aynı değerlerin gelip gelmediğini kontrol ederek eşleşen varsa count değişkeni bir
arttırılır.
for (LongWritable val : values) {
count ++;
}
//count değişkeni sonuç olarak yapılandırılır
result.set(count);
//sonuç key ile beraber context’e yazılır.
context.write(key, result);
}
}
Şekil 4.1.6: Azaltma sınıfı kodları
6) İş (Job) sınıfı oluşturulur.
//iş tanımlaması yapılan alandır (Job ismi)
Job job = Job.getInstance(conf, "total_impression");
//kodun hangi sınıf ismine sahip olacağı tanımlanır (main class’dan çekecek
şekilde tanımlıyoruz)
job.setJarByClass(getClass());
job.setJobName(getClass().getSimpleName());
//işlem yapılacak verilerin olduğu dosya(lar) tanımlanır
18
FileInputFormat.addInputPath(job, new Path("hdfs://localhost:9000/data/*"));
//sonuçların yazılacağı yer tanımlanır
FileOutputFormat.setOutputPath(job,new
Path("hdfs://localhost:9000/result/totalImpressionResult"));
//Haritalama sınıf bilgisi girilir.
job.setMapperClass(ProjectionMapper.class);
//Birleştirme(combiner) sınıf bilgisi girilir(buraya azaltma sınıfı yazıyoruz)
job.setCombinerClass(LongSumReducer.class);
//Azaltma sınıfı bilgimizi giriyoruz.
// sonuç olarak dönecek olan, aranan kelime yani anahtar‘ın formatını tanımlıyoruz
job.setOutputKeyClass(Text.class);
//sonuç olarak dönecek olan , hesaplanan değer ‘ın formatını tanımlıyoruz(kaç kere
gemiş)
job.setOutputValueClass(LongWritable.class);
//threath işlemi için ayar alanıdır, ana programın bitmesini beklemek için
tanımlanır
return job.waitForCompletion(true) ? 0 : 1;
}
//Ana(Main) sınıf tanımlanır
public static void main(String[] args) throws Exception {
int rc = ToolRunner.run(new AggregateJob(), args);
System.exit(rc);
}
}
Şekil 4.1.7: İş sınıfı kodları
19
Bu sınıf İş’in gönderildiği ve ayarların yapıldığı sınıftır. Bu adımlar yapıldıktan sonra
görünüm Şekil 6.1.8 ‘e benzeyecektir.
Şekil 4.1.8: Sınıf tanımlamaları yapılmış Eclipse görünümü.
7) Eşleme azaltma uygulaması derlenerek çalıştırılabilir java uygulaması haline
getirilir.
Çalışmada sağ tuş tıklanıp “Run as - > Maven Install” seçilir böylece çalışmanın
bulunduğu çalışma alanı (workspace) içerisinde hedef (target) dosyasında jar
oluşturulmuş olunur.
Şekil 4.1.9: Projenin derlenmesi.
Kurulum aşamasında oluşan “mr-1.0.jar” dosyası Linux klasörüne kopyalanması
gerekecektir.
Şekil 4.1.10: Çalıştırılabilir eşleme azaltma “.jar” uygulaması.
20
4.2 HADOOP Sistem Kurulumu
Hadoop sistemi 3 farklı şekilde kurulumu yapılabilmektedir. Bu kurulum tipleri aşağıda
anlatılmaktadır:
Tekil Kurulum: Genelde yerel testler için kullanılır, tek makinada ve tek
düğümde çalışır. HDFS sistemi yoktur ve dosyalar yerel olarak alınır.
Sahte Dağıtık Kurulum: Yine tek makinaya tek düğüm olarak kurulur, fakat
kendi içerisinde HDFS sistemi vardır. Veri düğümü, iş yapıcı, iş planlayıcı gibi
bileşenler bulunmaktadır. Bunlar ayrı Java Sanal Makine (JVM – Java Virtual Machine)
süreci olarak çalıştırır. Bu çalışmada gerçekleştirilen uygulama sahte dağıtık kurulum
tipinde yapılacaktır.
Tam Dağıtık Kurulum: Bu kurulum, Hadoop’u küme yapısında çalıştırma
tipidir. Birden fazla düğümden oluşur.
4.2.1 Sahte Dağıtık Kurulum
1) # sudo apt-get install default-jdk
1.adımdaki kod çalıştırılarak Java Development Kit(JDK) Ubuntu işletim sistemine
kurulur.
Şekil 4.2.1.1: JDK kurulum komutu uygulanması.
2) # sudo addgroup hadoop
3) # sudo adduser –ingroup hadoop hduser
2.adımda “hadoop” adında bir kullanıcı grubu sisteme eklenir. Tam isim(Full Name),
oda numarası(room number) gibi bilgiler istenirse doldurulabilir.
21
3.adımda eklenen bu kullanıcı “hadoop” grubuna eklenir.
Şekil 4.2.1.2: Ubuntu sisteminde kullanıcı tanımlama ekranı.
4) # sudo visudo
4.adımla tanımlaması yapılan kullanıcı yetkilendirme işlemleri için, boş bir alana
aşağıdaki yetki tanımlaması eklenir sonra ctrl+x ile kaydedilmesi sağlanır.
hduser ALL=(ALL:ALL) ALL
Şekil 6.2.3 ‘deki gibi bir görünüm sağlanmalıdır.
Şekil 4.2.1.3: Hduser yetkilendirmesi gönümü.
5) # sudo apt-get install openssh-server
5.adımda secure shell (ssh) kurulumu yapılır.
22
Şekil 4.2.1.4: Ssh kurulumu ekran görüntüsü.
6) # sudo su hduser
6.adımda hduser kullanıcısına geçiş yapılır.
7) # Ssh-keygen –t rsa –P “”
7.adımda çıkan ekrana /home/hduser/.ssh/id_rsa.pub yazılarak Ssh anahtarı üretilir.
8) # cat /home/hduser/.ssh/id_rsa.pub >> /home/hduser/.ssh/authorized_keys
8.adımda Ssh sertifika işlemleri tanımlanır. Şekil 6.2.5 teki gibi bir çıktı beklenir.
Şekil 4.2.1.5: Ssh anahtarının üretildiği ekran görüntüsüdür.
9) # sudo su
9.adımdaki komut ile kök(root) hesabına geçilir
Şekil 4.2.1.6: Kök kullanıcıya geçiş işlemi ekranı.
10) # sudo chown veysel -R /home/hduser
10.adımda hduser kasörüne mevcut hesabımız için yetki alınır. Bu sayede hduser
klasörü içerisine erişim yetkiniz olacaktır.
23
Şekil 4.2.1.7: Yetkilendirme işlemi ekranı.
11) hduser klasörü içine /down adında bir klasör açılarak hazırlamış olduğumuz
MapReduce dosyası(mr-1.0.jar) ve analizi yapılacak olan veriler kopyalanır.
Şekil 4.2.1.8: Klasörlerin oluşturulduğu ekran.
12) # sudo chown hduser:hadoop –R /home/hduser/down/20gb
13) # sudo chown hduser:hadoop –R /home/hduser/down/mr-1.0.jar
12.ve 13. Adımlarda şekil 6.2.7 ‘de oluşturulan klasörlere hduser için izin verilir.
14) # sudo gedit /etc/sysctl.conf
14.adımda Internet Protocol Version 6(IPv6) iptali için .conf dosyasına aşağıdaki
satırlar eklenir.
# disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
15) # cd /usr/local
24
16) # sudo wget
http://mirrors.sonic.net/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz
17) # sudo tar -xzvf hadoop-2.6.0.tar.gz
18) # sudo mv hadoop-2.6.0 /usr/local/hadoop
Hadoop kurulumuna başlanır.
16.adımda hadoop dosyaları indirilir,
17. Adımda dosyalar yerel sürücüye açılıyor,
18.adımda açılan dosyalar hadoop klasörüne taşınır.
Şekil 4.2.1.9: Hadoop dosyalarının indirildiği ekran görüntüsü.
19) # chown hduser:hadoop -R /usr/local/hadoop
Hduser kullanıcısına hadoop klasörü için yetki verilir.
20) # sudo mkdir -p /usr/local/hadoop_tmp/hdfs/namenode
21) # sudo mkdir -p /usr/local/hadoop_tmp/hdfs/datanode
22) # sudo chown hduser:hadoop -R /usr/local/hadoop_tmp/
Hadoop için gerekli isim düğümü, veri düğümü ve geçici klasörleri oluşturulur ve
yetkilendirme yapılır.
23) # sudo gedit $HOME/.bashrc
23.adımda sistem dosyası güncellenmek üzere açılır.
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
25
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
Yukarıdaki satırların yolları kontrol ederek eklenir.
24) # source ~/.bashrc
24.adımda sistem dosyasının güncellenmesi sağlanır.
25) # cd /usr/local/hadoop/etc/hadoop
26) # sudo gedit hadoop-env.sh
Güncellenmek üzere hadoop-env.sh dosyası açılır ve JAVA_HOME = {JAVA_HOME}
yazan yere aşağıdaki satır yazılır.
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
27) # sudo gedit core-site.xml
<configuration></ configuration > etiketleri arasına aşağıdaki değer girilir.
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
28) # sudo gedit hdfs-site.xml
<configuration></ configuration > etiketleri arasına aşağıdaki değer girilir.
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
26
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_tmp/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop_tmp/hdfs/datanode</value>
</property>
29) # sudo gedit yarn-site.xml
<configuration></ configuration > etiketleri arasına aşağıdaki değer girilir.
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
30) # cp mapred-site.xml.template mapred-site.xml
31) # sudo gedit mapred-site.xml
<configuration></ configuration > etiketleri arasına aşağıdaki değer girilir.
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
32) # hdfs namenode –format
32.adımda kullanıma hazırlamak için isim düğümü biçimlendirilir(format).
27
Şekil 4.2.1.10: İsim düğümü biçimlendirme ekranı.
33) # Start-dfs.sh
34) # Start-yarn.sh
35) # jps
33,34 ve 35. Adımlarda servisler çalıştırılır. Şifre ve onay isteyebilir.
Şekil 4.2.1.11: Hadoop servisleri başlatma ekranı.
36) # hdfs dfs -mkdir /data
36.adımda HDFS altında “/data” klasörü oluşturulur.
37) # hdfs dfs -copyFromLocal /home/hduser/down/20g /data
37. adımda hduser altında oluşturulan “/down” klasörü içerisinde analiz için hazırlanan
veriler HDFS altında “/data” klasörüne kopyalanır.
38) # hadoop jar /home/hduser/down/mr-1.0.jar hadoop.mr.AggregateJob
28
39.adımda hazırlanan haritalama azaltma uygulaması ana sınıf parametresi ile
çalıştırılır.
Şekil 4.2.1.12: Eşleme azaltma uygulaması çalıştırılma ekranı.
“/data” klasörü altında ne kadar verinin olduğunu aşağıdaki kod ile görülebilir.
# hadoop fs -du -s /data | awk '{s+=$1} END {printf "%.3fG\n", s/1000000000}'
Şekil 4.2.1.13: “/data” klasörü içindeki veri miktarı görünümü.
Tarayıcı ekranına http://localhost:50070 adresi yazıldığında hadoop sistemi hakkında
bilgilere erişilebilir. Şekil 6.2.14 te web sayfası üzerinden bilgilere erişim
görülmektedir.
29
Şekil 4.2.1.14: Hadoop sisteminin tarayıcı ekranından görünümü.
Aynı ekrandan sırasıyla, “Utilities -> Browse the file system” bağlantısı tıklandıktan
sonra aşağıda çıkacak alandan “result->totalImpressionResult” bağlantıları tıklanarak
işlenmiş veri dosyası açılabilir.
30
Şekil 4.2.1.15: İşlenmiş verilerin görünümü
Şekil 6.2.16’da gösterildiği gibi açılan metin dosyasında “VT” ile başlayan anahtar
değerlerin toplam adetleri görülebilir.
Şekil 4.2.1.16: Derlenen verilerin sonuç çıktısı.
Derleme işlemi tekrar çalıştırmak için aşağıdaki kodlarla sonuç(result) ve geçici(tmp)
klasörlerinin silinmesi gerekmektedir.
# hdfs dfs -rmr /result
# hdfs dfs -rmr /tmp
31
5. SONUÇ
Bir web sitesinin 3gb büyüklüğündeki kullanıcı oturum bilgilerinin analizi, Hadoop
sahte dağıtık kurulum tipi kullanılarak tek bir bilgisayar üzerinde yaklaşık bir dakika
içerisinde gerçekleşmiştir. Böylece tekil kullanıcı sayısına makul zaman ve maliyet ile
ulaşılmıştır. (Şekil 6.2.16). Büyük verilerle analiz işlemi yapılırken ilişkisel veri tabanı
yönetimleri kullanılması durumunda (Ör: Microsoft SQL) ücret ve zaman açısından çok
büyük maliyetler ortaya çıkmaktadır.
Yapılan bu çalışmada, standart donanıma sahip bilgisayar ile büyük veri analizinin kısa
zamanda ve uygun maliyet ile yapılabileceği görülmektedir. Hadoop, dağıtık ağ yapısını
desteklediği için ağ trafiğinde ve sunucularda oluşabilecek yoğunlukları da ortadan
kaldırabilmektedir. HDFS dosya yapısının yedekli bir mimariye sahip olmasından
dolayı veri kaybı gibi ihtimalinin çok düşük olduğu, kendine özgü isim düğümü – veri
düğümü adresleme yapısı ile eşleme azaltma metoduna makul zamanda yanıt vererek
hızlı sonuç elde ettiği saptanmıştır. Eşleme ve azaltma işleminin uygulandığı platform,
java tabanlı olduğundan anlaşılabilir, esnek ve geliştirmeye çok açıktır. Ancak
işlemlerin karmaşıklığına göre ileri seviye java programlama bilgisi gerektirebilir.
Tüm bunlara ek olarak Hadoop uygulamasının kurulum ve yapılandırma işlemlerinin
adımları fazla olsa da bu işlemlerin kolaylıkla yapılabildiği gözlemlenmiştir.
32
6. Kaynakça
[1] internet live stats. Erişim tarihi: 8 Nisan 2016.internetlivestats.com
[2] Craig Shmith (2016, 5 Mart). Twitter statistic reports. Erişim tarihi: 18 Nisan 2016.
http://expandedramblings.com/
[3] A.Buğra Ferah (20 Mayıs 2014). GittiGidiyor’dan ilk çeyrek raporu. Erişim tarihi:
18 Nisan 2015 http://webrazzi.com/2014/05/20/gittigidiyordan-ilk-ceyrek-raporu-2-
milyon-670-bin-urun-satisi/
[4] Erişim tarihi: 18 Nisan 2015. http://www.worldometers.info/tr/
[5] Apache hive. Erişim tarihi: 19 Nisan 2015.
https://en.wikipedia.org/wiki/Apache_Hive
[6] Hakan İlter (2016, 24 Mart). GittiGidiyor’da Big Data ve Hadoop Teknolojileri.
Erişim tarihi: 19 Nisan 2016
http://kurumsal.gittigidiyor.com/2014/03/24/gittigidiyorda-big-data-ve-hadoop-
teknolojileri/
[7] Powered by Apache Hadoop (2016,14 Nisan). Erişim tarihi: 19 Nisan 2015.
https://wiki.apache.org/hadoop/PoweredBy
[8] Erişim tarihi: 21 Nisan 2015. https://en.wikipedia.org/wiki/Apache_Hadoop
[9] Erkan Ülgey (2016, 18 Şubat). Hive veri tabanları arası tablo taşıma. Erişim tarihi:
21 Nisan 2015. http://devveri.com/kategori/hadoop
[10] Warren Pettit (2016, 5 Mart). Hadoop 10.1 Erişim tarihi: 22 Nisan 2015.
http://bigdatauniversity.com/courses/hadoop-course/
[11] Erişim tarihi: 22 Nisan 2015. sadievrenseker.com
[12] Erişim tarihi: 23 Nisan 2015. http://hadoop.apache.org/
[13] Erişim tarihi: 23 Nisan 2015. http://stackoverflow.com/questions/tagged/hadoop
[14] Erişim tarihi: 23 Nisan 2015. Cloudera.com
[15] Brıan Proffıtt (2013, 23 Mayıs). What it Is and how it works. Erişim tarihi: 23
Nisan 2015. http://readwrite.com/2013/05/23/hadoop-what-it-is-and-how-it-works/
[16] Sagin Bappalige (2014, 26 Ağustos). An introduction to Apache Hadoop. Erişim
tarihi: 25 Nisan 2015. https://opensource.com/life/14/8/intro-apache-hadoop-big-data
[17] Manuel Sevilla (2012, 6 Ocak). What is hadoop? Erişim tarihi: 25 Nisan 2015.
https://www.capgemini.com/blog/capping-it-off/2012/01/what-is-hadoop
33
34