NoSQL Atölyesi

advertisement
NoSQL
Buğra Çakır
23 Mart 13 Cumartesi
Sunum Planı
1.
2.
3.
Veritabanı sistemleri, tarihsel gelişim
NoSQL Dünyası
Hadoop Ekosistemi
23 Mart 13 Cumartesi
RDBMS Sistemleri
1.
2.
3.
4.
5.
System R, IBM SEQUEL
Ingres QUEL
Objeler ve bunların ilişkileri ->
Edgar Frank "Ted" Codd “A Relational Model
of Data for Large Shared Data Banks”, Larry
Ellison “Oracle”
Objeler ve ilişkiler üzerinde işlem yapmayı
sağlayan operatörler -> SQL
Veri bütünlüğünü sağlayan yöntemler
3
23 Mart 13 Cumartesi
Büyük Balıklar
4
23 Mart 13 Cumartesi
RDBMS Pastası
IBM
Oracle
Microsoft
Other
5
23 Mart 13 Cumartesi
Açık Kaynak Alternatifler
6
23 Mart 13 Cumartesi
Neden başka bir veritabanı ?

Yeni başlayan her projede ilişkisel veritabanı
tercih ediliyor ???
7
23 Mart 13 Cumartesi
EES - Eşzamanlılık



Veri üstünde aynı anda yapılan işlemler
Koordinasyon gerekiyor.
Veri kaybı riski var.
8
23 Mart 13 Cumartesi
EES - Entegrasyon



Farklı uygulamalar birbirleriyle iletişime
geçmek istiyor.
Aynı veritabanı üzerinde birden fazla
uygulama işlem yapabilir.
Enterprise Integration Patterns : [Hohpe ve
Woolf]
9
23 Mart 13 Cumartesi
EES - Standartlaşma



SQL sürümleri birbirine benziyor.
Öğrenmek çok kolay.
Birinden diğerine geçmek kolay.
10
23 Mart 13 Cumartesi
Veri Modeli-Nesne Tasarımı



Nesne modeli ile veri tabanındaki veri
modelini birleştirmek gerekiyor.
Birindeki değişiklik diğerini etkiliyor.
Eşleme yöntemleri devreye giriyor.
◦ iBatis
◦ Hibernate
11
23 Mart 13 Cumartesi
Kullanım Modeli -RDBMS
12
23 Mart 13 Cumartesi
Big Data



Sosyal ağlar
Internete bağlanan cihazlardaki artış
Bu veriler nereye depolanacak ?
◦
◦
◦
◦
Büyük diskler
Büyük birincil hafıza
Çoklu işlem birimleri (CPU)
Maliyet yükseliyor.
13
23 Mart 13 Cumartesi
Bir uygulama - Bir veritabanı



Her uygulamaya bir veritabanı.
Web servisleriyle bağlıyoruz.
JSON veya XML ile veriyi tanımlıyoruz.
14
23 Mart 13 Cumartesi
Kullanım Modeli -NoSQL
15
23 Mart 13 Cumartesi
Kullanım Modeli -NoSQL-SOA
16
23 Mart 13 Cumartesi
Kümeleme

Aksaklıklar
◦ Donanımdaki arızalar
◦ Donanıma kolayca ulaşamama problemi

Kolay donanım (commodity)
◦ Ucuz
◦ Bozulduğunda yenisini takabilme imkanı
17
23 Mart 13 Cumartesi
Kümeleme


İlişkisel veribanları doğası gereği kümeler
üzerinde çalışmaya elverişli değiller.
Paylaşımlı Disk Mimarileri
◦ Oracle RAC
◦ Microsoft SQL Server

Tek noktadan arıza
◦ Paylaşımlı disk mimarisi çöktüğü zaman
18
23 Mart 13 Cumartesi
Sharding

Birden çok ilişkisel veritabanı sunucusu veri
kümesinin alt kümelerini tutar.
◦ Uygulama alt kümelerin hangisinde işlem
yapılacağını tayin ederek veriye ulaşır.
19
23 Mart 13 Cumartesi
Google ve Amazon



Maliyetlerin artması
Arızalardaki geçişlerin uzun sürmesi
Kümelemedeki fonksiyonel yetersizliklerden
dolayı

Veri depolama için yeni arayışlar başladı...

BigTable - Google
Dynamo - Amazon

20
23 Mart 13 Cumartesi
NoSQL’in Farkları


SQL kullanmıyor.
Teknolojik anlam ifade etmiyor, bir hareket !
21
23 Mart 13 Cumartesi
Hareketin Sonucu




İlişkisel veritabanları dışındaki alternatifler
günyüzüne çıktı.
Entegrasyon veritabanlarından -> Uygulama
veritabanlarına geçiş başladı.
Kümeleme üzerinde çalışabilen veritabanlarına
sahibiz.
Açık kaynak
22
23 Mart 13 Cumartesi
İlişkisel Veri Katmanları

Uygulama Veri Modeli - ER diyagram
Veritabanı Saklama Modeli - RDBMS

Satırlar ve Sütunlar...

23
23 Mart 13 Cumartesi
NoSQL Veri Katmanları





Key-Value
Document
Column Family
Graph
Toplam Modeli (Aggregates) - KeyValue,
Document, Column Family
24
23 Mart 13 Cumartesi
Toplamlar

“Birbirine bağlı nesnelerin bir arada tek bir
nesne gibi değerlendirilmesi”
25
23 Mart 13 Cumartesi
Kümeleme Modelleri



Scale Up - Sunucu gücünü yükseltme
Scale Out - Yeni sunuculara dağıtma
Toplam (Aggregate) bu modele uygun.
26
23 Mart 13 Cumartesi
Veri Dağıtımı

Yöntemler;
◦ Replikasyon ve sharding
 Master-slave
 Peer to peer
27
23 Mart 13 Cumartesi
Tek sunucu


Hiçbir dağıtım stratejisi yok.
Bütün işlemler tek makina üzerinde
gerçekleşiyor.
28
23 Mart 13 Cumartesi
Sharding



Veriyi alt kümelere ayırıyoruz.
Her alt küme ayrı bir sunucuda çalışıyor.
Sharding önceden tasarlanmalı !
29
23 Mart 13 Cumartesi
Master-Slave Replikasyon





Master’dakiler Slave’e yazılır.
Okuma çok yapılıyorsa bu işe yarar.
Yazması çok olan uygulamalarda ağır bir yük
oluşturur, tavsiye edilmez.
Master çökerse, Slave’lerden okuma devam
eder. Slave’ler master olabilir.
Read-write uyumsuzluğu olabilir !!!
30
23 Mart 13 Cumartesi
Peer2Peer Replikasyon



Her node read-write yapabilir.
Node’lar write operasyonlarını birbirleriyle
paylaşırlar.
Master-slave’de olduğu gibi read-write ve en
önemlisi write-write uyumsuzluğu
başgösterebilir.
31
23 Mart 13 Cumartesi
Geçiş için



Programcının üretkenliğini artırıyor.
Veriye erişim performansını artırıyor.
Servis odaklı mimariye geçişi hızlandırır.
32
23 Mart 13 Cumartesi
Key-Value ne zaman ?


Kullanım Durumları:
◦ Oturum Bilgilerinin Tutulması
◦ Kullanıcı profil bilgilerinin tutulması
◦ Alışveriş kartı bilgilerinin tutulması
Önerilmeyen Durumlar:
◦ İlişkiler fazlaysa
◦ Transaction durumları
◦ Key dışında Value ile aramalarda
◦ Çoklu anahtarlarla aramalarda
33
23 Mart 13 Cumartesi
Document Stores ne zaman ?


Kullanım Durumları:
◦ Loglama
◦ İçerik yönetim sistemleri, blog platformları
◦ Analitik platformları
◦ E-ticaret siteleri
Önerilmeyen Durumlar:
◦ Kompleks transactionlar
◦ Tasarım çok değişiyorsa
34
23 Mart 13 Cumartesi
Column-Family ne zaman ?


Kullanım Durumları:
◦ Loglama
◦ İçerik yönetim sistemleri, blog platformları
◦ Web sitesi analitik uygulamaları
◦ E-ticaret siteleri
Önerilmeyen Durumlar:
◦ Hesaplamalar (SUM, AVG)
◦ Tasarım çok değişiyorsa
35
23 Mart 13 Cumartesi
Graph ne zaman ?


Kullanım Durumları:
◦ Sosyal ağ siteleri ve buna benzer platformlar
◦ Lokasyon tabanlı servisler
◦ Öneri sistemleri
Önerilmeyen Durumlar:
◦ Bulk operasyonların fazla olduğu durumlar.
36
23 Mart 13 Cumartesi
Veri Nasıl Saklanıyor ?

Hızlı, Boyutu küçük - Birincil Hafıza
◦ RAM

Yavaş, Boyutu büyük - İkincil Hafıza
◦ Hard disk
37
23 Mart 13 Cumartesi
Veri Depolama


1990’da 1.5GB kapasiteye sahip bir sabit disk
ile saniyede 4.4MB bilgi okunabiliyordu. 5.5
dk’da tüm disk okunabiliyor.
2012’de 1.5TB kapasiteye sahip bir sabit disk
ile saniyede 100MB bilgi okunabiliyor. 250
dk’da tüm disk okunabiliyor. 1.5 GB => 0.25
dk’da okunabiliyor !
38
23 Mart 13 Cumartesi
Veri Depolama


Diske Yazmak Diskten Okumaktan daha
yavaş!
Peki bunu hızlandırmak için ne yapmalıyız. ?
◦ Verileri paralel şekilde okuyabiliriz. Örneğin elimizde
100 disk olsun. Her diske verinin 100’de birini
yazarız. 100 diski paralel olarak birlikte okuruz.
Böylece tüm veriyi yaklaşık 2.5dk ‘dan az bir
zamanda okumuş oluruz.
39
23 Mart 13 Cumartesi
Bunları Bilmek Lazım!



Hacim – Veri hacmi (Örn: 1 MB’lık bloklar)
Hız – Verinin akış hızı birim zamanda bize
işlememiz gereken veri. (Örn : Saniyede 100
mesaj)
Çeşitlilik – Log, XML, Yapısal olmayan veri
tipleri...
40
23 Mart 13 Cumartesi
Sonuç ?

Farklı senaryolar için yenilikçi özelliklere sahip
veritabanları kullanılabilir...
41
23 Mart 13 Cumartesi
NoSQL
◦Sakla
◦İşle
◦Analiz
42
23 Mart 13 Cumartesi
Yapılan Hata !


Her türlü veri tipi için sadece SQL veya NoSQL
kullanmak !!!
SQL veya NoSQL birlikte kullanılmalı !
◦ Elimizdeki verinin karakteristiğini bilmeliyiz, hangi
DB tipinde tutulacağına karar verilmeli.
◦ SQL ve NoSQL’in kullanıldığı ekosistemler
oluşturulmalı.
43
23 Mart 13 Cumartesi
Veya

SQL’in tüm özellikleri kullanılmalı !
◦ Eğer performans arttırmak için “denormalizasyon” ve
bunun gibi RDBMS özellikleri kullanılmasına rağmen
performans artmıyorsa NoSQL düşünülmeli.
44
23 Mart 13 Cumartesi
Yöntem

Karar vermeden önce -> Verini incele !!!
1. Veri tipini incele, karakteristiğini öğren ! (Log,
gerçek zamanlı veriler, lokasyon bilgileri, web
sayfaları)
2. Ne sıklıkla veriye ulaşıyorsun ?
3. Veri tipi hangi sıklıklı değişiyor ?
45
23 Mart 13 Cumartesi
Nasıl bir seçim ?
Verinin Karakteristiği NoSQL
SQL
Dinamik, şema
değişiyor

X
Statik, şema
değişmiyor
X

Veri miktarı çok fazla,
şema değişmiyor
X

Gerçek zamanlı veriler
geliyor

X
Veri miktarı çok fazla,
statik, şema
değişmiyor, gerçek
zamanlı değil
X

Güncellenme ve okuma X
fazlaysa

46
23 Mart 13 Cumartesi
NoSQL Tipleri
1.
2.
3.
4.
Document Stores
Derinin kütüğü => İsim:“Derin",
Adres:“Kavaklıdere", Hobi:“oyuncak".
Key-Value Store
cocuk[‘Derin’] = {‘ilkisim’:’Derin’,
‘Adres’:’Kavaklıdere’, ‘Hobi’:’oyuncak’}
Column Stores – Tabular Data
Graph
47
23 Mart 13 Cumartesi
MongoDB













“Document Store”
C++’da geliştiriliyor
SQL sorgularına benzer bir sorgulama altyapısı var.
Lisansı AGPL
Master/slave replikasyonu destekliyor (otomatik failover geçişi sağlıyor)
Otomatik Sharding desteği var.
Sorguları JavaScript’te yazılıyor.
Özellikler yerine performans’ı ön plana çıkarmışlar.
32bit sistemlerde, 3gb hafıza kullanımı sınırı var.
Boş veritabanı dosyası 192 MB tutuyor.
Coğrafi bilgi sistemleri için desteği mevcut.
Ne zaman kullanılmalı ?: Dinamik sorguların olduğu, SQL’e benzer
indeksleme mekanizmalarını kullanmak istediğinizde veya büyük bir DB’de
iyi bir performans beklediğinizde.
Örnek olarak: MySQL veya PostgreSQL kullanıyorsanız, şemanız
dinamikse.
48
23 Mart 13 Cumartesi
MongoDB Veri Tipleri





Table eşittir Collection
post = {“yazar”:”Bugra”, “text”:”Blog post”,
“date” : datetime.datetime.utcnow() }
posts = db.posts
posts.insert(post)
posts.find_one({“yazar”:”Bugra”})
23 Mart 13 Cumartesi
MongoDB Kullanım Durumları





+ Arşivleme, durum loglama
+ Doküman yönetim sistemleri
+ Uygulamada JSON kullanıyorsanız uygun
olabilir.
+ Online oyunlarda küçük read/write’ların sık
olduğu durumlarda.
- Karmaşık transaction yapılarında.
23 Mart 13 Cumartesi
MongoDB Python Sürücüleri

PyMongo - http://api.mongodb.org/python/
current/installation.html
23 Mart 13 Cumartesi
CouchDB










“Document Store”
Erlang programlama dili ile geliştiriliyor.
Kolay kullanım ve veri bütünlüğü önemliyse.
Apache lisansına sahip
HTTP ve REST arayüzleriyle DB operasyonları
gerçekleştirilebiliyor.
master-master replikasyon yapabiliyor.
Yazma operasyonları sırasında Okuma yapabiliyor
Veriyi sürüm sistemlerinde olduğu gibi sürümlendirebiliyor.
Geçmiş verilere ulaşmak mümkün !
jQuery ile DB sorgulamak mümkün.
Ne zaman kullanılmalı ? : Bir verinin geçmiş sürümleri de
sizin için önemliyse, master/master replikasyon yapabilmek
istiyorsanız
52
23 Mart 13 Cumartesi
CouchDB Kullanım Durumları


HTTP/Rest arayüzü üzerinden bilgileri
sunmak, veriler üstünde işlem yapmak için
Veri bütünlüğüne önem verdiğiniz
durumlarda.
23 Mart 13 Cumartesi
CouchDB Python Sürücüleri

Couchdb-python http://code.google.com/p/
couchdb-python/
23 Mart 13 Cumartesi
Riak








“Key-value”
Erlang programlama dilinde geliştiriliyor.
Fault tolerance’a açık bir sistem.
Apache lisansına sahip
HTTP ve REST ile DB işlemleri gerçekleştirilebiliyor.
Verinin dağıtımı ve kümelendirme seçeneklerini belirlemek çok
basit.
Map/reduce algoritmasını veri kümenizde çalıştırabiliyorsunuz.
Full-text arama, indeksleme, sorgulama mevcut. (Riak Search
Sunucusu )
55
23 Mart 13 Cumartesi
Riak Kullanım Durumları





Yüksek bulunabilirlik
Hatayı kaldırır
Genişleyebilir
Operasyon dostu
Düşük gecikme
23 Mart 13 Cumartesi
Riak Python Sürücüleri

Riak-python-client https://github.com/
basho/riak-python-client
23 Mart 13 Cumartesi
Redis



Key-value store
Tüm veritabanı RAM’de tutuluyor. Bu yüzden
verilere erişim çok hızlı.
Basit bir datastore fakat basitliği, kullanım
kolaylığı, performansı küçük uygulamalar için
vazgeçilmez.
58
23 Mart 13 Cumartesi
Redis Kullanım Durumları



Kullanıcı bilgilerini tutmak
Hızlı bir şekilde saklamak ve sorgulamak
istediğiniz her veritipi için kullanılabilir.
Arama motoru oluşturmak için
◦ Riak-Search
http://wiki.basho.com/Riak-Search.html
23 Mart 13 Cumartesi
Redis Python Sürücüleri

redis-py https://github.com/andymccurdy/
redis-py
23 Mart 13 Cumartesi
Cassandra









Dağıtık key-value store, semi column-oriented
Java’da yazılıyor
BigTable ve Dynamo teknolojilerini içinde
barındırıyor.
Apache lisansına sahip
Thrift mesajlaşma altyapısını kullanıyor.
Verinin replikasyonu ve dağıtımı için “trade-off”
ayarlarına sahip.
Kolona göre arama yapıyor.
Yazmak okumaktan daha hızlı !
Apache Hadoop ile birleştirilebiliyor (MapReduce )
23 Mart 13 Cumartesi
Cassandra Kullanım




Bankalar
Finans kurumları
Gerçek zamanlı veri analizi yapmak için.
Yazmak / Okumaktan daha hızlı !
23 Mart 13 Cumartesi
Cassandra Python Sürücüleri

Pycassa - http://pycassa.github.com/
pycassa/
23 Mart 13 Cumartesi
Neo4J




Graph Database
GPLv3 veya AGPL lisansıyla dağıtılıyor.
Java’da yazılıyor.
Nesneler arasındaki ilişkiler yoluyla veriyi ifade
edebiliyor.
23 Mart 13 Cumartesi
Neo4J Kullanım Durumları


Nesneler arasındaki ilişkilerin yoğun olduğu
durumlarda.
İnsan takip uygulamalarında
◦ “Buğra Çakır’ın 03/04/2012 tarihinde Kızılay
Metrosuna girdiği anda Buğra Çakır’ın arkadaş
listesindeki kişilerden hangileri onun 100m
yarıçapında bulunuyordu”
23 Mart 13 Cumartesi
Neo4J Python Sürücüleri

python-embedded https://github.com/neo4j/
python-embedded
23 Mart 13 Cumartesi
HBase






Bigtable tipi veritabanı
Apache Lisansıyla dağıtılıyor.
Java’da yazılıyor.
Güvenilir read/write desteği var.
Tabloların sharding işlemi otomatik olarak
yapılabiliyor.
Thrift ve HTTP arayüzleriyle veriye ulaşmak,
üzerinde işlem yapmak mümkün
23 Mart 13 Cumartesi
HBase Kullanım Durumları



Gerçekten çok veriniz varsa
Bir kaç değil 10’larca sunucu kullanıyorsanız.
Rastgele, gerçek zamanlı read/write
durumlarında
23 Mart 13 Cumartesi
HBase Python Sürücüleri

Thrift üzerinden erişilebiliyor.
◦ http://wiki.apache.org/hadoop/Hbase/ThriftApi
23 Mart 13 Cumartesi
Performans


20.000 Wikipedia sayfasının indekslendiği bir
performans testbed’inde
Riak-MongoDB-Cassandra-HBase
performanslarını karşılaştıralım.
23 Mart 13 Cumartesi
Performans
23 Mart 13 Cumartesi
Performans
23 Mart 13 Cumartesi
Performans
DB
read/update
Performansı
MapReduce
Performansı
Cassandra
İyi
Çok İyi
Hbase
Kötü
Ortalama
MongoDB
İyi
Zayıf
Riak
Zayıf
Ortalama
23 Mart 13 Cumartesi
Sharding


Verilerin hangi makinaya yazılacağını ve
nereden okunacağını kendimizin belirlediği
yönteme Sharding adı verilir.
En popüler algoritmalardan birisi Consistent
Hashing’dir.
74
23 Mart 13 Cumartesi
Sharding
A
0,1,2,3
B
4,5,6,7
C
8,9,a,b
D
c,d,e,f
Hash 71db329b58378c8fa8876f0ec04c72e5 -> node B’ye eşleniyor.
Okuma/Yazma/Silme/Değiştirme B nodunda gerçekleşecek.
75
23 Mart 13 Cumartesi
Redis Performans





Redis Anahtar Sayısı : 6633751
Kullanılan Hafıza : 1GB
Kullanılan Backend Dosya : 230 MB
‘0’ dan Ayağa Kalkma Zamanı : 10sn
Anahtar Arama Zamanı(Key/Value Perf): 0 ms
76
23 Mart 13 Cumartesi
Grid Hesaplama



MPI üzerinden hesaplama yapılıyor.
“Shared filesystem” mimarisi
“Network Bandwidth” Grid mimarisindeki
performansı doğrudan etkileyen bir elemandır.
77
23 Mart 13 Cumartesi
İhtiyaç ?

İhtiyacımız olan;
◦ 1. Verinin güvenilir bir şekilde depolanması.
◦ 2. Depolanan verinin üzerinde analiz işlemlerinin
gerçekleştirilmesi.
78
23 Mart 13 Cumartesi
Apache Nutch - Lucene


Doug Cutting – Apache Lucene – Metin arama
kütüphanesi
Apache Nutch – Açık kaynak web crawling,
“arama” kütüphanesi
79
23 Mart 13 Cumartesi
Arama Motoru Yapmak ?

Doug Cutting’in tahmini :
◦ 1 milyar sayfa – index’e sahip bir arama motorunun
donanım için 0.5 milyon dolara ihtiyacı var.
◦ Aylık işletme maliyeti tahminen 30.000 dolar.
80
23 Mart 13 Cumartesi
Apache Nutch




2002 yılında – web crawling yapmak için
oluşturulan bir proje.
Milyonlarca web sitesi indekslenebiliyor.
Fakat “Milyarlar” çalışmıyor !
Bunun için
◦ NDFS ( Nutch Distributed File System )
81
23 Mart 13 Cumartesi
Arama Motoru Yapmak ?

Sayfa veritabanı – CrawlDB
◦
◦
◦
◦
En son güncellenme zamanı
Güncellenme aralığı
Sayfa içeriği
İçerik doğrulaması
23 Mart 13 Cumartesi
Arama Motoru Yapmak ?


Çekilecek Sayfa Listesi – FetchList
Gazete sayfaları
◦
◦
◦
◦
http://www.hurriyet.com.tr
http://www.milliyet.com.tr
http://www.sabah.com.tr
http://www.sozcu.com.tr
23 Mart 13 Cumartesi
Arama Motoru Yapmak ?

Ham sayfa verileri – PageContent
◦ FetchList’deki sayfalardan çekilmiş bilgilerin
bulunduğu veritabanıdır.
◦ Bu bilgiler ham olarak durmaktadır. Üzerinde bir
işlem yapılmaz.
23 Mart 13 Cumartesi
Arama Motoru Yapmak ?

İşlenmiş sayfa verileri - ParsedPageContent
◦ Ham verilerin belli kodeklerle işlenmiş hallerinin
bulunduğu veritabanıdır. Bu kodeklerle örneğin
HTML, PDF, Open Office, Microsoft Office, RSS ve
diğer formatlardaki bilgileri çözümlemek
mümkündür.
23 Mart 13 Cumartesi
Arama Motoru Yapmak ?

Bağlantı veritabanı – LinkGraph
◦ PageRank ile bir web sitesine kaç tane link olduğunu
gösteren veritabanıdır.
23 Mart 13 Cumartesi
Arama Motoru Yapmak ?

Arama Fihristi – FullTextSearchIndex
◦ Çekilen web sitesi içeriklerinden oluşturulan klasik
aramanın gerçekleştirilmesini sağlayan veritabanıdır.
◦ Apache Lucene ile oluşturulur.
23 Mart 13 Cumartesi
Apache Nutch




Google GFS (Google File System)
Google MapReduce
2006’da Nutch’daki NDFS algoritmaları Lucene
alt projesinden ayrılıp yeni bir kök projesi olan
Hadoop’u oluşturdu.
Doug Cutting Yahoo’ya katıldı. 2008’de
10.000 Hadoop core cluster ile Yahoo’nun
production search index altyapısı tanıtıldı.
88
23 Mart 13 Cumartesi
Apache Hadoop


NDFS -> HDFS ( Hadoop File System )
2008’de Hadoop’un kullanıldığı alanlar
çeşitlendi.
◦ Last.fm
◦ Facebook
◦ New York Times
89
23 Mart 13 Cumartesi
Soy ağacı
90
23 Mart 13 Cumartesi
Ekosistem
1.
2.
3.
4.
5.
Herşey nasıl başladı ? Veri miktarı arttı.
Apache Nutch ile web crawling yaptık.
Büyük verileri kaydettik. HDFS doğdu !
Bu verileri nasıl kullanacağız ?
MapReduce algoritması ile analitik uygulamalar geliştirip, çalıştırdık – java, python
gibi dillerle.
6. Yapısal olmayan verileri ne yapacağız ? – Web logs, Click streams, Apache logs,
Server logs – fuse,webdav, chukwa, flume, Scribe
7. Hiho ve sqoop’u bu verileri HDFS’e aktarmak için kullacağız – RDBMS’den bilgileri
alabiliyoruz !
8. MapReduce programlayabilmek için yüksek seviyede diller tanımlandı– Pig, Hive,
Jaql
9. BI araçları türedi, raporlama, Intellicus 10 . Yüksek seviye diller için akış kontrol araçları tanımlandı. - oozie
11. Hadoop işlerinin kontrolü için Hive, HDFS’i görüntülemek için Hue, karmasphere,
eclipse plugin, cacti, ganglia
12. Yardımcı çatılar geliştirildi. Avro (Serialization), Zookeeper (Koordinasyon)
13. Daha yüksek seviyede işlemler için Yapay Öğrenme Mahout, Yeni bir mapreduce
tekniği Elastic map Reduce
14. OLTP – HBase
91
23 Mart 13 Cumartesi
BigData Ekosistemi
92
23 Mart 13 Cumartesi
Hadoop Ekosistem











Ambari Deployment, konfigürasyon ve izleme
Flume
Log ve event verilerinin toplanması
HBase
Column-oriented DB
HDFS
Hadoop’un kullandığı dağıtık dosya sistemi
Hive
SQL-benzeri sorgulanabilen bir datawarehouse
MapReduce Kümeler üstünde paralel hesaplamayı sağlayan
algoritma
Pig Hadoop MapReduce hesaplamaları için üst
düzey bir dil
Oozie
Orkestrasyon ve workflow aracı
Sqoop
RDBMS’lerden verileri almaya yarayan araç
Whirr
Cloud deployment’larını sağlayan araç
ZookeeperKüme üyelerinin koordinasyonu ve
konfigürasyonu için kullanılan araç
93
23 Mart 13 Cumartesi
Hadoop Ekosistem



Gelen Veriler: Sqoop, Flume
Koordinasyon ve Akış: Zookeeper, Oozie
Yönetim ve Dağıtım: Ambari, Whirr
94
23 Mart 13 Cumartesi
Apache Sqoop


SQL’den bilgileri alıp Hadoop ekosistemine
aktarmayı kolaylaştırır.
Hadoop ekosisteminden SQL’e bilgileri
aktarmayı kolaylaştırır.
23 Mart 13 Cumartesi
Apache Sqoop
23 Mart 13 Cumartesi
Apache Flume


Hadoop dışındaki veri kümelerini ekosisteme
aktarmayı sağlar.
Akış bazlı bir mimariye sahiptir.
23 Mart 13 Cumartesi
Apache Flume
23 Mart 13 Cumartesi
Apache Oozie


Hadoop işlerinin (jobs) yönetimini sağlar.
İşlerin akış şemalarında işlemesini sağlar.
23 Mart 13 Cumartesi
Apache Oozie
23 Mart 13 Cumartesi
Apache Zookeper

Hadoop ekosistem elemanlarının dağıtık
konfigürasyonunu, işlevsel kontrolünü, birlikte
çalışabilirliğini sağlar.
23 Mart 13 Cumartesi
Apache Pig




Hadoop MapReduce hesaplamaları için yüksek
seviyede bir dil arayüzü tanımlar.
raw = LOAD 'excite.log' USING PigStorage('\t')
AS (user, time, query);
clean1 = FILTER raw BY
org.apache.pig.tutorial.NonURLDetector(query
);
uniq_frequency3 = FOREACH
uniq_frequency2 GENERATE $1 as hour, $0 as
ngram, $2 as score, $3 as count, $4 as mean;
23 Mart 13 Cumartesi
Apache Hive




Hadoop için veri ambarı uygulamasıdır. Büyük
veriler üzerinde analiz işlemleri yapmayı
sağlar.
hive> CREATE TABLE pokes (foo INT, bar
STRING);
hive> CREATE TABLE invites (foo INT, bar
STRING) PARTITIONED BY (ds STRING);
ALTER TABLE pokes ADD COLUMNS (new_col
INT);
23 Mart 13 Cumartesi
Apache Hive


hive> LOAD DATA LOCAL INPATH './
examples/files/kv1.txt' OVERWRITE INTO
TABLE pokes;
hive> SELECT a.foo FROM invites a WHERE
a.ds='2008-08-15';
23 Mart 13 Cumartesi
Hadoop Dağıtımları

Cloudera – CDH Dağıtımı
◦ Hadoop, Hive, Pig, Hbase, Zookeeper, Flume ,Sqoop,
Mahout, Whirr, Oozie, Fuse-DFS, Hue

Hortonworks
◦ Hadoop, Hive, Pig, Hbase, Zookeeper, Ambari,
Hcatalog

IBM
◦ Hive, Oozie, Pig, Zookeeper, Avro, Flume, HBase,
Lucene

Microsoft
◦ Hive, Pig
105
23 Mart 13 Cumartesi
MapReduce



Veri işlemek için kullanılan bir yöntem
algoritmadır.
Büyük veri setlerinin paralel olarak
işlenmesinde kullanılır.
Verileri liste şeklinde düşündüğümüz zaman
bunlar üzerinde fonsiyonel dillerdeki gibi
işlem yapmamızı sağlar.
106
23 Mart 13 Cumartesi
MapReduce / Hadoop
23 Mart 13 Cumartesi
Teşekkürler !
23 Mart 13 Cumartesi
Download