Hbase Kullanım SenaryolarıTalat UYARER
Email: [email protected]: @talatuyarer
Hızlı Bir Bakış
● Hbase Hakkında ● Hbase Nedir ● Hbase Nasıl Çalışır● HDFS vs HBase● Kimler Hbase Kullanıyor
● Tanımlar● Kullanım Senaryoları
● İyi Uygulamalar● Kötü Uygumalar● Spesifik Çözümler
● Sorular
Hbase Hakkında
Hbase Nedir ?
● 2007 senesinde Powerset Firması tarafından geliştirilmeye başlandı.
● Google'ın Big Table makalesi temeli● HDFS üzerinde çalışabilen NoSQL datastore● Java ile yazılmış, Non-relational, Distributed sistem
Hbase Nedir ?
●Yüksek boyutta veri saklayabilir (TB/PB)
●Yüksek “throughput” sağlar●Unstructured yada variable column data saklayabilir.
●Devveri de rastgele okuma ve yazma yapmanıza olanak sağlar
Hbase Nedir ? / CAP Teorisi
Consistency (tutarlılık) : Dağıtık sisteme bağlı tüm node'larda aynı verilerin olması, Availability (kullanılabilirlik) : tüm isteklere her zaman cevap verilebilmesi Partition Tolerance (parça toleransı) : sistem parçalarından birinin çalışmaması durumunda sistemin düzgün devam etmesi
Ağustos 2013: Flurry 1k-1k nodelı cluster replicationı
Hbase Tarihçesi
20142008 2009 2010 2011 20132012
2012 Mayıs: HBaseCon 20122012 Mayıs: HBaseCon 2012
2013 Haziran: HBaseCon 20132013 Haziran: HBaseCon 20132011: FB
Mesajlar Hbase'de
2011: FB Mesajlar Hbase'de 2009 Yazında
StumbleUpon HBase ~0.20Production da
2009 Yazında StumbleUpon HBase ~0.20Production da
2011 Kasım: Cassini2011 Kasım: Cassini
2013PhoenixProjesi Başladı
2013PhoenixProjesi Başladı2011: Web
Crawl Cache2011: Web Crawl Cache
2011 Eylül: HBase TDG Yayınlandı
2011 Eylül: HBase TDG Yayınlandı
Kasım 12: HBase in Actionyayınlandı
Kasım 12: HBase in Actionyayınlandı
2015
2014 Mayıs: HBaseCon 20142014 Mayıs: HBaseCon 2014
Ocak 2015 Hbase v1.0.0Ocak 2015 Hbase v1.0.0
Hbase Nasıl Çalışır / Daemonlar
•HBase Master•RegionServer•ZooKeeper•HDFS•NameNode/Standby NameNode•DataNode
Hbase Nasıl Çalışır / Daemon Konumları
Hbase Master
Zookeeper
Hadoop Namenode
Standby Namenode
Hbase Region Server
Hadoop Datanode
Hbase Region Server
Hadoop Datanode
Hbase Region Server
Hadoop Datanode
Hbase Region Server
Hadoop Datanode
Hbase Master
Zookeeper
Hbase Master
Zookeeper
Master Serverlar
Slave Serverlar
Hbase Nasıl Çalışır / Okuma - Yazma
Hbase Nasıl Çalışır
Row Key
Column Family 1 Column Family 2
Column Name
Column Value
Column Name
Column Value
Tablolar Column Familyler den kırılıp store ediliyor
Kimler Hbase Kullanıyor
Tanımlamalar
Kullanım Tipi Tanımlama
●Veri olarak ne saklanacak ?● Entity data ● Event data
●Verinin kullanım şekli nasıl ?● Operasyonel kullanım● Analitik kullanım
●Veriye erişim nasıl ?● Real time vs. Batch ● Random vs. Sequential
Veri olarak ne saklanacak ?
Entity data nedir ?Verinin şuan ki durumunun tutulmasıGenelde gerçek zamanlı (real time) okuma ve yazma yapılır.
● Hesaplar● Kullanıcılar● Geolocation noktaları● Tıklama Sayısı ve Metrikleri
İnsanların yada makinelerin sayısının artmasıyla milyarlarca farklı entity data oluşturulabilir.
Veri olarak ne saklanacak ?
Event data nedir ?Zamana bağlı birbirini takip eden data tipidir. Genelde real time yazma işlemi yapılır.
● Zamana bağlı Sensor datası● Borsa (Hisse senedi) bilgisi● Arşiv Metrikler● Tıklama time-seriesleri
Zamana bağlı olduğu için zaman ilerledikçe veri büyüyecektir.
Eğer elinizdeki veri [Entityler] * [Eventler] = Dev veri ile uğraşıyorsunuz demektir.
Verinin kullanım şekli nasıl ?
● Entity odaklı sorular● E entitysi hakkında herşeyi bana getir● E entitysinin en son V eventini getir ● E entitysinin en son n adet V eventini getir● E nin [t1,t2] zaman aralığındaki V eventlerini getir.
● Zaman ya da Event odaklı sorular● [t1,t2] arasındaki her bir entityi getir.● Bir takım kriterlere uyan event V leri bul
Veriye erişim şekli nasıl ?
HBase Client
Put, Incr, Append
HBase Client
Get, Scan
Bulk Import
HBase Client
HBase Replication
HBase Replication
low latency
high throughput
GetsShort scan
Full Scan, MapReduce
HBase Scanner
Kullanım Senaryoları
Kullanım Senaryoları
Doğru Kullanım● Simple Entities● Mesaj DB● Graph Store● Metrik Store
Kötü Kullanım● Value olarak Büyük veri saklama● RDBMS port● Analitik Arşivi
Simple Entities
● Saf Entity saklanır. Saklanan entityler arasında ilişki yoktur● Batch yada real time random writes● Real-time random read● RDMS'in denormalize hali olabilirler● Birden fazla kaynaktan farklı yapıda veri
barındırabilir● Şemaları:
● Her bir entity için bir satır(row)● Rowkey, entitynin ID si yada hash'i● Col qualifer'ı Property/Field olabilir
Simple Entities
Teklif Kişiselleştirme Sistemi
Row Key Column Family 1 Column Family 2
UserID Kullanıcı Geçmişi ve Profil Bilgisi
Kullanıcı Email Geçmişi
Kullanıcı geçmişi ve bilgileri üstüne
yazılıyor
Email aktivitileriHer gün için bir
column'a yazılıyorYaklaşık 200 col.
Simple Entities
HBase Client
Put, Incr, Append
HBase Client
Get, Scan
Bulk Import
HBase Client
HBase Replication
low latency
high throughput
GetsShort scan
Full Scan, MapReduce
HBase Scanner
HBase Replication
Solr
Mesaj Store
● Mesaj Verisi:● Realtime Random writes: Emails, SMS, MMS, IM ● Realtime random updates: Msg okuma, taşıma, silme vb.● Zamana göre sıralı top-N gönderinin okunması● Farklı boyutlar kayıt büyüklükleri● Time series veri, ama büyük oranda random read/write
● Şeması:● Row da kullanıcının feed/inbox'ı tutulur● Row key'i UID or UID + zaman dır● Column Qualifier'ı zaman yada konuşma id+zaman.● Column Familyler Index için kullanılır.
Mesaj Store
● Kullanım Örnekler:● Facebook Mesajlar, Xiaomi Mesajlar● Telekom SMS/MMS servisleri● Tumblr, Pinterest gibi Feedler
Mesaj Store
HBase Client
Put, Incr, Append
HBase Client
Get, Scan
Bulk Import
HBase Client
HBase Replication
HBase Replication
low latency
high throughput
GetsShort scan
Full Scan, MapReduce
HBase Scanner
Graph Store
● Graph Verisi: Tüm entityler ve ilişkileri● Batch ya da realtime, random writes● Batch ya da realtime, random reads
● Şema: ● Row da Node bilgisi tutulur● Row key Node Idsinden oluşur● Column Qualifier Edge ID ya da
properties:values bilgisinden oluşur● Kullanım Örnekleri:
● Web Cache – Yahoo!, Trend Micro● Titan Graph DB ● Sessionization (finansal transactionlar,
click stream, network trafik)● Devlet (Suçlu tespiti işlemlerinde)
Graph Store
Row Key Column Family 1 Column Family 2
com.example.www:http/about/
Sayfadan çıkan linkler
Sayfaya Gelen Linkler
Sayfadan çıkan herlink bir column name
olarak tutulurSayfa gelen her link column olarak tutulur
Graph Store
HBase Client
Put, Incr, Append
HBase Client
Get, Scan
Bulk Import
HBase Client
HBase Replication
HBase Replication
low latency
high throughput
GetsShort scan
Full Scan, MapReduce
HBase Scanner
Metrik Store
● Metrik Verisi:● Çok sık güncellenen bir veridir.● Artırımsaldır● Bilgiler MR kodları ile yada Bulk load ile Hbase yüklenir
● Şeması:● Row da metrik bilgisi tutulur● Row key'i zaman içerir ve birden fazla bilgiden oluşabilir.● Column Qualifier'ı Property/Field olabilir
● Kullanım Alanları● Kampanya gösterim/ Tıklanma Sayıları (Reklam)● Sensor verisi (Enerji, Üretim, Otomotive)
Metrik Store
Row Key Column Family 1 Column Family 2
<adviserid:timestamp:adsid>
Statik bir veri taşır
Row key birden fazla veri taşır
Metrik Store
HBase Client
Put, Incr, Append
HBase Client
Get, Scan
Bulk Import
HBase Client
HBase Replication
HBase Replication
low latency
high throughput
GetsShort scan
Full Scan, MapReduce
HBase Scanner
Value olarak büyük veri saklama (Kötü)
● Columnlar da 3MB'dan büyük veri saklamak● Şeması:
● Normal entity pattern, bazı hücrelerinin boyutu büyük● Örneğin
● Fotograf yada videoyu Hbase'de saklamak● Bir hücrenin çok yüksek sayıda update alması
● Problem● Okuma için optimize ederken hata alır. (Compaction)● Hücreler atomiktir. Tüm hücreyi tekrar yazmak zorunda,
yazma işlemi çok sık olması durumunda hata verecektir.
Direk RDBMS portu olarak kullanma
● RDBMS şemasının biri bir aynısını kullanma● Şeması:
● RDBMS de olduğu gibi çok fazla tabloya sahip● Rowkey olarak primary key yada auto incr. ● Column qualifierlar field isimleri● Manuel olarak join işlemi yapılır.
● Çözüm● Hbase SQL database değil● Mutli-region yada Multi-table da transaction desteklenmiyor● Şemayı denormalize etmelisiniz.
Direkt RDBMS portu olarak kullanma
HBase Client
Put, Incr, Append
HBase Client
Get, Scan
Bulk Import
HBase Client
HBase Replication
HBase Replication
low latency
high throughput
GetsShort scan
Full Scan, MapReduce
HBase Scanner
Analitik Arşiv
● Zamana göre parçalanmış kronolojik data tutulması● Real time write, Kronolojik zaman primary index
olarak kullanılıyorsa● Tüm rowlar üzerinden Column odaklı veri toplama● Bulk read, genellikle dönemsel raporlama için
● Şeması:● Row key date+xxx yada salt+date+xxx.● Column Qualifier'ı Property/Field olabilir
● Örneğin● Tarih bazlı makine logları● Tam clickstream
Entity Time Series (Kısmen)
HBase Client
Put, Incr, Append
HBase Client
Get, Scan
Bulk Import
HBase Client
HBase Replication
HBase Replication
low latency
high throughput
GetsShort scan
Full Scan, MapReduce
HBase Scanner
Flume
Custom App
Analitik Arşiv
● Hbase'in öncelikli kullanım alanı için uygun değildir● Tüm tabloyı scan ederken hata verebilir● Compaction'da hata verebilir● Zamana bağlı regionlarda şişme olacağından
yazım esnasında hata verebilir● Hbase kullanmak yerine
● Veriyi HDFS üzerinde tutabilirsiniz.● Belirli zaman aralıklarında HDFS+MR ile veriyi toparlayıp Hbase'e yazılabilir
Analitik Arşiv
HBase Client
Put, Incr, Append
HBase Client
Get, Scan
Bulk Import
HBase Client
HBase Replication
HBase Replication
low latency
high throughput
GetsShort scan
Full Scan, MapReduce
HBase Scanner
Entity Time Series (Kısmen)
● Hbase uygun bir time series pattern.● Event verisi için Random write, Belirli bir event verisi için
random read yada data toplama (aggregation)● Veriler sayaçlar yardımı ile toplanıyor. Full aggregation yok.
● Şema● Rowkey: entity+timestamp yada entity+salt+timestamp● Column qualifer olarak property● TTL ile verilerin ömrü takip ediliyor. Geri dönük veri
yazımı yok● Örnek olarak
● OpenTSDB● Facebook Insights
Entity Time Series (Kısmen)
HBase Client
Put, Incr, Append
HBase Client
Get, Scan
Bulk Import
HBase Client
HBase Replication
HBase Replication
low latency
high throughput
GetsShort scan
Full Scan, MapReduce
HBase Scanner
Flume
Custom App
http://www.slideshare.net/cloudera/case-studies-session-3bhttp://www.slideshare.net/HBaseCon/case-studies-session-4a-35937605?next_slideshow=1http://www.slideshare.net/cloudera/5-h-base-con-2012-finalhttp://www.slideshare.net/cloudera/case-studies-session-3ahttp://www.slideshare.net/cloudera/8-h-base-the-use-case-in-e-bay-cassini?related=1http://www.slideshare.net/cloudera/case-studies-session-3bhttp://www.slideshare.net/cloudera/5-h-base-schemahbasecon2012http://blog.adroll.com/june-sf-hadoop-meetuphttp://www.cloudera.com/content/cloudera/en/resources/library/hbasecon/video-hbasecon-2012-real-performance-gains-with-real-time-data.htmlhttp://www.cloudera.com/content/cloudera/en/our-customers/Omneo.htmlhttp://www.slideshare.net/HBaseCon/case-studies-session-2-35937576http://www.youtube.com/watch?v=N5JY2E52fg4http://www.slideshare.net/HBaseCon/case-studies-session-6http://www.slideshare.net/cloudera/3-storing-and-manipulating-graphs-in-h-base-updated-last-minutehttp://www.slideshare.net/HBaseCon/case-studies-session-7http://www.slideshare.net/HBaseCon/hbase-just-the-basics
Kaynakça