NoSQL. Buğra Çakır. 23 Mart 13 Cumartesi



Benzer belgeler
Büyük Veri de Türkiye den Uygulama Örnekleri Dr. Güven Fidan

NoSql ve MongoDB. Saygın Topatan

Yapısal Olmayan Verinin Potansiyelini Açığa Çıkarın

BÜYÜK VERİ. Abdulkadir ŞAN Proje Yöneticisi 7/1/2014 VERİ SİSTEMLERİ. Anayurt Güvenliği Md. Yrd. Metin Madenciliği ve Kaynaştırma Sistemleri

MongoDB. Doğan Aydın. Eylül, 2011

Büyük Veri. Yrd. Doç. Dr. Özgür Yılmazel Gökhan Çapan Anadolu Üniversitesi

Büyük, Dağıtık, Veri Yoğunluklu Uygulamalarda Programlama Paradigmaları

Semantik Ağ ve Üst Veri Sistemleri İçin Yeni Nesil Veri Tabanı Yönetim Modeli: NoSQL. R. Orçun Madran Atılım Üniversitesi.

1 Milyon Kullanıcıya Nasıl Hizmet Veriyoruz? CloudLMS Teknik Alt Yapı ve Mimarimiz

Büyük Veri Analizi. Göksel Okay Kıdemli Sistem Mühendisi

Veritabanı Uygulamaları Tasarımı

16 Ekim 2010 Özgür Web Günleri Yeditepe Üniversitesi. Nosql Veritabanları

Veritabanı Yönetim Sistemleri (Veritabanı Kavramı) Veritabanı Sistemleri

İçerik. Apache Hadoop Project

MongoDB ve Diğer Veritabanlarında Sharding

Veritabanı. Ders 2 VERİTABANI

PostgreSQL - Yeni dönemdeki yeri

Tom PROBERT MapInfo Pro Global Üretim Müdürü. Büyük Veri ve (potansiyel) etkiler

İnternet Programcılığı

EMC Forum Yazılım Temelli Veri Depolama Moro Hekim Sistem Mühendisi

VERİ TABANI UYGULAMALARI

HP Yazılım Zirvesi - İstanbul 20 May Wyndham Grand Levent Erdem Alaşehir / Finansbank Güvenlik Olay Korelasyonunda Büyük Veri Kullanımı

ELIF KIOTZEOGLOU RESUL MURAD MERT PACOLARI

SİSTEM İHTİYAÇLARI (Tiger Enterprise / Tiger 3 Enterprise)

Büyük veriye genel bakış, mimari ve çözümler

BULUT BİLİŞİM VE BÜYÜK VERİ ARAŞTIRMA LABORATUVARI. Ekim 2017

LKD Kendi İlacını Kullanıyor

MongoDB. NoSQL Database

Veri Tabanı-I 5.Hafta

Veri Yönetiminde Son Nokta. Sedat Zencirci, Teknoloji Satış Danışmanlığı Direktörü, Orta Asya ve Türkiye

Büyük Veri Analitiği (Big Data Analytics)

İngilizce'de Relational Database Management System (RDBMS) olarak ifade edilir.

Büyük ve Hızlı Veri ile Değer Yaratmak

VERİ TABANI YÖNETİM SİSTEMLERİ

License. Veri Tabanı Sistemleri. Konular büyük miktarda verinin etkin biçimde tutulması ve işlenmesi. Problem Kayıt Dosyaları

1 Temel Kavramlar. Veritabanı 1

MOBİL UYGULAMA GELİŞTİRME

IBM Big Data. Emre Uzuncakara Big Data Sales IBM Corporation

SİGORTACILIKTA PERFORMANS: WEBLOGIC COHERENCE, EXADATA

MİLLİ SAVUNMA ÜNİVERSİTESİ KARA HARP OKULU DEKANLIĞI BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS TANITIM BİLGİLERİ

Zekeriya Beşiroğlu TURKISH ORACLE USER GROUP. Oracle Cloud G nin GİDİŞİ. C nin GELİŞİ. Bilginc IT Academy /Oracle University Istanbul

Red Hat Jboss Data Grid: Uygulamalarınıza Süper Güç Katın!

Veri Tabanı-I 1.Hafta

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

Copyright 2012 EMC Corporation. All rights reserved.

Veritabanı Yönetim Sistemleri (Veritabanı Kavramı) Veri Modelleri

Google Web Toolkit ile Öğretim Elemanı Otomasyon Sistemi

PAPERWORK TEKNİK MİMARİ

ÖZGÜR YAZILIMLAR İLE J2EE

SİSTEM İHTİYAÇLARI (Tiger Plus / Tiger 3)

10 yıllık sektör deneyimimiz ve yazılım teknolojileri alanında uzmanlaşmış eğitmen kadromuzla, size, ekibinize ve yazılım kültürünüze değer katacak

PostgreSQL - Yeni dönemdeki yeri

NoSQL. SQL ve Daha Fazlası (Not Only SQL) Hazırlayan: Ahmet Cevahir ÇINAR

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Veritabanı Yönetim Sistemleri, 2. basım Zehra ALAKOÇ BURMA, 2009, Seçkin Yayıncılık

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

Veri Tabanı Yönetim Sistemleri Bölüm - 3

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

Maltepe Üniversitesi Endüstri Mühendisliği Bölümü Veri Tabanı Yönetimi (END 210)

Veritabanlarına ve SQL'e Giriş. Devrim GÜNDÜZ. Teknoloji Destek Merkezi --

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

Cluster i Linux'ta Kümeleme Özgür Yazılım ve Açık Kaynak G 2006 Ali Erdinç Köroğlu

Zope Uygulama Sunucusu

DSİ kapsamında oluşturulan dağınık durumdaki verilerinin düzenlenmesi, yeniden tasarlanarak tek bir coğrafi veri tabanı ortamında toplanması,

Sunucu Taraflı JavaScript ile Gerçek Zamanlı Web Uygulamaları Geliştirme

Cloudera Training for Apache HBase

HASTANE OTOMASYONU VERİ TABANI YÖNETİM SİSTEMLERİ TEMEL VERİTABANI KAVRAMLARI

Sunucularımızı Gözleyelim. Oğuz oguzyarimtepe ~ gmail.com

PostgreSQL ve JBoss ile Java Kurumsal Çözümler. Nicolai Tufar

Servis Tabanlı Bir Melez Veri Erişim Mimarisi Önerisi

Ortamınızda A.D. veya LDAP sistemi var ise aşağıdaki linkten KoruMail LDAP-AD isimli dokümanı inceleyebilirsiniz.

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

LOUPE, IP Data ağlarında çalışan katma değerli servislerinizi kolaylıkla izlemenizi sağlar.

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Oracle Database 11g: Introduction to SQL

PostgreSQL ile Kümeleme Teknikleri

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

PostgreSQL Veritabanı Sunucusu. Başarım Arttırma Yöntemleri

1. Oracle Data Miner 11g Release 2 Kurulumu Aşamaları

Şişli Mesleki ve Teknik Anadolu Lisesi Web Programcılığı Dalı 2014 WEB PROGRAMCILIĞI DALI

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Mobil Cihazlarda Gömülü Veritabanlarının Karşılaştırılması: SqLite ve CouchBase Lite

Küme Bilgisayarlar. Enabling Grids for E-sciencE. Onur Temizsoylu. Grid ve Küme Bilgisayarlarda Uygulama Geliştirme Eğitimi ODTÜ, Ankara

Programlama Dilleri sıralaması Programlama Dilleri sıralaması 2016

FABREKA YAZILIM ELEKTRONİK DANIŞMANLIK TİC. LTD. ŞTİ.

BİL 542 Paralel Hesaplama. Dersi Projesi. MPJ Express Java Paralel Programlama

Veritabanı Yönetim Sistemleri (Veritabanı Kavramı) İş Kuralları ve Veri Modelleri

Büyük Veri İçin İstatistiksel Öğrenme (Statistical Learning for Big Data)

Veri Tabanı Hafta Dersi

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

Data Science Boot Camp

Ahmet Demirhan. 07 Haziran İstanbul

EMRE CAMADAN KİŞİSEL BİLGİLER EĞİTİM. E-Posta: Cep:

VERİTABANI VERİTABANIN AVANTAJLARI ÖZET

TeamBase5 BELEDİYE İLETİŞİM MERKEZİ SIEMENS

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

Mobil Cihazlardan Web Servis Sunumu

Bölüm 1: Veritabanı Yönetim Sistemlerine Giriş

Transkript:

NoSQL Buğra Çakır

Sunum Planı 1. Veritabanı sistemleri, tarihsel gelişim 2. NoSQL Dünyası 3. Hadoop Ekosistemi

RDBMS Sistemleri 1. System R, IBM SEQUEL 2. Ingres QUEL 3. 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

Büyük Balıklar 4

RDBMS Pastası IBM Oracle Microsoft Other 5

Açık Kaynak Alternatifler 6

Neden başka bir veritabanı? Yeni başlayan her projede ilişkisel veritabanı tercih ediliyor??? 7

EES - Eşzamanlılık Veri üstünde aynı anda yapılan işlemler Koordinasyon gerekiyor. Veri kaybı riski var. 8

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

EES - Standartlaşma SQL sürümleri birbirine benziyor. Öğrenmek çok kolay. Birinden diğerine geçmek kolay. 10

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

Kullanım Modeli -RDBMS 12

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

Bir uygulama - Bir veritabanı Her uygulamaya bir veritabanı. Web servisleriyle bağlıyoruz. JSON veya XML ile veriyi tanımlıyoruz. 14

Kullanım Modeli -NoSQL 15

Kullanım Modeli -NoSQL-SOA 16

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

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

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

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

NoSQL in Farkları SQL kullanmıyor. Teknolojik anlam ifade etmiyor, bir hareket! 21

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

İlişkisel Veri Katmanları Uygulama Veri Modeli - ER diyagram Veritabanı Saklama Modeli - RDBMS Satırlar ve Sütunlar... 23

NoSQL Veri Katmanları Key-Value Document Column Family Graph Toplam Modeli (Aggregates) - KeyValue, Document, Column Family 24

Toplamlar Birbirine bağlı nesnelerin bir arada tek bir nesne gibi değerlendirilmesi 25

Kümeleme Modelleri Scale Up - Sunucu gücünü yükseltme Scale Out - Yeni sunuculara dağıtma Toplam (Aggregate) bu modele uygun. 26

Veri Dağıtımı Yöntemler; Replikasyon ve sharding Master-slave Peer to peer 27

Tek sunucu Hiçbir dağıtım stratejisi yok. Bütün işlemler tek makina üzerinde gerçekleşiyor. 28

Sharding Veriyi alt kümelere ayırıyoruz. Her alt küme ayrı bir sunucuda çalışıyor. Sharding önceden tasarlanmalı! 29

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

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

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

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

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

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

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

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

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

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

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

Sonuç? Farklı senaryolar için yenilikçi özelliklere sahip veritabanları kullanılabilir... 41

NoSQL Sakla İşle Analiz 42

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

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

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

Nasıl bir seçim? Verinin Karakteristiği NoSQL SQL Dinamik, şema değişiyor Statik, şema değişmiyor Veri miktarı çok fazla, şema değişmiyor Gerçek zamanlı veriler geliyor Veri miktarı çok fazla, statik, şema değişmiyor, gerçek zamanlı değil Güncellenme ve okuma fazlaysa X X X X X X 46

NoSQL Tipleri 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 Data 4. Graph 47

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

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 })

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.

MongoDB Python Sürücüleri PyMongo - http://api.mongodb.org/python/ current/installation.html

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

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.

CouchDB Python Sürücüleri Couchdb-python http://code.google.com/p/ couchdb-python/

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

Riak Kullanım Durumları Yüksek bulunabilirlik Hatayı kaldırır Genişleyebilir Operasyon dostu Düşük gecikme

Riak Python Sürücüleri Riak-python-client https://github.com/ basho/riak-python-client

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

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

Redis Python Sürücüleri redis-py https://github.com/andymccurdy/ redis-py

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 )

Cassandra Kullanım Bankalar Finans kurumları Gerçek zamanlı veri analizi yapmak için. Yazmak / Okumaktan daha hızlı!

Cassandra Python Sürücüleri Pycassa - http://pycassa.github.com/ pycassa/

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.

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

Neo4J Python Sürücüleri python-embedded https://github.com/neo4j/ python-embedded

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

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

HBase Python Sürücüleri Thrift üzerinden erişilebiliyor. http://wiki.apache.org/hadoop/hbase/thriftapi

Performans 20.000 Wikipedia sayfasının indekslendiği bir performans testbed inde Riak-MongoDB-Cassandra-HBase performanslarını karşılaştıralım.

Performans

Performans

Performans DB read/update Performansı MapReduce Performansı Cassandra İyi Çok İyi Hbase Kötü Ortalama MongoDB İyi Zayıf Riak Zayıf Ortalama

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

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

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

Grid Hesaplama MPI üzerinden hesaplama yapılıyor. Shared filesystem mimarisi Network Bandwidth Grid mimarisindeki performansı doğrudan etkileyen bir elemandır. 77

İhtiyaç? İhtiyacımız olan; 1. Verinin güvenilir bir şekilde depolanması. 2. Depolanan verinin üzerinde analiz işlemlerinin gerçekleştirilmesi. 78

Apache Nutch - Lucene Doug Cutting Apache Lucene Metin arama kütüphanesi Apache Nutch Açık kaynak web crawling, arama kütüphanesi 79

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

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

Arama Motoru Yapmak? Sayfa veritabanı CrawlDB En son güncellenme zamanı Güncellenme aralığı Sayfa içeriği İçerik doğrulaması

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

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.

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.

Arama Motoru Yapmak? Bağlantı veritabanı LinkGraph PageRank ile bir web sitesine kaç tane link olduğunu gösteren veritabanıdır.

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.

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

Apache Hadoop NDFS -> HDFS ( Hadoop File System ) 2008 de Hadoop un kullanıldığı alanlar çeşitlendi. Last.fm Facebook New York Times 89

Soy ağacı 90

Ekosistem 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, 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

BigData Ekosistemi 92

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 ü m e ü y e l e r i n i n k o o r d i n a s y o n u v e konfigürasyonu için kullanılan araç 93

Hadoop Ekosistem Gelen Veriler: Sqoop, Flume Koordinasyon ve Akış: Zookeeper, Oozie Yönetim ve Dağıtım: Ambari, Whirr 94

Apache Sqoop SQL den bilgileri alıp Hadoop ekosistemine aktarmayı kolaylaştırır. Hadoop ekosisteminden SQL e bilgileri aktarmayı kolaylaştırır.

Apache Sqoop

Apache Flume Hadoop dışındaki veri kümelerini ekosisteme aktarmayı sağlar. Akış bazlı bir mimariye sahiptir.

Apache Flume

Apache Oozie Hadoop işlerinin (jobs) yönetimini sağlar. İşlerin akış şemalarında işlemesini sağlar.

Apache Oozie

Apache Zookeper Hadoop ekosistem elemanlarının dağıtık konfigürasyonunu, işlevsel kontrolünü, birlikte çalışabilirliğini sağlar.

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;

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);

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';

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

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

MapReduce / Hadoop

Teşekkürler!