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.
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?
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.
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.
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
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/
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
Ö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
[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
[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
[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
/home/hadoop/sqoop/conf
Template
kopyalanır.
[bigdata@mmetincentosos conf]$ cp sqoop-env-template.sh sqoop-env.sh
[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
export HADOOP_COMMON_HOME=/home/hadoop
#Set path to where
hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/home/hadoop
export HADOOP_MAPRED_HOME=/home/hadoop
#set the path to
where bin/hbase is available
export HBASE_HOME=/home/hadoop/hbase
export HBASE_HOME=/home/hadoop/hbase
#Set the path to
where bin/hive is available
export HIVE_HOME=/home/hadoop/hive
export HIVE_HOME=/home/hadoop/hive
#Set the path
for where zookeper config dir is
export ZOOCFGDIR=/home/hadoop/zookeeper
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.
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.
Bir sonraki blog yazımda görüşmek dileğiyle.
Lütfen,
yorumlarınızı bekliyorum.
mmetin
Hiç yorum yok:
Yorum Gönder