Hadoop'ta SQOOP nedir?
Apache SQOOP ( SQL'den Hadoop'a ), ilişkisel veritabanları, kurumsal veri ambarları ve NoSQL sistemleri gibi yapılandırılmış veri depolarından HDFS'ye toplu veri aktarımını ve içe aktarmayı 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 örnek bir kullanım örneği, bir üretim işlemsel RDBMS'sinden günün verilerini daha fazla analiz için bir Hive veri ambarına yüklemek için her gece Sqoop içe aktarımı çalıştıran bir kuruluştur.
Bu Apache Sqoop öğreticisinin sonraki bölümünde, Apache Sqoop mimarisini öğreneceğiz.
Sqoop Mimarlık
Mevcut tüm Veritabanı Yönetim Sistemleri , SQL standardı göz önünde bulundurularak tasarlanmıştır. Bununla birlikte, her DBMS bir dereceye kadar lehçeye göre farklılık gösterir. Dolayısıyla, bu fark, sistemler arasında veri aktarımı söz konusu olduğunda zorluklar ortaya çıkarır. Sqoop Konektö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örlerinin yardımıyla mümkün hale gelir.
Sqoop, MySQL, PostgreSQL, Oracle, SQL Server ve DB2 dahil bir dizi popüler ilişkisel veritabanı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şim kuracağını bilir. Java'nın JDBC protokolünü destekleyen herhangi bir veritabanına bağlanmak için genel bir JDBC konektörü de vardır. Ek olarak, Sqoop Big data, toplu aktarımları verimli bir şekilde gerçekleştirmek için veritabanına özgü API'leri kullanan optimize edilmiş MySQL ve PostgreSQL bağlayıcıları sağlar.
Buna ek olarak, Sqoop in big data, 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 paketiyle 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 büyük miktarda verinin Hadoop kümelerine yüklenmesini gerektirir. Hadoop'a heterojen kaynaklardan gelen bu toplu veri yükleme ve ardından 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ükü için doğru yaklaşımı seçmeden önce dikkate alınması gereken bazı faktörlerdir.
Büyük sorunlar:
1. Komut Dosyaları kullanarak veri yükleme
Verileri yüklemek için komut dosyalarını kullanmaya yönelik geleneksel yaklaşım, Hadoop'a toplu veri yüklemesi için uygun değildir; bu yaklaşım verimsizdir ve çok zaman alır.
2. Map-Reduce uygulaması aracılığıyla harici verilere doğrudan erişim
Harita azaltma uygulamaları için harici sistemlerde bulunan verilere (Hadoop'a yüklenmeden) doğrudan erişim sağlanması, bu uygulamaları karmaşık hale getirir. Bu nedenle, bu yaklaşım uygulanabilir değildir.
3. Hadoop, muazzam verilerle çalışma yeteneğine sahip olmanın yanı sıra, birkaç farklı biçimde verilerle de çalışabilir. Dolayısıyla, bu tür heterojen verileri Hadoop'a yüklemek için farklı araçlar geliştirilmiştir. Sqoop ve Flume , bu tür iki veri yükleme aracıdır.
Örneklerle birlikte bu Sqoop öğreticisinin sonraki bölümünde, Sqoop, Flume ve HDFS arasındaki farkı öğreneceğiz.
Hadoop'ta Sqoop, Flume vs HDFS
Sqoop | Kanal | HDFS |
---|---|---|
Sqoop, RDBMS gibi yapılandırılmış veri kaynaklarından verileri içe aktarmak 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 getireceklerini bilir. | Flume, ajan tabanlı bir mimariye sahiptir. Burada, verilerin getirilmesiyle ilgilenen bir kod yazılır ('aracı' olarak adlandırılır). | HDFS, verilerin birden çok veri düğümüne dağıtıldığı dağıtılmış bir mimariye sahiptir. |
HDFS, Sqoop kullanılarak veri içe aktarma için bir hedeftir. | Veri, sıfır veya daha fazla kanal üzerinden HDFS'ye akar. | HDFS, veri depolama için nihai bir hedeftir. |
Sqoop veri yüklemesi olay güdümlü değildir. | Kanal veri yükü bir olay tarafından yönlendirilebilir. | HDFS, kendisine sağlanan verileri her ne şekilde olursa olsun depolar. |
Yapılandırılmış veri kaynaklarından verileri içe aktarmak 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 bunlardan veri almayı 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, içinde veri depolamak için kendi yerleşik kabuk komutlarına sahiptir. HDFS, akış verilerini içe aktaramaz |