Tuesday, January 12, 2016

[DB Admin ~ BDA Admin] Big Data Okyanusuna Açılırken...






"En uzun yolculuklar bile, 
            tek bir adımla başlar.” 
-       Lao Tzu




Merhaba arkadaşlar,

Bu yazımda bir DBA’in BigData ile imtihanından ve Oracle Big Data Appliance (BDA) konfigürasyon serüveninden bahsedeceğim. Keyifli bir yazı yazmaya çalıştım . :)  Umarım bigdata çalışmalarına başlayan kişiler için faydalı olur.




Big Data” , son yılların en çok kullanılan kelimelerinden biri oldu artık ve neredeyse kıyısından bulaşmamış insan kalmadı. Hepimizin kafasında beliren ilk sorulardan biri şuydu sanırım:
“Halihazırdaki veritabanı çözümlerinden farkı ne olmalı veya neden yerini almalıydı? “

2013 yılı bir Gartner araştırması'na göre özetle durum bu şekilde idi
“Everyone's Doing It, No One Knows Why” :)

Yüksek lisans çalışmalarında gördüğüm , akademik çalışmaların ve artan veri boyutunu işleme ihtiyaçlarının sektörde ekonomik karşılığının artmasıyla projeler artmıştı. Başarılı pekçok bigData yönetim araçları ve projeleri artık hayatımıza girmiş bulunmaktadır.

Peki ofisde karşılığı neydi?

Dürüst olmak gerekirse Oracle veritabanında BigData benim için big datafile demekti ve max 2-3 TB i görmüştü. Bu datafileları parçalamak taşımak backuplamak o kadar iş yükü getirirken, hadoop ortamında Petabyte'ların geçmesi göz korkutuyordu.

Son yıllarda artan “Cloud” lu sunumlardan sadece donanım, erişim anlamında değil veri kapasitesi tarafında da artışların olacağı , farklı veri işleme çözümlerinin de olacağını tahmin ediyordum, ancak hosting tarzı veritabanı servisi sağlama şeklinde düşünüyordum.

 Ofise geri dönelim :)

Neden bigData peki? Benim oracle veritabanımda yaptığım performance tuningler , exadata compression’lar  yetmiyor muydu yetemez miydi diye düşünebilirsiniz. Data boyutumuz çok fazla değilken CPU dan kazanma çok öncelikli idi ve burda core sayısını artırıp memory yi etkin şekilde kullanınca işlerimizi hallediyorduk, uzun raporlar saatleri alsa da.

Veri kaynakları değişti !

Ancak günümüzde datanın kaynağı da değişti. Artık herşey bir data kaynağı olarak kendine yer buluyor. Bir serverın log çıktıları, bir kullanıcının web sayfası üzerindeki mouse hareketleri, bir sensörün kaydettiği bilgiler, bir arabanın bulunduğu noktalar.. ;İşte bütün bu datayı toplamak saklamak ve en önemlisi işlemek klasik veritabanı çözümlerinin ötesinde bir mimari gerektiriyor.

/u01 altında tutulan datalarımızı zaman geldi +DATA ya taşımıştık. :)

Datanında dağıtık olarak tutulduğu HDFS dosyalama yapıları oluşturuldu. Bunun üzerinde paralel işlemler yapabilen YARN/map-reduce modülleri sorgulamalar yapıldı. Ancak burdaki en önemli kriter datanın paralel sorgulamasında birbiri ile ilişkili olmaması idi. Analiz sorgulamaları için muhteşem bir altyapı olduğunu düşünüyorum.

Hello world! kadar klasik örneği göstermesem olmaz :)

Klasik wordcount map/reduce  uygulmasını bilirsiniz. Her node kendi üzerinde word count yapsın daha sonra çıkarılan değerlerde işlemler son bulana kadar tekrar etsin.


Buraya kadar tamam, tüm dba lerin şu an şu soruyu sorduğunu düşünüyorum,

Peki buraya nasıl data aktarıcaz nasıl monitor edicez ? :)

Data atma yöntemleri olarak çeşitli araçlar geliştirilmekte. Başta da dediğim gibi data kaynağı çok çeşitli olunca atma yöntemleri de değişiyor. Birkaç araca değinmek gerekirse,

Oracle SQL*Loader ile text den dosya atıp, externalden okuduğumuz günler ne güzeldi :))

Bir serverın çıktısı gibi stream data varsa FLUME adında çok güzel bir tool var. Ne gelirse o kaynakdan hadoop'a aktar diyebiliyorsunuz. SQOOP adında bir tool ile klasik veritabanı çözümlerinden data aktarılabiliyor. Bu toolları aynı zamanda ODI ile entegre edip çalıştırabiliyorsunuz, entergrasyonu vakit alsa da, sonunda klasik ODI işlerimizin yanında gayet güzel çalışıyor.

Nerdesin SQLDeveloper ? :)

Monitoring ekranlarında HUE adında kullanışlı bir arayüzlü tool var. Hadoop ortamında ki datalarımıza , çalışan joblara bakabiliyoruz.

Datayı sorgularken SQL den vazgeçemeyenler için HIVE adında bir araç var. SQL sentaksı ile datamızı sorgulayabilyoruz, burda  datanın atılma şekline göre delimiter vererek sorgulama yapabiliyoruz. NOT: SQLDeveloper - Hive bağlantısı yapabiliyoruz

Komut satırından hoşlanan arkadaşlar için de gayet kullanışlı bu araçlar. Örneğin ;

$ hadoop fs -ls /user/benimUser

şeklinde bir sorgu ile attığım dataya bakabilirim.

Nasıl yöneteceğiz?

Cluster oluşturma kurma kısmında bizim işimiz başlıyor aslında. Bu noktada open source kaynaklardan kendimiz build edebiliriz. Ancak birkaç ticari firma bu işi yapıyor tabiki .

EM Grid vardır umarım :)

Ben şu an Oracle BDA ile ilgileniyorum.[1] Oracle bu üründe  Cloudera altyapısını güçlü serverlar ile birleştirip bir bigdata çözümü sunuyor bize.[2] Coudera yönetim sayfasından ekosistem hakkında son durumları görebiliyoruz ve yönetim yapabiliyoruz. Ayrıca Oracle Enterprise Manager 12c Relesase 5 ile big data plug-inleri geldi ve hergün kullandığımız EM arayüzlerinden BDA için de monitoring yapabiliyor olduk. HUE üzerinden HIVE tablo tanımlarımızı görebiliyoruz.

Hadoop clusterlar ile uğraşan dba'lere en sık gelen sorulardan biri de güvenlik nasıl sağlanıyor bu sistemde. Arkadaşlar aslında bir hadoop cluster konfigure etmekle geçen vakitde güvenlik konularında geçiyor.

Grant yapabiliyoz mu :)

Hadoop başlangıç mimarisinde güvenlik dikkate alınmamış bir konu malesef. Kerberos authentication temel alınarak basit bir güvenlik anlayışı var.

Kerberos ile tanışma günü

Örneğin terminal makinemizi açarken kullandığımız user/şifre bilgileri bizim kendi domainimzde kalıyor ve hadoop ortamı için KERBEROS yetkilendirmede ayrı işlemler gerkiyor. Bunu şöyle söyleyebilirim. İşletim sistemine Ali veya Veli olarak gelsenizde , hadoopa bağlanırken aldığınız ticketı Deli olarak alabilrisinzi ve deliler hep aynıdır ya ordada aynı yetkiler ile geçersiniz. Normalde bi makineye bağlanırken firewall kayıtları açarsınız yetki istersniz burda yok işte onlar :))

Böyle mi kaldı demeyin, kerberos ile Active Directory,  LDAP bağlantısı yapılabiliyor. Uzun zaman alsa da imkansız değil. :))

Yetkilendirme konusu Oracle'ında yatrım yaptığı bir konu, SENTRY entegrasonu , ACL mimarisinin etkileştirilmesi ile dizin bazında yetkilendirme yapılabiliyor ancak bu konfigürasyonlar çok vakit alıyor. Hadoop ekosistemindeki her parça kırınım gelişmekte olduğu için entegrasyonlarını yapmak ve mimaride oturtmak çok zor arkadaşlar. Oracle BDA bu konuda bizi büyük dertden kurtarmaktadır.

DBCA ile ne güzel database kurardık :)

Kurulum aşamasında mammoth utility ile oracle cluster kurulumunu gerçekleştiriyor. Bu aşamadan sonra sağlıklı bir clusterınız varsa yazılımcılarla karşılaşmaya kendinizi hazırlayın. :)

Hatalar hatalar... bu konuda Google, Oracle Support ve Cloudera blogları gayet yardımcı oluyor.


Evet  arkadaşlar. umarım faydalı bir yazı olur.

Sorularınız veya paylaşımlarınızı bilmek isterim.

Erkan

[1] https://www.oracle.com/engineered-systems/big-data-appliance/index.html 
[2] http://www.cloudera.com/content/www/en-us.html



No comments :

Post a Comment