buğra Çakır - bmo.org.tr · kullanım modeli -nosql 15 23 mart 13 cumartesi. kullanım modeli...
TRANSCRIPT
NoSQL Buğra Çakır
23 Mart 13 Cumartesi
1. Veritabanı sistemleri, tarihsel gelişim2. NoSQL Dünyası3. Hadoop Ekosistemi
Sunum Planı
23 Mart 13 Cumartesi
1. System R, IBM SEQUEL2. Ingres QUEL3. Objeler ve bunların ilişkileri ->
Edgar Frank "Ted" Codd “A Relational Model of Data for Large Shared Data Banks”, Larry Ellison “Oracle”
4. Objeler ve ilişkiler üzerinde işlem yapmayı sağlayan operatörler -> SQL
5. Veri bütünlüğünü sağlayan yöntemler
3
RDBMS Sistemleri
23 Mart 13 Cumartesi
4
Büyük Balıklar
23 Mart 13 Cumartesi
IBMOracleMicrosoftOther
5
RDBMS Pastası
23 Mart 13 Cumartesi
6
Açık Kaynak Alternatifler
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
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
Veri Depolama
23 Mart 13 Cumartesi
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
Veri Depolama
23 Mart 13 Cumartesi
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
Bunları Bilmek Lazım!
23 Mart 13 Cumartesi
Farklı senaryolar için yenilikçi özelliklere sahip veritabanları kullanılabilir...
41
Sonuç ?
23 Mart 13 Cumartesi
◦Sakla◦İşle◦Analiz
42
NoSQL
23 Mart 13 Cumartesi
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
Yapılan Hata !
23 Mart 13 Cumartesi
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
Veya
23 Mart 13 Cumartesi
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
Yöntem
23 Mart 13 Cumartesi
Verinin Karakteristiği NoSQL SQLDinamik, ş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 fazlaysa
X
46
Nasıl bir seçim ?
23 Mart 13 Cumartesi
1. Document Stores Derinin kütüğü => İsim:“Derin",
Adres:“Kavaklıdere", Hobi:“oyuncak".2. Key-Value Store cocuk[‘Derin’] = {‘ilkisim’:’Derin’,
‘Adres’:’Kavaklıdere’, ‘Hobi’:’oyuncak’}3. Column Stores – Tabular Data4. Graph
47
NoSQL Tipleri
23 Mart 13 Cumartesi
“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
MongoDB
23 Mart 13 Cumartesi
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”})
MongoDB Veri Tipleri
23 Mart 13 Cumartesi
+ 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.
MongoDB Kullanım Durumları
23 Mart 13 Cumartesi
PyMongo - http://api.mongodb.org/python/current/installation.html
MongoDB Python Sürücüleri
23 Mart 13 Cumartesi
“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
CouchDB
23 Mart 13 Cumartesi
HTTP/Rest arayüzü üzerinden bilgileri sunmak, veriler üstünde işlem yapmak için
Veri bütünlüğüne önem verdiğiniz durumlarda.
CouchDB Kullanım Durumları
23 Mart 13 Cumartesi
Couchdb-python http://code.google.com/p/couchdb-python/
CouchDB Python Sürücüleri
23 Mart 13 Cumartesi
“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
Riak
23 Mart 13 Cumartesi
Yüksek bulunabilirlik Hatayı kaldırır Genişleyebilir Operasyon dostu Düşük gecikme
Riak Kullanım Durumları
23 Mart 13 Cumartesi
Riak-python-client https://github.com/basho/riak-python-client
Riak Python Sürücüleri
23 Mart 13 Cumartesi
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
Redis
23 Mart 13 Cumartesi
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
Redis Kullanım Durumları
23 Mart 13 Cumartesi
redis-py https://github.com/andymccurdy/redis-py
Redis Python Sürücüleri
23 Mart 13 Cumartesi
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 )
Cassandra
23 Mart 13 Cumartesi
Bankalar Finans kurumları Gerçek zamanlı veri analizi yapmak için. Yazmak / Okumaktan daha hızlı !
Cassandra Kullanım
23 Mart 13 Cumartesi
Pycassa - http://pycassa.github.com/pycassa/
Cassandra Python Sürücüleri
23 Mart 13 Cumartesi
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.
Neo4J
23 Mart 13 Cumartesi
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”
Neo4J Kullanım Durumları
23 Mart 13 Cumartesi
python-embedded https://github.com/neo4j/python-embedded
Neo4J Python Sürücüleri
23 Mart 13 Cumartesi
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
HBase
23 Mart 13 Cumartesi
Gerçekten çok veriniz varsa Bir kaç değil 10’larca sunucu kullanıyorsanız. Rastgele, gerçek zamanlı read/write
durumlarında
HBase Kullanım Durumları
23 Mart 13 Cumartesi
Thrift üzerinden erişilebiliyor.◦ http://wiki.apache.org/hadoop/Hbase/ThriftApi
HBase Python Sürücüleri
23 Mart 13 Cumartesi
20.000 Wikipedia sayfasının indekslendiği bir performans testbed’inde
Riak-MongoDB-Cassandra-HBase performanslarını karşılaştıralım.
Performans
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
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
Sharding
23 Mart 13 Cumartesi
A 0,1,2,3B 4,5,6,7C 8,9,a,bD c,d,e,f
75
Sharding
Hash 71db329b58378c8fa8876f0ec04c72e5 -> node B’ye eşleniyor.
Okuma/Yazma/Silme/Değiştirme B nodunda gerçekleşecek.
23 Mart 13 Cumartesi
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
Redis Performans
23 Mart 13 Cumartesi
MPI üzerinden hesaplama yapılıyor. “Shared filesystem” mimarisi “Network Bandwidth” Grid mimarisindeki
performansı doğrudan etkileyen bir elemandır.
77
Grid Hesaplama
23 Mart 13 Cumartesi
İhtiyacımız olan;◦ 1. Verinin güvenilir bir şekilde depolanması.◦ 2. Depolanan verinin üzerinde analiz işlemlerinin
gerçekleştirilmesi.
78
İhtiyaç ?
23 Mart 13 Cumartesi
Doug Cutting – Apache Lucene – Metin arama kütüphanesi
Apache Nutch – Açık kaynak web crawling, “arama” kütüphanesi
79
Apache Nutch - Lucene
23 Mart 13 Cumartesi
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
Arama Motoru Yapmak ?
23 Mart 13 Cumartesi
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
Apache Nutch
23 Mart 13 Cumartesi
Sayfa veritabanı – CrawlDB◦ En son güncellenme zamanı◦ Güncellenme aralığı◦ Sayfa içeriği◦ İçerik doğrulaması
Arama Motoru Yapmak ?
23 Mart 13 Cumartesi
Ç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
Arama Motoru Yapmak ?
23 Mart 13 Cumartesi
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.
Arama Motoru Yapmak ?
23 Mart 13 Cumartesi
İş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.
Arama Motoru Yapmak ?
23 Mart 13 Cumartesi
Bağlantı veritabanı – LinkGraph◦ PageRank ile bir web sitesine kaç tane link olduğunu
gösteren veritabanıdır.
Arama Motoru Yapmak ?
23 Mart 13 Cumartesi
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.
Arama Motoru Yapmak ?
23 Mart 13 Cumartesi
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
Apache Nutch
23 Mart 13 Cumartesi
NDFS -> HDFS ( Hadoop File System ) 2008’de Hadoop’un kullanıldığı alanlar
çeşitlendi.◦ Last.fm◦ Facebook◦ New York Times
89
Apache Hadoop
23 Mart 13 Cumartesi
90
Soy ağacı
23 Mart 13 Cumartesi
1. Herşey nasıl başladı ? Veri miktarı arttı.2. Apache Nutch ile web crawling yaptık.3. Büyük verileri kaydettik. HDFS doğdu !4. Bu verileri nasıl kullanacağız ? 5. 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, Scribe7. 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,
Jaql9. BI araçları türedi, raporlama, Intellicus 10 . Yüksek seviye diller için akış kontrol araçları tanımlandı. - oozie11. Hadoop işlerinin kontrolü için Hive, HDFS’i görüntülemek için Hue, karmasphere,
eclipse plugin, cacti, ganglia12. 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 Reduce14. OLTP – HBase
91
Ekosistem
23 Mart 13 Cumartesi
92
BigData Ekosistemi
23 Mart 13 Cumartesi
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ç Zookeeper Küme üyelerinin koordinasyonu ve
konfigürasyonu için kullanılan araç
93
Hadoop Ekosistem
23 Mart 13 Cumartesi
Gelen Veriler: Sqoop, Flume Koordinasyon ve Akış: Zookeeper, Oozie Yönetim ve Dağıtım: Ambari, Whirr
94
Hadoop Ekosistem
23 Mart 13 Cumartesi
SQL’den bilgileri alıp Hadoop ekosistemine aktarmayı kolaylaştırır.
Hadoop ekosisteminden SQL’e bilgileri aktarmayı kolaylaştırır.
Apache Sqoop
23 Mart 13 Cumartesi
Apache Sqoop
23 Mart 13 Cumartesi
Hadoop dışındaki veri kümelerini ekosisteme aktarmayı sağlar.
Akış bazlı bir mimariye sahiptir.
Apache Flume
23 Mart 13 Cumartesi
Apache Flume
23 Mart 13 Cumartesi
Hadoop işlerinin (jobs) yönetimini sağlar. İşlerin akış şemalarında işlemesini sağlar.
Apache Oozie
23 Mart 13 Cumartesi
Apache Oozie
23 Mart 13 Cumartesi
Hadoop ekosistem elemanlarının dağıtık konfigürasyonunu, işlevsel kontrolünü, birlikte çalışabilirliğini sağlar.
Apache Zookeper
23 Mart 13 Cumartesi
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;
Apache Pig
23 Mart 13 Cumartesi
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);
Apache Hive
23 Mart 13 Cumartesi
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';
Apache Hive
23 Mart 13 Cumartesi
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
Hadoop Dağıtımları
23 Mart 13 Cumartesi
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
MapReduce
23 Mart 13 Cumartesi
MapReduce / Hadoop
23 Mart 13 Cumartesi
Teşekkürler !
23 Mart 13 Cumartesi