Apache Ekosistemi, Veri Bilimi / 28 Ağustos 2021 / Miraç ÖZTÜRK
Merhaba, iyi günler.
Bugünkü yazımda; çok çeşitli alanlarda faklılaşmış çözümler gerçekleştirmemizi sağlayan ve günümüzün popüler konusu haline gelmiş olan Büyük Veri (Big Data) çözümüne yönelik oluşturulmuş araçlara (tools), kütüphanelere (library), çatılara (framework) ve yazılımlara (softwares) göz atacağımız kısa notları aktarıyor olacağım.
İlgili notlara geçiş yapmadan önce; Büyük Veri ve Büyük Veri üzerinde yer alan bazı kült yaklaşımlar, ek olarak popüler trendler üzerinde durmuş olduğum ön bilgilendirme yazısına göz atmanızı öneririm.
Ek bilgilendirme bağlantısı için lütfen tıklayınız…
Şimdiden iyi okumalar.
Büyük Veri dünyasına yönelik çözümleri literatür dışı iki bölüme ayırıp incelemeye çalışacağız.
Bu bölümleri ise; büyük katkılar ve desteklerde bulunan ve bulunmaya devam eden Apache Ekosistemi ve Apache Dışı Ekosistem olarak ifadelendireceğiz.
Hızlıca yazımıza Apache Yazılım Vakfı üzerine kısa bir bilgilendirme yaparak girizgah oluşturalım ve çözümlerimize giriş yapalım;
Makalede Neler Var ?
- #-The Apache Software Foundation (Apache Yazılım Vakfı)
- 1-Apache Hadoop HDFS
- 2-Apache Hadoop MapReduce
- 3-Apache Hadoop YARN
- 4-Apache Hadoop
- 5-Apache HIVE
- 6-Apache Mahout
- 7-Apache Chukwa
- 8-Apache Impala
- 9-Apache Drill
- 10-Apache Pig
- 11-Apache Submarine
- 12-Apache Helix
- 13-Apache Samza
- 14-Apache Kafka
- 15-Apache ZooKeeper
- 16-Apache Flume
- 17-Apache Storm
- 18-Apache Lucene
- 19-Apache Nutch
- 20-Apache Solr
- 21-Apache Shiro
- 22-Apache ManifoldCF
- 23-Apache Spark
- 24-Apache Flink
- 25-Apache Giraph
- 26-Apache Kudu
- 27-Apache Cassandra
- 28-Apache HBASE
- 29-Apache CouchDB
- 30-Apache Ignite
- 31-Apache Ant
- 32-Apache Maven
- 33-Apache CarbonData
- 34-Apache BookKeeper
- 35-Apache Atlas
#-The Apache Software Foundation (Apache Yazılım Vakfı)
Apache Hadoop HDFS (Hadoop Distributed File System): Apache Hadoop’un temel bileşenidir.
Hata oluşumuna karşı dayanıklı, güvenilir ve ölçeklenebilir veri depolama işlemleri gerçekleştirebilen, yapısal olarak kendi kendini onaran dağıtılmış bir dosya sistemidir. (File System)
Hadoop HDFS Ekip: Geliştirici Ekibi
Destekçi: Apache Software Foundation
Apache Hadoop MapReduce: Apache Hadoop’un temel bileşenidir.
Sistemleriniz üzerinde depolanmış veriyi filtreleyen ve işlediğiniz verilerin analizini sunan dağıtık bir programalama (Distributed Computing) modeli desteği sağlayan veri işleme sistemidir. (Data Sets)
Hadoop MapReduce Ekip: Geliştirici Ekibi
Destekçi: Apache Software Foundation
Apache Hadoop YARN: Apache Hadoop’un temel bileşenidir.
İşlenecek verilerin üzerinde kaynak yönetimi, uygulama kullanımı ve özelleşmiş kişisel ayarlamalar için veri depolama adına yaratılmış olan kaynak yönetim platformu sunan destek sistemidir. (Managment System)
Hadoop YARN Ekip: Geliştirici Ekibi
Destekçi: Apache Software Foundation
Apache Hadoop: Sıradan sunuculardan (Commodity Hardware) oluşan kümeler (Cluster) üzerinde büyük verileri işleme amaçlı olarak kullanılan uygulamaları çalıştıran ve Hadoop Distributed File System (HDFS) olarak ifade edilen dağıtık dosya sistemi ile Hadoop MapReduce özelliklerini bir araya getiren, Java dili ile geliştirilmiş açık kaynaklı popüler bir veri işleme kütüphanesidir.(Library)
Kurucu-Geliştirici-Destekçi:
Haddop Ekip: Geliştirici Ekibi
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Hadoop
Apache HIVE: Dağıtık dosya sistemlerinde büyük boyutlardaki veri kümelerini okumayı/yazmayı (Read/Write) ve yönetmeyi interaktif sorgular üzerinden gerçekleştirebildiğiniz açık kaynak kodlu bir sistemdir/projedir.
(System Programming)
Popüler olarak Veri Ambarı (Datawarehouse) projelerini Hadoop kümeleri üzerinde geliştirebilmek için Hive projesi kullanılmaktadır.Kullanımı ise SQL benzeri deyimler içerdiğinden dolayı geliştiriciler tarafından çokça tercih edilmektedir.
Kurucu-Geliştirici-Destekçi:
İlk Geliştiren: Facebook
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache HIVE
Apache Mahout: Ölçeklenebilir makine öğrenme algoritmaları oluşturmak için kullanılan açık kaynak bir projedir.
Başka bir deyişle ise; Apache Hadoop ile entegre edilebilen bir çeşit Makine Öğrenmesi (ML-Machine Learning) kütüphanesidir. (Sarah Sproehnl) (Library)
Kurucu-Geliştirici-Destekçi:
Mahout Ekip: Geliştirici Ekibi
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Mahout
Apache Chukwa: Büyük Veri projelerinde dağıtık sistemleri izlemek için kullanılan açık kaynaklı bir veri toplama projesidir/sistemidir. (System Programming)
Destekçi: Apache Software Foundation
Apache Impala: Büyük Veri projelerinde Hive gibi SQL temellerine benzer şekilde veri analizi yapabilmenizi sağlayan sistemdir.HIVE’e nazaran daha hızlı ve stabil performanslı işlem gerçekleştirmektedir.
HIVE üzerinde Map Reduce kullanılmaktadır,Impala ise kendine özgü özelleşmiş işlem yapısına sahiptir.(Engine)
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Impala
Apache Drill: Büyük boyutlardaki veri kümelerinin etkileşimli analizi için yoğunluklu veri kullanımı sağlayan dağıtılmış uygulamaları destekleyen açık kaynaklı bir yazılım çerçevesidir. (Framework)
Google BigQuery altyapı hizmeti olarak sunulan Google’ın Dremel sisteminin açık kaynaklı bir sürümüdür.
Apache Pig: Apache Hadoop üzerinde prosedurel veri akışı işlemleri oluşturmanızı ve veri kümelerinizi analiz etmenizi sağlayan bir veri işleme aracıdır/platformudur. (Tool)
Apache Pig üzerinde veri analiz işlemleri gerçekleştirmek için Pig Latin olarak bilinen üst düzey bir dil kullanılmaktadır.Geliştiricilerin analizleri gerçekleştirebilmesi için Pig Latin dilini kullanarak komut dosyaları/ komutlar yazmaları gerekmektedir.
Apache Submarine: Veri bilimcilerin uçtan uca makine öğrenimi ve buna bağlı iş akışları oluşturmasına olanak tanıyan bir uçtan uca platformdur. (Data Platform)
Apache Submarine makine öğrenmesi işlemlerine (hayat dögüsü) yönelik tüm detaylı analiz içeren adımların hizmetini sağlamaktadır.
Apache Helix: Büyük Veri projelerinde barındırılan bölümlenmiş, çoğaltılmış ve dağıtılmış kaynakların otomatik yönetimi için oluşturulmuş küme yönetimi çerçevesidir. (Framework)
Küme yönetimini, sistemin temel iş akışından ayırarak iş bölümü yapısı oluşturup yönetimsel yapıyı kontrolde tutar. (Kolay ve takip edilebilir geliştirme imkanı sağlar.)
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Helix
Apache Samza: Büyük Veri projelerinde birden çok kaynaktan verileri gerçek zamanlı olarak işleyen, durum bilgisi olan uygulamalar oluşturmanıza imkan sağlayan yazılım çerçevesidir. (Framework)
(Küme Yönetimi içermektedir.)
Apache Samza projeler üzerinde hata tolerans kontrolü, izolasyon, ek kaynak yönetimi ve durum bilgisi işleme imkanları sağlamaktadır.
İlk Geliştiren: Linkedin
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Samza
Apache Kafka: Birden fazla kaynak ve hedef arasındaki iletişimi sağlayan yüksek performanslı ve ölçeklenebilir dağıtık bir veri akış platformudur/sistemidir. (Data Streaming Service)
*Günümüzde #VeriBilimci etiketi altında yer alan iş ilanlarında dahi vazgeçilmez olarak nitelendirilmektedir.
Çevik,hızlı, hataya dayanıklı ve yatay olarak ölçeklendirilebilir yapısı buna ek olarak kaynak ve dökümantasyon edinim kolaylığı sayesinde birçok veri bilimi projesinde kaçınılmaz olarak tercih edilmektedir.
Kurucu-Geliştirici-Destekçi:
İlk Geliştiren: Linkedin
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Kafka
Apache Zookeeper: Dağıtık yapılardaki sistemler üzerinde koordinasyon hizmeti sağlayan sistemdir. (System)
Genel olarak; konfigürasyon yönetimi, senkronize iş akışı oluşturulması, yapılandırma bilgileri inşası ve ek çeşitli grup hizmetleri çözümü için tercih edilmektedir.
Kurucu-Geliştirici-Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Zookeeper
Apache Flume: Projelerinizde yer alan oluşturmuş/kullanmış olduğunuz çeşitli kaynaklardan merkezi bir veri depolama alanına günlük dosyaları, ağ trafiği, oluşan çeşitli olaylar gibi oluşan büyük miktarda akış verisini toplamak ve taşımak için kullanılan bir araçtır. (Tool)
Yapısal olarak hataya dayanıklı ve hata toleransı ve hata kurtarma işlemleri için güvenilirlik mekanizması sağlamaktadır.
Kurucu-Geliştirici-Destekçi:
Flume Ekip: Geliştirici Ekibi
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Flume
Apache Storm: Ücretsiz ve açık kaynak olarak geliştirilmiş; dağıtılmış ve hataya dayanıklı gerçek zamanlı akış hesaplama sistemidir. (System)
Apache Storm; Apache Hadoop’un toplu olarak gerçekleştirmiş olduğu işlemleri, gerçek zamanlı olarak sınırsız veri akışını güvenilir bir şekilde işlemek ve yönetmek için kolaylık sağlar.
Kurucu-Geliştirici-Destekçi:
İlk Geliştiren: Twitter
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Storm
Apache Lucene: Elastic Search ve Apache Solr projelerinin altyapısını oluşturan açık kaynak kodlu, yüksek performansa sahip tam özellikli tüm metin (Full Text Search) arama motorudur. (Engine)
MS Word, HTML, XML, PDF ve OpenDocument gibi karaktlere bağlı formatlardaki herhangi bir metin, metin bilgisi ve karakter bilgisi içeren yapılarda kullanılmaktadır.
Kurucu-Geliştirici-Destekçi
İlk Geliştiren: Doug Cutting
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Lucene
Apache Nutch: Apache Lucene’nin arama ve listeleme bileşenlerini Web’den veri toplamak için kullanan bir web tarayıcı aracıdır. (Web Scraping)
Apache Nutch web üzerinden veri taramasının yanında; sayfa çekme sırasının belirlenmesi, dizinleme sırasında ek alan oluşturma, sayfanın değişikliğine yönelik tekrar çekilme zamanı oluşturma gibi ek çözümlerde içermektedir.
Kurucu-Geliştirici-Destekçi
İlk Geliştiren: Doug Cutting, Mike Cafarella
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Nutch
Apache Solr: Apache Lucene üzerine kurulmuş kurumsal yetenek içeren açık kaynaklı bir arama platformudur.
Apache Solr; güçlü tam metin arama, metin vurgulama, dinamik olarak kümeleme, zengin belge türü işleme ve coğrafi konum bazında arama gibi farklılaşmış ve zenginleşmiş arama çözümleri içermermektedir.
Kurucu-Geliştirici-Destekçi
İlk Geliştiren: Yonik Seeley (CNET)
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Solr
Apache Shiro: Geliştiricilere kimlik doğrulama, yetkilendirme, kriptografik işlemler (şifreleme) ve oturum yönetimi sunan sezgisel ancak kapsamlı çözümler içeren açık kaynaklı yazılım güvenlik çerçevesidir. (Framework)
Apache Shiro ayrıca web uygulaması güvenliği, birim testi ve çoklu iş parçacığı desteği gibi bazı yardımcı özellikleri de destekler, ancak bunlar yukarıdaki ana çözümleri desteklmek için mevcuttur.
Kurucu-Geliştirici-Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Shiro
Apache ManifoldCF: Zengin içerikli belgelerin barındırdığı meta verilerini, kaynak içerik havuzları ile belgelerin dizine eklendiği ve aranabileceği hedef havuzlar arasında senkronize etmek için tasarlanmış, kurumsal içerik yönetimi sağlayan açık kaynaklı bir yazılım çerçevesidir. (Framework)
Apache ManifoldCF, şu anda içerik geçişini de desteklemek için özelliklerini geliştirmektedir.
Kurucu-Geliştirici-Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache ManifoldCF
Apache Spark: Büyük ölçekli veri analizi uygulamalarını çalıştırmak için kullanılan açık kaynaklı paralel işleme çerçevesidir.(Framework) (Büyük veri işleme motorudur.)
İteratif ve interaktif sorgular için popüler bir çözümdür.Apache Hadoop’un MapReduce temel bileşenine yönelik alternatif olmasıyla birlikte, verilerin barındırıldığı diskler üzerinde dağıtık olarak yaptığı eylemleri hafıza yoluyla yaparak (In-Memory) daha hızlı işleme performansı sunmaktadır.
Apache Flink: Veri akışları üzerinden dağıtılmış hesaplamalar için paralel/doğrudan iletişim sağlayan, hataya dayanıklı ve hızlı veri dağıtımı gerçekleştirebilen gerçek zamanlı açık kaynaklı bir platformdur. (Data Platform)
Çalışma zamanı planlaması/optimizasyonu, sınırlandırılmamış veri akışlarının ölçeklenmesi ve her boyuttaki veri kümelerini işlemek için gelişimiş bir yapıya sahiptir.
Kurucu-Geliştirici-Destekçi:
Flink Ekip: Geliştirici Ekibi
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Flink
Apache Giraph: Apache MapReduce kullanarak yüksek ölçeklenebilirlik için oluşturulmuş yinelemeli bir grafik işleme sistemidir.
Apache Giraph temel olarak Google şirketinin geliştirmiş olduğu Pregel sistemine benzer nitelikte özellikler içermektedir. (Pregel Dökümantasyon) (Facebook Kullanım Analizi)
Kurucu-Geliştirici-Destekçi:
Giraph Ekip: Geliştirici Ekibi
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Giraph
Apache Kudu: Hızlı ve değişen veriler üzerinde hızlı analitiği kolaylaştıran açık kaynaklı bir dağıtılmış veri depolama motorudur.
Apache Kudu; tek bir depolama katmanında birden çok gerçek zamanlı analitik iş yükünü etkinleştirmek için hızlı eklemeler/güncellemeler (hızlı akış çözümleri) ve verimli sütun taramaları imkanı sağlar.
Kurucu-Geliştirici-Destekçi:
Kudu Ekip: Geliştirici Ekibi
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Kudu
Apache Cassandra: Büyük boyutlardaki verilere gerçek zamanlı okuma/yazma (Read/Write) erişimi gerçekleştirip, birden çok makineye dağıtıp kullanabilen esnek, ilişkisel olmayan bir o kadar güvenilirliği yüksek bir veritabanı sistemidir. (Database) (NoSQL)
Cassandra temelde, büyük veri kümeleri üzerinde birden fazla düğüm (Node) oluşturup verilerin dağıtımını desteklemek üzere tasarlanmıştır.
2008 yılında Facebook Messenger için gelişitiriciler Amazon’un DynamoDB’sinin dağıtık mimarisini ve Google’ın BigTable veri modelini birleştirerek ortaya çıkarmıştırlar.
İlk Geliştiren: Avinash Lakshman, Prashant Malik (Facebook)
Destekçi: Apache Software Foundation
Apache HBase: Büyük boyutlardaki verilere gerçek zamanlı okuma/yazma (Read/Write) erişimi gerçekleştirip, birden çok makineye dağıtıp kullanabilen ilişkisel olmayan bir veritabanı sistemidir. (Database) (NoSQL)
2006 yılında Google şirketinin geliştirmiş olduğu Big Table’dan esinlenilerek geliştirilmiştir.
Apache CouchDB: Büyük boyutlardaki verileri dağıtılmış, doküman odaklı olarak kullanabilen ilişkisel olmayan veri tabanı sistemidir. (Database) (NoSQL)
CouchDB ile veriler dizine eklenebilir, aranabilir, filtrelenebilir ve birleştirilip JavaScript olarak dönüştürülebilir; ek olarak ayrıca bir web sunucusu desteği sağlayabilir. (HTML sayfaları JavaScript ile görüntülemenizi sağlar.)
Kurucu-Geliştirici-Destekçi:
İlk Geliştiren: Damien Katz, Jan Lehnardt, Naomi Slater, Christopher Lenz, J. Chris Anderson, Paul Davis, Adam Kocoloski, Jason Davies, Benoît Chesneau, Filipe Manana, Robert Newson
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache CouchDB
Apache Ignite: Yapısal olarak SQL ve NoSQL arasında olan bellek içi hızda yüksek performanslı bilgi işlem için dağıtılmış bir veritabanıdır. (Database) (SQL) (NoSQL)
Yüksek tutarlılıkta olması ve işleme API ‘leri ile etkili çözümler sunması geliştiriciler tarafından tercih edilmesinin önemli etkenleri olarak gösterilmektedir.
Kurucu-Geliştirici-Destekçi:
Ignite Ekip: Geliştirici Ekibi
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Ignite
Apache Ant: Geliştirmiş olduğunuz proje içerisinde bir standart oluşturmamızı, geliştirme sürecini anlamlandırma ve basitleştirmemizi, etkili bir proje dokümantasyonu oluşturmanızı, proje içerisindeki eklenti ve kütüphane bağımlılığını ortadan kaldırmamızı sağlayan bir araçtır. (Tool)
Apache Ant; geliştirme inşaası süreçlerinde ve bağımlılık yapılandırması/tanımlanması için XML kullanmaktadır.
Kurucu-Geliştirici-Destekçi:
İlk Geliştiren: James Duncan Davidson
Destekçi: Apache Software Foundation
Apache Maven: Geliştirmiş olduğunuz proje içerisinde bir standart oluşturmamızı, geliştirme sürecini anlamlandırma ve basitleştirmemizi, etkili bir proje dokümantasyonu oluşturmanızı, proje içerisindeki eklenti ve kütüphane bağımlılığını ortadan kaldırmamızı sağlayan bir araçtır. (Tool)
Kısaca; proje geliştirme ve bağımlılık ölçüm aracıdır.
Apache Maven; Apache Ant projesine alternatif olarak gösterilmiş, sunduğu çözümleri ile tercih olarak öne çıkartılmaktadır.
Kurucu-Geliştirici-Destekçi:
Maven Ekip: Geliştirici Ekibi
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache Maven
Apache CarbonData: Büyük veri projelerinde ağır analitik iş yüklerini ve verilerle ilgili ayrıntılı sorguları işlemek için dizine alınmış sütun bazlı bir sistematik veritabanı yönetim sistemidir. (Database – DBMS)
Kurucu-Geliştirici-Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache CarbonData
Apache BookKeeper: Güçlü, dayanıklılık, tutarlılık ve düşük gecikme süresi sağlamak üzere tasarlanmış kurumsal düzeyde bir depolama sistemidir.
Apache BookKeeper; özünde veri yapılarında Günlük Giriş (Daily Records – Log Entries) dizilerini depolayan güvenilir ve yüksek performanslı bir sistem olmayı hedeflemektedir.
Kurucu-Geliştirici-Destekçi:
İlk Geliştiren: Benjamin Reed, Flavio Junqueira, Ivan Kelly
Destekçi: Apache Software Foundation
İlgili Dökümantasyon Bağlantısı: Apache BookKeeper
Apache Atlas: Veri varlıklarını (Data Assets) kolayca bulmanızı, düzenlemenizi ve yönetmenizi sağlayan; kataloglama ve sistematik yapı oluştrumanız için tasarlanmış açık kaynaklı bir meta veri yönetim sistemidir.
Kurucu-Geliştirici-Destekçi:
İlk Geliştiren: Geliştirici Ekibi
Destekçi: Apache Software Foundation
Büyük Veri (Big Data) dünyasının vazgeçilmezi olan Apache ekosistemi üzerinde yer alan popüler araç,çatı ve kütüphanelere değinmeye çalıştım.
Gelecek yazımda Apache ekosistemi dışında yer alan Büyük Veri araç,çatı ve kütüphaneleri üzerine çeşitli notlar akatarmaya çalışacağım.
İyi günler, iyi çalışmalar…