RCFile

RCFile (Kayıt Kolumnar Dosyası) nasıl depolanacağı belirleyen bir veri yapısıdır ilişkisel tablolar üzerinde bilgisayar kümeleri . MapReduce çerçevesini kullanan sistemler için tasarlanmıştır . RCFile yapısı, bir veri depolama formatı, bir veri sıkıştırma yaklaşımı ve verileri okumak için optimizasyon teknikleri içerir. Veri yerleştirmenin dört gereksinimini karşılayabilir: (1) hızlı veri yükleme, (2) hızlı sorgu işleme, (3) yüksek verimli depolama alanı kullanımı ve (4) veri erişim dinamiklerini modellemeye güçlü uyarlanabilirlik.

RCFile, Facebook , Ohio Eyalet Üniversitesi ve Çin Bilimler Akademisi Bilgisayar Teknolojisi Enstitüsü tarafından yürütülen araştırma ve ortak çabaların sonucudur . RCFile üzerine bir araştırma makalesi 2011'de yayınlandı. Makalede sunulan veri yerleştirme yapısı ve uygulaması, açık kaynak topluluğu, büyük veri yayıncıları ve uygulama kullanıcıları tarafından geniş çapta benimsenmiştir.

özet

Örneğin, bir veritabanındaki bir tablo 4 sütundan oluşur (c1 - c4):

c1 c2 c3 c4
11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44
51 52 53 54

Tabloyu serileştirmek için, RCFile bu tabloyu satır odaklı DBMS gibi yatay olarak bölümlemek yerine önce yatay, sonra dikey olarak bölümler. Yatay bölümleme, önce tabloyu kullanıcı tarafından belirlenen bir değer olan satır grubunun boyutuna göre birden çok satır grubuna böler. Örneğin, kullanıcı 3 belirtirse, yukarıdaki tablo iki satır grubuna bölünebilir 

Hat grubu 1
c1 c2 c3 c4
11 12 13 14
21 22 23 24
31 32 33 34
Hat grubu 2
c1 c2 c3 c4
41 42 43 44
51 52 53 54

Ardından, her satır grubunda, RCFile verileri bir sütun deposu gibi dikey olarak bölümlere ayırır. Dolayısıyla tablo şu şekilde serileştirilecektir:

Groupe de colonne 1 Groupe de clo 2 11, 21, 31; 41, 51; 12, 22, 32; 42, 52; 13, 23, 33; 43, 53; 14, 24, 34; 44, 54;

Sütun veri sıkıştırma

Her satır grubunda, depolama alanı kullanımını azaltmak için sütunlar sıkıştırılır. Bir sütunun verileri yan yana depolandıkça, bir sütunun modeli tespit edilebilir ve böylece yüksek bir sıkıştırma oranı için uygun sıkıştırma algoritması seçilebilir.

Performans avantajları

Sütun deposu, bir sorgu yalnızca bir sütun alt kümesi gerektirdiğinde en verimlidir, çünkü sütun deposu disklerden yalnızca gerekli sütunları okur, ancak satır deposu tüm satırı okur.

RCFile, yatay-dikey bölümleme yoluyla satır depolamanın ve sütun depolamanın avantajlarını birleştirir. Yatay bölümleme ile RCFile, bir sıranın tüm sütunlarını tek bir makineye yerleştirir ve böylece bir sıra oluşturmayla ilgili ek ağ maliyetlerini ortadan kaldırabilir. Dikey bölümleme ile, bir sorgu için, RCFile disklerden yalnızca gerekli sütunları okuyacak ve böylece gereksiz yerel G / Ç maliyetlerini ortadan kaldırabilecektir. Ek olarak, her satır grubunda, sütun deposunda kullanılan sıkıştırma algoritmaları kullanılarak veri sıkıştırma yapılabilir .

Örneğin, bir veritabanı şu tabloya sahip olabilir:

EmpId Soyadı İsim maaş
10 Smith Joe 40.000
12 Jones Evli 50.000
11 Johnson Cathy 44.000
22 Jones Bob 55.000

Bu basit tablo, bir çalışan tanımlayıcısı (EmpId), ad alanları (Soyadı ve Adı) ve bir maaşı (Maaş) içerir. Bu iki boyutlu format sadece teoride mevcuttur. Uygulamada, depolama donanımı, verilerin bir biçimde veya başka bir şekilde serileştirilmesini gerektirir.

MapReduce tabanlı sistemlerde, veriler normalde HDFS gibi dağıtılmış bir sistemde depolanır ve farklı veri blokları farklı makinelerde depolanabilir. Dolayısıyla, MapReduce'daki sütun deposu için, farklı makinelerde farklı sütun grupları depolanabilir, bu da bir sorgu farklı makinelere yerleştirilmiş sütunları yansıttığında ek ağ maliyetlerine neden olabilir. MapReduce tabanlı sistemler için çevrimiçi depolamanın avantajı, İsteklerin işlenmesinde bir satır oluşturmak için ek ağ maliyeti yoktur ve sütun yönelimli depolamanın avantajı, disklerden veri okumak için G / Ç maliyeti gereksiz alan olmamasıdır. .

Hat yönelimli sistemler

Depolama sorununun ortak çözümü, her veri satırını şu şekilde serileştirmektir;

001: 10, Smith, Joe, 40000; 002: 12, Jones, Mary, 50000; 003: 11, Johnson, Cathy, 44000; 004: 22, Jones, Bob, 55000;

Satır odaklı depolar, minimum işlemle tüm satır veya kayıt için verileri verimli bir şekilde döndürmek üzere tasarlanmıştır. Bu, sistemin belirli bir nesne hakkındaki tüm bilgileri, örneğin bir rolodex sistemindeki eksiksiz iletişim bilgilerini veya bir çevrimiçi alışveriş sistemindeki eksiksiz ürün bilgilerini almayı denediği kullanım durumlarına karşılık gelir .

Satır odaklı depolamalar, belirli bir kaydın aksine veri kümesine uygulanan işlemleri gerçekleştirmede verimli değildir. Örneğin, örnek tablodaki maaşları 40.000 ile 50.000 arasında olan tüm kayıtları bulmak için, satır tabanlı sistem, eşleşen kayıtlar için tüm veri kümesini aramalıdır. Yukarıda gösterilen örnek tablo tek bir disk bloğuna sığabilse de, birkaç yüz sıralı bir tablo sığmaz. Bu nedenle, verileri kurtarmak için birkaç disk işlemi gerekecektir.

Kolon yönelimli sistemler

Sütun odaklı bir sistem, bir sütundaki tüm değerleri ve ardından bir sonraki sütundaki değerleri seri hale getirir. Örnek tablomuz için, veriler bu şekilde saklanacaktır;

10: 001,12: 002,11: 003,22: 004; Smith: 001, Jones: 002, Johnson: 003, Jones: 004; Joe: 001, Mary: 002, Cathy: 003, Bob: 004 et 40000: 001,50000: 002,44000: 003,55000: 004;

Bu yaygın değişiklikte fark daha net görülebilir:

…; Smith: 001, Jones: 002 004, Johnson: 003;…

Kayıtlardan ikisi aynı değeri, "Jones" saklar. Bu nedenle artık sütun odaklı sistemde iki kez yerine yalnızca bir kez saklamak mümkündür. "Jones soyadını bilen herkesi bul" gibi birçok yaygın aramada yanıt artık tek seferde alınabilir.

Bir kolon sisteminin daha verimli çalışması büyük ölçüde otomatik operasyonlara bağlıdır. Nesneler için veri alan işlemler daha yavaş olabilir ve birçok disk işleminin farklı sütunlardan verileri bir araya getirerek tüm bir satır kaydı oluşturmasını gerektirir. Bununla birlikte, hattın aşağısındaki bu tür operasyonlar genellikle nadirdir. Çoğu durumda, yalnızca sınırlı bir veri alt kümesi kurtarılır. Örneğin bir rolodex uygulamasında, bir kişi listesi oluşturmak için birçok satırdan ad ve soyadları toplayan işlemler, ev adresi için verileri okuyan işlemlerden çok daha yaygındır.

Benimseme

RCFile, büyük veri analizi için gerçek dünya sistemlerinde benimsenmiştir.

  1. RCFile, Facebook'un üretim Hadoop kümesinde varsayılan veri yerleştirme yapısı haline geldi. 2010 yılında, her gün eklenen 40 terabayt sıkıştırılmış veri kümesiyle dünyanın en büyük Hadoop kümesiydi. Ek olarak, RCFile'dan önce HDFS'de depolanan tüm veri kümeleri de RCFile'ı kullanacak şekilde dönüştürüldü.
  2. RCFile, Hadoop altında çalışan ve çeşitli İnternet hizmetleri de dahil olmak üzere dünya çapında çeşitli işletmelerde yaygın olarak kullanılan bir açık kaynak veri depolama sistemi olan Apache Hive'da (sürüm 0.4'ten beri) benimsenmiştir . gibi Facebook , Taobao, ve Netflix .
  3. RCFile, Twitter , Yahoo , Linkedin , AOL ve Salesforce .com gibi birkaç büyük web servis sağlayıcısı dahil olmak üzere birçok kuruluşta yaygın olarak kullanılan başka bir açık kaynaklı veri işleme sistemi olan Apache Pig'de (v0.7'den beri) benimsenmiştir .
  4. RCFile , Hadoop'un tablo ve depolama yönetimi hizmeti olan HCatalog projesi (eski adıyla Howl ) tarafından desteklenen Hadoop yazılım ortamında fiilen standart veri depolama yapısı haline geldi . RCFile, Twitter'da günlük veri analizi için kullanılan açık kaynak Elephant Bird kitaplığı tarafından desteklenmektedir.

Sonraki yıllarda, diğer Hadoop veri formatları da popüler hale geldi. İçindeŞubat 2013, bir Optimize Edilmiş Satır Sütunu (ORC) dosya formatı Hortonworks tarafından duyuruldu . Bir ay sonra, Cloudera ve Twitter tarafından geliştirilen Apache Parquet formatı duyuruldu .

Ayrıca bakınız

Referanslar

  1. RCFile: MapReduce tabanlı Depo Sistemlerinde Hızlı ve Yer Açısından Verimli Veri Yerleştirme Yapısı ,11 Nisan 2011, 1199–1208  s. ( ISBN  978-1-4244-8959-6 , DOI  10.1109 / ICDE.2011.5767933 , çevrimiçi okuyun )
  2. "  Kovan entegrasyonu: HBase ve Rcfile__HadoopSummit2010  " ,30 Haziran 2010
  3. “  Facebook dünyanın en büyük Hadoop kümesine sahip!  " ,9 Mayıs 2010
  4. "  Apache Hadoop Hindistan Zirvesi 2011, Namit Jain'in  " Hive Evolution "konuşması " ,24 Şubat 2011
  5. "  Arşivlenmiş kopya  " [ arşivi23 Kasım 2011] ( 21 Temmuz 2012'de erişildi )
  6. "  PoweredBy - Apache Hive - Apache Yazılım Vakfı  "
  7. "  Netflix'ten Hive kullanıcı grubu sunumu (3/18/2010)  " ,19 Mart 2010
  8. "  HiveRCInputFormat (Pig 0.17.0 API)  "
  9. "  PoweredBy - Apache Pig - Apache Yazılım Vakfı  "
  10. "  Arşivlenmiş kopya  " [ arşivi20 Temmuz 2012] ( 21 Temmuz 2012'de erişildi )
  11. "  Twitter'ın LZO koleksiyonu ve Protokol Arabelleği ile ilgili Hadoop, Pig, Hive ve HBase kodu.: Kevinweil ​​/ fil-kuş  " ,15 Aralık 2018
  12. Alan Gates, "  The Stinger Initiative: Making Apache Hive'ı 100 Kat Daha Hızlı,  " Hortonworks blogu ,20 Şubat 2013( çevrimiçi okuyun , 4 Mayıs 2017'de danışıldı )
  13. Justin KESTELYN, "  Parke Tanıtımı: Apache Hadoop için Kolumnar Verimli Depolama  " , Cloudera blog üzerinde Cloudera blogda ,13 Mart 2013(erişim tarihi 4 Mayıs 2017 )

Dış bağlantılar