Sqoop Eğitimi: Apache Sqoop nedir? Mimari ve Örnek

Hadoop'ta SQOOP nedir?

Apache SQOOP (SQL-to-Hadoop), ilişkisel veritabanları, kurumsal veri ambarları ve NoSQL sistemleri gibi yapılandırılmış veri depolarından verilerin HDFS'ye toplu olarak dışa ve içe aktarılmasını desteklemek için tasarlanmış bir araçtır. Yeni harici sistemlere bağlantı sağlamak için eklentileri destekleyen bir bağlayıcı mimarisine dayalı bir veri taşıma aracıdır.

Hadoop Sqoop'un bir kullanım örneği, daha fazla analiz için bir üretim işlem RDBMS'sinden günün verilerini bir Hive veri ambarına yüklemek için gecelik bir Sqoop içe aktarması çalıştıran bir kuruluştur.

Bu Apache Sqoop eğitiminde, Apache Sqoop mimarisini öğreneceğiz.

Sqoop Mimarisi

mevcut tüm Veritabanı Yönetim Sistemleri SQL standardı göz önünde bulundurularak tasarlanmıştır. Bununla birlikte, her bir DBMS, lehçeye göre bir dereceye kadar farklılık gösterir. Dolayısıyla, bu fark, sistemler arasında veri aktarımı söz konusu olduğunda zorluklar doğurur. Sqoop Konnektörleri, bu zorlukların üstesinden gelmeye yardımcı olan bileşenlerdir.

Sqoop Hadoop ile harici depolama sistemi arasındaki veri aktarımı, Sqoop'un konektörleri yardımıyla mümkün hale getirilmiştir.

Sqoop, MySQL, PostgreSQL, Oracle, SQL Server ve DB2 dahil olmak üzere bir dizi popüler ilişkisel veritabanlarıyla çalışmak için bağlayıcılara sahiptir. Bu bağlayıcıların her biri, ilişkili DBMS ile nasıl etkileşime gireceğini bilir. Java'nın JDBC protokolünü destekleyen herhangi bir veritabanına bağlanmak için genel bir JDBC bağlayıcısı da vardır. Ayrıca, Sqoop Big data, toplu aktarımları verimli bir şekilde gerçekleştirmek için veritabanına özel API'leri kullanan optimize edilmiş MySQL ve PostgreSQL bağlayıcıları sağlar.

Sqoop Mimarisi



Buna ek olarak, büyük veride Sqoop, kurumsal veri ambarlarından (Netezza, Teradata ve Oracle dahil) NoSQL mağazalarına (Couchbase gibi) kadar veri depoları için çeşitli üçüncü taraf bağlayıcılara sahiptir. Ancak bu konektörler Sqoop paketi ile birlikte gelmez; bunların ayrı olarak indirilmesi gerekir ve mevcut bir Sqoop kurulumuna kolayca eklenebilir.

Neden Sqoop'a ihtiyacımız var?

Hadoop kullanarak analitik işleme, çeşitli kaynaklardan gelen büyük miktarda verinin Hadoop kümelerine yüklenmesini gerektirir. Heterojen kaynaklardan Hadoop'a toplu veri yükleme ve ardından bunları işleme süreci, belirli zorluklarla birlikte gelir. Veri tutarlılığını korumak ve sağlamak ve kaynakların verimli kullanımını sağlamak, veri yüklemesi için doğru yaklaşımı seçmeden önce dikkate alınması gereken bazı faktörlerdir.

Büyük sorunlar:

1. Komut Dosyalarını kullanarak veri yükleme

Verileri yüklemek için komut dosyalarını kullanmanın geleneksel yaklaşımı, Hadoop'a toplu veri yüklemesi için uygun değildir; bu yaklaşım verimsiz ve çok zaman alıcıdır.

2. Map-Reduce uygulaması aracılığıyla harici verilere doğrudan erişim

Harita küçültme uygulamaları için harici sistemlerde bulunan verilere (Hadoop'a yüklenmeden) doğrudan erişim sağlanması, bu uygulamaları karmaşıklaştırmaktadır. Dolayısıyla bu yaklaşım uygulanabilir değildir.

3. Muazzam verilerle çalışma yeteneğine ek olarak, Hadoop verilerle birkaç farklı biçimde çalışabilir. Dolayısıyla, bu tür heterojen verileri Hadoop'a yüklemek için farklı araçlar geliştirilmiştir. kepçe ve kanal iki tür veri yükleme aracıdır.

Örnekler içeren bu Sqoop eğitiminde, Sqoop, Flume ve HDFS arasındaki farkı öğreneceğiz.

Hadoop'ta Sqoop vs Flume vs HDFS

kepçe kanal HDFS
Sqoop, RDBMS gibi yapılandırılmış veri kaynaklarından veri almak için kullanılır. Flume, toplu akış verilerini HDFS'ye taşımak için kullanılır. HDFS, verileri depolamak için Hadoop ekosistemi tarafından kullanılan dağıtılmış bir dosya sistemidir.
Sqoop, bağlayıcı tabanlı bir mimariye sahiptir. Bağlayıcılar, ilgili veri kaynağına nasıl bağlanacaklarını ve verileri nasıl alacaklarını bilirler. Flume, etmen tabanlı bir mimariye sahiptir. Burada, verilerin alınmasıyla ilgilenen bir kod ('agent' olarak adlandırılır) yazılır. HDFS, verilerin birden çok veri düğümü arasında dağıtıldığı dağıtılmış bir mimariye sahiptir.
HDFS, Sqoop kullanılarak veri aktarımı için bir hedeftir. Veriler, sıfır veya daha fazla kanal aracılığıyla HDFS'ye akar. HDFS, veri depolama için nihai bir hedeftir.
Sqoop veri yüklemesi olay odaklı değildir. Flume veri yükü bir olay tarafından çalıştırılabilir. HDFS, kendisine sağlanan verileri herhangi bir yolla depolar.
Yapılandırılmış veri kaynaklarından veri almak için, yalnızca Sqoop komutlarını kullanmak gerekir, çünkü bağlayıcıları yapılandırılmış veri kaynaklarıyla nasıl etkileşime girileceğini ve onlardan nasıl veri alınacağını bilir. Twitter'da oluşturulan tweet'ler veya bir web sunucusunun günlük dosyaları gibi akış verilerini yüklemek için Flume kullanılmalıdır. Flume aracıları, akış verilerini almak için oluşturulmuştur. HDFS, verileri içinde depolamak için kendi yerleşik kabuk komutlarına sahiptir. HDFS, akış verilerini içe aktaramaz