Tutorial Apache Sqoop - Impor / Ekspor Data Antara HDFS dan RDBMS



Tutorial Apache Sqoop: Sqoop adalah alat untuk mentransfer data antara database Hadoop & relasional. Blog ini mencakup impor & ekspor Sooop dari MySQL.

Sebelum memulai dengan tutorial Apache Sqoop ini, mari kita mundur selangkah. Dapatkah Anda mengingat pentingnya penyerapan data, seperti yang telah kita bahas di blog sebelumnya di Apache Flume . Sekarang, seperti yang kita ketahui bahwa Apache Flume adalah alat penyerapan data untuk sumber yang tidak terstruktur, tetapi organisasi menyimpan data operasional mereka dalam database relasional. Oleh karena itu, diperlukan suatu alat yang dapat mengimpor dan mengekspor data dari database relasional. Inilah mengapa Apache Sqoop lahir. Sqoop dapat dengan mudah diintegrasikan dengan Hadoop dan membuang data terstruktur dari database relasional di HDFS, melengkapi kekuatan Hadoop. Ini sebabnya, mandat pengetahuan yang baik tentang Apache Sqoop dan Flume.

Awalnya, Sqoop dikembangkan dan dikelola oleh Cloudera. Kemudian, pada 23 Juli 2011, diinkubasi oleh Apache. Pada bulan April 2012, proyek Sqoop dipromosikan sebagai proyek tingkat atas Apache.





Di blog tutorial Apache Flume ini, kami akan membahas:



Kami akan memulai tutorial Apache Sqoop ini dengan memperkenalkan Apache Sqoop. Selanjutnya, kita akan memahami keuntungan menggunakan Apache Sqoop.

Tutorial Apache Sqoop: Pengenalan Sqoop

Apache Sqoop - Tutorial Apache Sqoop - EdurekaUmumnya, aplikasi berinteraksi dengan database relasional menggunakan RDBMS, dan karenanya menjadikan database relasional salah satu sumber terpenting yang menghasilkan Big Data. Data tersebut disimpan di Server RDB dalam struktur relasional. Di sini, Apache Sqoop memainkan peran penting , menyediakan interaksi yang layak antara server database relasional dan HDFS.

Jadi, Apache Sqoop adalah alat dalam yang dirancang untuk mentransfer data antar HDFS (Hadoop storage) dan server database relasional seperti MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres dll. Apache Sqoop mengimpor data dari database relasional ke HDFS, dan mengekspor data dari HDFS ke database relasional. Ini secara efisien mentransfer data massal antara Hadoop dan penyimpanan data eksternal seperti gudang data perusahaan, database relasional, dll.



Beginilah Sqoop mendapatkan namanya - “ SQ L sampai Had Buka & Hadoop to SQL ”.

Selain itu, Sqoop digunakan untuk mengimpor data dari datastore eksternal ke alat ekosistem seperti Hadoop Sarang lebah & HBase .

Sekarang, seperti yang kita ketahui apa itu Apache Sqoop. Jadi, mari kita lanjutkan dalam tutorial Apache Sqoop dan memahami mengapa Sqoop digunakan secara luas oleh organisasi.

Tutorial Apache Sqoop: Mengapa Sqoop?

Untuk pengembang Hadoop, game sebenarnya dimulai setelah data dimuat di HDFS. Mereka bermain-main dengan data ini untuk mendapatkan berbagai wawasan yang tersembunyi dalam data yang disimpan di HDFS.

Jadi, untuk analisis ini, data yang berada dalam sistem manajemen basis data relasional perlu ditransfer ke HDFS. Tugas menulis kode untuk mengimpor dan mengekspor data dari database relasional ke HDFS tidak menarik & membosankan. Di sinilah Apache Sqoop datang untuk menyelamatkan dan menghilangkan rasa sakit mereka. Ini mengotomatiskan proses mengimpor & mengekspor data.

Sqoop memudahkan kehidupan pengembang dengan menyediakan CLI untuk mengimpor dan mengekspor data. Mereka hanya perlu memberikan informasi dasar seperti otentikasi database, sumber, tujuan, operasi, dll. Itu mengurus bagian yang tersisa.

Sqoop secara internal mengubah perintah menjadi tugas MapReduce, yang kemudian dijalankan melalui HDFS. Ini menggunakan kerangka kerja YARN untuk mengimpor dan mengekspor data, yang memberikan toleransi kesalahan di atas paralelisme.

Memajukan ke depan dalam blog Tutorial Sqoop ini, kita akan memahami fitur-fitur utama Sqoop dan kemudian kita akan beralih ke arsitektur Apache Sqoop.

algoritma pembelajaran mesin di r

Tutorial Apache Sqoop: Fitur Utama Sqoop

Sqoop menyediakan banyak fitur penting seperti:

  1. Penuh : Apache Sqoop dapat memuat seluruh tabel dengan satu perintah. Anda juga dapat memuat semua tabel dari database menggunakan satu perintah.
  2. Tambahan Beban : Apache Sqoop juga menyediakan fasilitas incremental load di mana Anda dapat memuat bagian tabel setiap kali diperbarui.
  3. Paralel ekspor Impor : Sqoop menggunakan kerangka kerja YARN untuk mengimpor dan mengekspor data, yang memberikan toleransi kesalahan di atas paralelisme.
  4. Impor hasil dari SQL pertanyaan : Anda juga dapat mengimpor hasil yang dikembalikan dari kueri SQL di HDFS.
  5. Kompresi : Anda dapat memampatkan data Anda dengan menggunakan algoritma deflate (gzip) dengan argumen –compress, atau dengan menentukan argumen –compression-codec. Anda juga dapat memuat tabel terkompresi dalam Apache Hive .
  6. Konektor untuk semua utama RDBMS Database : Apache Sqoop menyediakan konektor untuk beberapa database RDBMS, yang mencakup hampir seluruh lingkungan.
  7. Kerberos Keamanan Integrasi : Kerberos adalah protokol otentikasi jaringan komputer yang bekerja berdasarkan 'tiket' untuk memungkinkan node berkomunikasi melalui jaringan yang tidak aman untuk membuktikan identitas mereka satu sama lain dengan cara yang aman. Sqoop mendukung otentikasi Kerberos.
  8. Beban data langsung ke HIVE / HBase : Anda dapat memuat data langsung ke Apache Hive untuk analisis dan juga membuang data Anda di HBase, yang merupakan database NoSQL.
  9. Dukung untuk Akumulasi : Anda juga dapat menginstruksikan Sqoop untuk mengimpor tabel di Accumulo daripada direktori di HDFS.

Arsitekturnya adalah salah satu yang memberdayakan Apache Sqoop dengan manfaat ini. Sekarang, seperti yang kita ketahui tentang fitur Apache Sqoop, mari kita lanjutkan dan pahami arsitektur & cara kerja Apache Sqoop.

Tutorial Apache Sqoop: Arsitektur Sqoop & Bekerja

Mari kita pahami cara kerja Apache Sqoop menggunakan diagram di bawah ini:

Alat impor mengimpor tabel individu dari RDBMS ke HDFS. Setiap baris dalam tabel diperlakukan sebagai catatan di HDFS.

Saat kami mengirimkan perintah Sqoop, tugas utama kami dibagi menjadi beberapa subtugas yang ditangani oleh Tugas Peta individu secara internal. Tugas Peta adalah subtugas, yang mengimpor sebagian data ke Ekosistem Hadoop. Secara kolektif, semua tugas Peta mengimpor seluruh data.

Ekspor juga bekerja dengan cara yang sama.

Alat ekspor mengekspor sekumpulan file dari HDFS kembali ke RDBMS. File yang diberikan sebagai input ke Sqoop berisi record, yang disebut sebagai baris dalam tabel.

Saat kami mengirimkan Pekerjaan kami, itu dipetakan ke Tugas Peta yang membawa potongan data dari HDFS. Potongan ini diekspor ke tujuan data terstruktur. Menggabungkan semua potongan data yang diekspor ini, kami menerima seluruh data di tujuan, yang dalam sebagian besar kasus adalah RDBMS (MYSQL / Oracle / SQL Server).

Fase pengurangan diperlukan jika terjadi agregasi. Tapi, Apache Sqoop hanya mengimpor dan mengekspor data, tidak melakukan agregasi apa pun. Peluncuran pekerjaan peta beberapa pembuat peta tergantung pada nomor yang ditentukan oleh pengguna. Untuk impor Sqoop, setiap tugas mapper akan ditugaskan dengan sebagian data yang akan diimpor. Sqoop mendistribusikan data masukan di antara para pembuat peta secara merata untuk mendapatkan kinerja tinggi. Kemudian setiap pembuat peta membuat koneksi dengan database menggunakan JDBC dan mengambil bagian dari data yang ditetapkan oleh Sqoop dan menuliskannya ke dalam HDFS atau Hive atau HBase berdasarkan argumen yang diberikan di CLI.

Sekarang setelah kita memahami arsitektur dan cara kerja Apache Sqoop, mari kita pahami perbedaan antara Apache Flume dan Apache Sqoop.

Tutorial Apache Sqoop: Flume vs Sqoop

Perbedaan utama antara Flume dan Sqoop adalah:

  • Flume hanya menyerap data tidak terstruktur atau data semi-terstruktur ke dalam HDFS.
  • Sedangkan Sqoop dapat mengimpor serta mengekspor data terstruktur dari RDBMS atau gudang data Perusahaan ke HDFS atau sebaliknya.

Sekarang, dengan melanjutkan Tutorial Apache Sqoop kami, inilah saat yang tepat untuk menggunakan perintah Apache Sqoop.

Tutorial Apache Sqoop: Perintah Sqoop

  • Sqoop - Perintah IMPOR

Perintah impor digunakan untuk mengimpor tabel dari database relasional ke HDFS. Dalam kasus kami, kami akan mengimpor tabel dari database MySQL ke HDFS.

Seperti yang Anda lihat pada gambar di bawah, kami memiliki tabel karyawan di database karyawan yang akan kami impor ke HDFS.

Perintah untuk mengimpor tabel adalah:

sqoop import --connect jdbc: mysql: // localhost / karyawan --username edureka - table karyawan

Seperti yang Anda lihat pada gambar di bawah ini, setelah menjalankan perintah ini, tugas Peta akan dijalankan di ujung belakang.

Setelah kode dijalankan, Anda dapat memeriksa UI Web HDFS, yaitu localhost: 50070 tempat data diimpor.

  • Sqoop - Perintah IMPOR dengan direktori target

Anda juga dapat mengimpor tabel di direktori tertentu di HDFS menggunakan perintah di bawah ini:

sqoop import --connect jdbc: mysql: // localhost / karyawan --username edureka --tabel karyawan --m 1 --target-dir / karyawan

Sqoop mengimpor data secara paralel dari sebagian besar sumber database. -m properti digunakan untuk menentukan jumlah pembuat peta yang akan dieksekusi.

Sqoop mengimpor data secara paralel dari sebagian besar sumber database. Anda dapat menentukan jumlah tugas peta (proses paralel) yang akan digunakan untuk melakukan impor dengan menggunakan -m atau –Num-mappers argumen. Masing-masing argumen ini mengambil nilai integer yang sesuai dengan derajat paralelisme yang digunakan.

Anda dapat mengontrol jumlah pembuat peta secara independen dari jumlah file yang ada di direktori. Kinerja ekspor tergantung pada derajat paralelisme. Secara default, Sqoop akan menggunakan empat tugas secara paralel untuk proses ekspor. Ini mungkin tidak optimal, Anda perlu bereksperimen dengan pengaturan khusus Anda sendiri. Tugas tambahan mungkin menawarkan konkurensi yang lebih baik, tetapi jika database sudah mengalami hambatan dalam memperbarui indeks, memanggil pemicu, dan sebagainya, maka beban tambahan dapat menurunkan kinerja.

Anda dapat melihat pada gambar di bawah ini, bahwa jumlah tugas mapper adalah 1.

Jumlah file yang dibuat saat mengimpor tabel MySQL sama dengan jumlah mapper yang dibuat.

  • Sqoop - IMPOR Perintah dengan Klausa Dimana

Anda dapat mengimpor subset tabel menggunakan klausa 'di mana' di alat impor Sqoop. Ini mengeksekusi kueri SQL yang sesuai di server database masing-masing dan menyimpan hasilnya di direktori target di HDFS. Anda dapat menggunakan perintah berikut untuk mengimpor data dengan ' dimana 'Klausa:

sqoop import --connect jdbc: mysql: // localhost / karyawan --username edureka --tabel karyawan --m 3 --di mana 'emp_no & gt 49000' --target-dir / Latest_Employees

  • Sqoop - Impor Inkremental

Sqoop menyediakan mode impor inkremental yang dapat digunakan untuk mengambil hanya baris yang lebih baru dari beberapa set baris yang diimpor sebelumnya. Sqoop mendukung dua jenis impor inkremental: menambahkan dan terakhir diubah . Anda bisa menggunakan argumen –incremental untuk menentukan tipe incremental import yang akan dilakukan.

Anda harus menentukan menambahkan mode saat mengimpor tabel di mana baris baru terus ditambahkan dengan meningkatnya nilai id baris. Anda menentukan kolom yang berisi id baris dengan –Cek-kolom . Sqoop mengimpor baris di mana kolom centang memiliki nilai lebih besar dari yang ditentukan dengan –Nilai terakhir .

Strategi pembaruan tabel alternatif yang didukung oleh Sqoop dipanggil terakhir diubah mode. Anda harus menggunakan ini saat baris tabel sumber dapat diperbarui, dan setiap pembaruan tersebut akan menetapkan nilai kolom yang terakhir diubah ke stempel waktu saat ini.

Saat menjalankan impor berikutnya, Anda harus menentukan –Nilai terakhir dengan cara ini untuk memastikan Anda hanya mengimpor data baru atau yang diperbarui. Ini ditangani secara otomatis dengan membuat impor inkremental sebagai pekerjaan tersimpan, yang merupakan mekanisme pilihan untuk melakukan impor inkremental berulang.

Pertama, kami memasukkan baris baru yang akan diperbarui di HDFS kami.

Perintah untuk impor inkremental adalah:

sqoop import --connect jdbc: mysql: // localhost / employee --username edureka --tabel karyawan --target-dir / Latest_Employees --incremental append --check-column emp_no --last-value 499999

Anda dapat melihat pada gambar di bawah ini, file baru dibuat dengan data yang diperbarui.

  • Sqoop - Impor Semua Tabel

Anda dapat mengimpor semua tabel dari server database RDBMS ke HDFS. Setiap data tabel disimpan dalam direktori terpisah dan nama direktori sama dengan nama tabel. Setiap tabel dalam database tersebut harus memiliki bidang kunci utama. Perintah untuk mengimpor semua tabel dari database adalah:

sqoop import-all-tables --connect jdbc: mysql: // localhost / karyawan --username edureka

  • Sqoop - Daftar Database

Anda dapat membuat daftar database yang ada dalam database relasi menggunakan Sqoop. Alat database daftar Sqoop mem-parsing dan mengeksekusi kueri 'SHOW DATABASES' terhadap server database. Perintah untuk membuat daftar database adalah:

sqoop list-databases --connect jdbc: mysql: // localhost / --username edureka

  • Sqoop - Tabel Daftar

Anda juga dapat membuat daftar tabel database tertentu di server database MySQL menggunakan Sqoop. Alat tabel daftar Sqoop mem-parsing dan menjalankan kueri 'SHOW TABLES'. Perintah untuk membuat daftar tabel adalah database adalah:

sqoop list-tables --connect jdbc: mysql: // localhost / karyawan --username edureka

  • Sqoop - Ekspor

Seperti yang kita bahas di atas, Anda juga dapat mengekspor data dari HDFS ke database RDBMS. Tabel target harus ada di database target.Data disimpan sebagai catatan di HDFS. Record ini dibaca dan diurai serta dibatasi dengan pembatas yang ditentukan pengguna.Operasi default adalah memasukkan semua record dari file input ke tabel database menggunakan pernyataan INSERT. Dalam mode pembaruan, Sqoop menghasilkan pernyataan UPDATE yang menggantikan catatan yang ada ke dalam database.

Jadi, pertama-tama kami membuat tabel kosong, tempat kami akan mengekspor data kami.

Perintah untuk mengekspor data dari HDFS ke database relasional adalah:

sqoop export --connect jdbc: mysql: // localhost / employee --username edureka --table emp --export-dir / user / edureka / karyawan

  • Sqoop - Codegen

Dalam aplikasi berorientasi objek, setiap tabel database memiliki satu kelas Objek Akses Data yang berisi metode 'pengambil' dan 'penyetel' untuk menginisialisasi objek. Codegen menghasilkan kelas DAO secara otomatis. Ini menghasilkan kelas DAO di Jawa, berdasarkan struktur Skema Tabel.

Perintah untuk menghasilkan kode java adalah:

sqoop codegen --connect jdbc: mysql: // localhost / karyawan --username edureka - table karyawan

Anda dapat melihat jalur pada gambar di atas tempat kode dibuat. Mari kita pergi ke jalan dan memeriksa file yang dibuat.

Semoga blog ini informatif dan menjadi nilai tambah bagi Anda. Jika Anda tertarik untuk mempelajari lebih lanjut, Anda bisa melalui ini yang memberi tahu Anda tentang Big Data dan bagaimana Hadoop memecahkan tantangan terkait Big Data.

Sekarang Anda telah memahami Apache Sqoop, lihat file oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus Pelatihan Sertifikasi Edureka Big Data Hadoop membantu peserta didik menjadi ahli dalam domain HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume, dan Sqoop menggunakan kasus penggunaan waktu nyata pada Ritel, Media Sosial, Penerbangan, Pariwisata, domain Keuangan.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar dan kami akan menghubungi Anda kembali.