6 Mart 2016 Pazar

Sqoop ile Veri Aktarımları-1

Merhaba,
Bu blog yazımda bana sorulan bir sorudan dolayı sqoop’ u anlatmak istedim.
Apache Hadoop mimarisine baktığınızda bir tarafta hadoop diğer tarafta hadoop’ un projelerini görürsünüz.
Yani hadoop = mapreduce + hdfs demektir. Peki hive-pig-hbase-oozie-flume ve sqoop nedir?
Tüm bu saydıklarım hadoop’ un projeleridir. Yani ihtiyaçtan dolayı hadoop etrafında, çeşitli firma-organizasyonlar tarafından yazılmış oldukça faydalı projelerdir.
Bu projelerden biri olan sqoop nedir peki? Daha önceki blog yazımdan alıntı yaparak aşağıdaki tanımı paylaşıyorum.
Sqoop is a connectivity tool for moving data from non-Hadoop data stores – such as relational databases and data warehouses – into Hadoop. It allows users to specify the target location inside of Hadoop and instruct Sqoop to move data from Oracle, Teradata or other relational databases to the target.
Hadoop üzerinde çalışan bulk data transferini sağlayan open source bir hadoop projesidir. Data transferi, hadoop ile ilişkisel veritabanları (Oracle, SQL Server,Teradata vs.vs.) arasında gerçekleştirilir. Bu tool sadece JDBC connector’ü olan veritabanları ile çalışmaktadır.
Peki ilk cümlemde geçen bana sorulan soru neydi?
Hadoop kurdum, hdfs, hbase yada hive ortamlarına verilerimi aktardım. Buralara map-reduce veya kendi shell komutları ile sorgu çektim.Sonra çıkan sonuçları raporlamak istedim. Hatta çıkan sonuçları mevcut database ortamlarımıza (Oracle,Sql Server, Teradata vs.vs) aktarmak istedim. Yada ilişkisel veritabanımda bulunan tabloları hadoop sistemine aktarmak istedim. Bunları nasıl yapabilirim?
Bu işlemi sqoop ile gerçekleştirebilirsiniz. Bu blog yazımla birlikte sqoop kurulumu ve örneklerini vermek istiyorum.
Bende bulunan centos vm oracle yüklemiştim. Vereceğim örneklerde oracle kullanacağım. Ama tabi ki siz sql server, teradata vs. kullanabilirsiniz.
Kurulum işlemlerine başlayalım.
Bundan önceki blog yazılarımı dikkatlice takip ettiyseniz kurulum mantığının hep aynı olduğunu göreceksiniz. ftp sitesinden ilgili proje download edilir, tar dosyası açılır, ilgili konfigürasyonlar yapılır ve start edilir.
Sqoop yüklemek için aşağıdaki web adresi kullanılır.
http://www.apache.org/dyn/closer.cgi/sqoop/1.4.3
Bu adresten ftp site olarak aşağıdaki web adresi seçilir.
ftp://ftp.itu.edu.tr/Mirror/Apache/sqoop/1.4.3/
Bu sitede yer alan sqoop-1.4.3.bin__hadoop-1.0.0.tar.gz dosyasını kopyalayacağız. wget ile terminal üzerinden aşağıdaki komutu giriniz.
Öncelikle aşağıdaki klasörde olduğunuza emin olunuz.
[hadoop@mmetincentosos hadoop]$ pwd
/home/hadoop
wget komutu ile aşağıdaki komut terminal üzerinden giriliz.
[hadoop@mmetincentosos hadoop]$ wget ftp://ftp.itu.edu.tr/Mirror/Apache/sqoop/1.4.3/sqoop-1.4.3.bin__hadoop-1.0.0.tar.gz
tar komutu ile sqoop u açınız.
[hadoop@mmetincentosos hadoop]$ tar zxpf sqoop-1.4.3.bin__hadoop-1.0.0.tar.gz
Terminal üzerinden sqoop yüklü klasörde bin klasöründe ./sqoop yazılmalı ve aşağıdaki ekran verilen yönergeler takip edilmelidir.
[hadoop@mmetincentosos bin]$ ./sqoop
Error: /usr/lib/hadoop does not exist!
Please set $HADOOP_COMMON_HOME to the root of your Hadoop installation.
[hadoop@mmetincentosos bin]$ export HADOOP_COMMON_HOME=/home/hadoop
[hadoop@mmetincentosos bin]$ ./sqoop
Error: /usr/lib/hadoop-mapreduce does not exist!
Please set $HADOOP_MAPRED_HOME to the root of your Hadoop MapReduce installation.
[hadoop@mmetincentosos bin]$ export HADOOP_MAPRED_HOME=/home/hadoop
[hadoop@mmetincentosos bin]$ ./sqoop
Warning: /usr/lib/hbase does not exist! HBase imports will fail.
Please set $HBASE_HOME to the root of your HBase installation.
Try ‘sqoop help’ for usage.
[hadoop@mmetincentosos bin]$ export HBASE_HOME=/home/hadoop/hbase
[hadoop@mmetincentosos bin]$ ./sqoop
Aslında yukarıda bayağı amelelik işi var. Bunu her seferinde yapmak yerine ilgili konfigürasyon dosyasında bu işlemleri bir kere yapmanız yeterlidir.
Tüm bu işlemlere tek tek yapmak istemiyorsanız aşağıda yer alan klasörde /home/hadoop/sqoop/conf sqoop-env.sh dosyasına yukarıdaki değerler tek tek girilir.
[hadoop@mmetincentosos conf]$ pwd
/home/hadoop/sqoop/conf
Template kopyalanır.
[bigdata@mmetincentosos conf]$ cp sqoop-env-template.sh sqoop-env.sh
gedit sqoop-env.sh dosyasında yukarıdaki maddeler tek tek girilir. Aşağıdaki şekilde olmalıdır bu dosya.
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/home/hadoop
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/home/hadoop
#set the path to where bin/hbase is available
export HBASE_HOME=/home/hadoop/hbase
#Set the path to where bin/hive is available
export HIVE_HOME=/home/hadoop/hive
#Set the path for where zookeper config dir is
export ZOOCFGDIR=/home/hadoop/zookeeper
Sqoop kurulum işlemini bitirmiş bulunuyoruz.
Bir sonraki blog yazımda oracle’ da yer alan bir tablonun hadoop’ a yazılması,hadoop’ ta yer alan dosyanın oracle’ a yazılması, hbase de import işlemleri, sqoop schedule etme işlemleri vs. anlatmayı planlıyorum.
Bugünkü blog yazımız bu kadar.
Bir sonraki blog yazımda görüşmek dileğiyle.
Lütfen, yorumlarınızı bekliyorum.
mmetin

Hiç yorum yok:

Yorum Gönder