Tutorial Apache Sqoop - Import / Eksport Data Antara HDFS dan RDBMS



Tutorial Apache Sqoop: Sqoop adalah alat untuk memindahkan data antara pangkalan data Hadoop & relasional. Blog ini merangkumi import & eksport Sooop dari MySQL.

Sebelum memulakan tutorial Apache Sqoop ini, mari kita mundur selangkah lagi. Bolehkah anda ingat betapa pentingnya pengambilan data, seperti yang telah kami bincangkan di blog kami sebelumnya di Apache Flume . Sekarang, seperti yang kita ketahui bahawa Apache Flume adalah alat pengambilan data untuk sumber yang tidak terstruktur, tetapi organisasi menyimpan data operasi mereka dalam pangkalan data relasional. Oleh itu, terdapat keperluan alat yang dapat mengimport dan mengeksport data dari pangkalan data hubungan. Inilah sebabnya mengapa Apache Sqoop dilahirkan. Sqoop dapat dengan mudah disatukan dengan Hadoop dan membuang data berstruktur dari pangkalan data hubungan pada HDFS, memuji kehebatan Hadoop. Inilah sebabnya, mewajibkan pengetahuan yang baik mengenai Apache Sqoop dan Flume.

Pada mulanya, Sqoop dikembangkan dan dikendalikan oleh Cloudera. Kemudian, pada 23 Julai 2011, ia diinkubasi oleh Apache. Pada bulan April 2012, projek Sqoop dipromosikan sebagai projek peringkat tertinggi Apache.





Di blog tutorial Apache Flume ini, kita akan membahas:



Kami akan memulakan tutorial Apache Sqoop ini dengan memperkenalkan Apache Sqoop. Selanjutnya, kita akan memahami kelebihan menggunakan Apache Sqoop.

Tutorial Apache Sqoop: Pengenalan Sqoop

Apache Sqoop - Tutorial Apache Sqoop - EdurekaSecara amnya, aplikasi berinteraksi dengan pangkalan data relasional menggunakan RDBMS, dan dengan demikian ini menjadikan pangkalan data hubungan menjadi salah satu sumber terpenting yang menghasilkan Big Data. Data tersebut disimpan di RDB Server dalam struktur hubungan. Di sini, Apache Sqoop memainkan peranan penting dalam , menyediakan interaksi yang layak antara pelayan pangkalan data hubungan dan HDFS.

Jadi, Apache Sqoop adalah alat dalam yang dirancang untuk memindahkan data antara HDFS (Penyimpanan Hadoop) dan pelayan pangkalan data hubungan seperti MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres dll. Apache Sqoop mengimport data dari pangkalan data hubungan ke HDFS, dan mengeksport data dari HDFS ke pangkalan data hubungan. Ia dengan berkesan memindahkan data pukal antara Hadoop dan kedai data luaran seperti gudang data perusahaan, pangkalan data hubungan, dll.



Ini adalah bagaimana Sqoop mendapat namanya - “ SQ L ke Had buka & Hadoop ke SQL ”.

Selain itu, Sqoop digunakan untuk mengimport data dari kedai data luaran ke alat ekosistem Hadoop seperti Sarang & HBase .

Sekarang, seperti yang kita tahu apa itu Apache Sqoop. Oleh itu, marilah kita maju dalam tutorial Apache Sqoop kami dan memahami mengapa Sqoop digunakan secara meluas oleh organisasi.

Tutorial Apache Sqoop: Mengapa Sqoop?

Bagi pembangun Hadoop, permainan sebenarnya bermula setelah data dimuat dalam HDFS. Mereka menggunakan data ini untuk mendapatkan pelbagai pandangan yang tersembunyi dalam data yang disimpan dalam HDFS.

Jadi, untuk analisis ini, data yang berada dalam sistem pengurusan pangkalan data relasional perlu dipindahkan ke HDFS. Tugas menulis kod untuk mengimport dan mengeksport data dari pangkalan data hubungan ke HDFS tidak menarik & membosankan. Di sinilah Apache Sqoop datang untuk menyelamatkan dan menghilangkan kesakitan mereka. Ia mengotomatisasi proses mengimport & mengeksport data.

Sqoop menjadikan kehidupan pemaju mudah dengan menyediakan CLI untuk mengimport dan mengeksport data. Mereka hanya perlu memberikan maklumat asas seperti pengesahan pangkalan data, sumber, tujuan, operasi dan lain-lain. Ia mengurus bahagian yang tinggal.

Sqoop secara dalaman menukar perintah menjadi tugas MapReduce, yang kemudian dilaksanakan melalui HDFS. Ia menggunakan kerangka YARN untuk mengimport dan mengeksport data, yang memberikan toleransi kesalahan di atas paralelisme.

Untuk maju dalam blog Tutorial Sqoop ini, kita akan memahami ciri-ciri utama Sqoop dan kemudian kita akan beralih ke seni bina Apache Sqoop.

Tutorial Apache Sqoop: Ciri Utama Sqoop

Sqoop menyediakan banyak ciri penting seperti:

  1. Muatan penuh : Apache Sqoop dapat memuat seluruh jadual dengan satu perintah. Anda juga boleh memuatkan semua jadual dari pangkalan data menggunakan satu perintah.
  2. Tambahan Beban : Apache Sqoop juga menyediakan kemudahan beban tambahan di mana anda dapat memuatkan bahagian-bahagian meja setiap kali ia diperbarui.
  3. Selari eksport import : Sqoop menggunakan kerangka YARN untuk mengimport dan mengeksport data, yang memberikan toleransi kesalahan di atas paralelisme.
  4. Import hasil daripada SQL pertanyaan : Anda juga dapat mengimport hasil yang dikembalikan dari pertanyaan SQL di HDFS.
  5. Pemampatan : Anda dapat memampatkan data anda dengan menggunakan algoritma deflate (gzip) dengan argumen –kompres, atau dengan menentukan argumen –kompresi-codec. Anda juga boleh memuatkan jadual termampat di Sarang Apache .
  6. Penyambung untuk semua utama RDBMS Pangkalan Data : Apache Sqoop menyediakan penyambung untuk pelbagai pangkalan data RDBMS, meliputi hampir keseluruhan lilitan.
  7. Kerberos Keselamatan Kesepaduan : Kerberos adalah protokol pengesahan rangkaian komputer yang berfungsi berdasarkan 'tiket' untuk membolehkan nod berkomunikasi melalui rangkaian yang tidak selamat untuk membuktikan identiti mereka satu sama lain dengan cara yang selamat. Sqoop menyokong pengesahan Kerberos.
  8. Beban data secara langsung ke dalam HIVE / HBase : Anda boleh memuatkan data terus ke Sarang Apache untuk analisis dan juga membuang data anda di HBase, yang merupakan pangkalan data NoSQL.
  9. Sokongan untuk Pengumpulan : Anda juga boleh memerintahkan Sqoop untuk mengimport jadual di Accumulo dan bukan direktori dalam HDFS.

Seni bina adalah yang memperkasakan Apache Sqoop dengan kelebihan ini. Sekarang, kerana kita mengetahui ciri-ciri Apache Sqoop, mari kita terus maju dan memahami seni bina & cara kerja Apache Sqoop.

Tutorial Apache Sqoop: Sqoop Architecture & Working

Mari kita fahami bagaimana Apache Sqoop berfungsi menggunakan rajah di bawah:

Alat import mengimport jadual individu dari RDBMS ke HDFS. Setiap baris dalam jadual dianggap sebagai rekod dalam HDFS.

Apabila kita menyerahkan perintah Sqoop, tugas utama kita dibahagikan kepada subtugas yang dikendalikan oleh Tugas Peta individu secara dalaman. Peta Tugas adalah subtugas, yang mengimport sebahagian data ke Hadoop Ecosystem. Secara kolektif, semua tugas Peta mengimport keseluruhan data.

qtp vs selenium yang mana lebih baik

Eksport juga berfungsi dengan cara yang serupa.

Alat eksport mengeksport sekumpulan fail dari HDFS kembali ke RDBMS. Fail yang diberikan sebagai input ke Sqoop mengandungi catatan, yang disebut sebagai baris dalam tabel.

Ketika kami menyerahkan Tugas kami, itu dipetakan ke dalam Tugas Peta yang membawa sebagian data dari HDFS. Potongan ini dieksport ke destinasi data berstruktur. Menggabungkan semua potongan data yang dieksport ini, kami menerima keseluruhan data di tempat tujuan, yang dalam kebanyakan kes adalah RDBMS (MYSQL / Oracle / SQL Server).

Fasa pengurangan diperlukan sekiranya berlaku agregasi. Tetapi, Apache Sqoop hanya mengimport dan mengeksport data yang tidak melakukan agregasi. Pelancongan kerja melancarkan beberapa pemeta bergantung pada nombor yang ditentukan oleh pengguna. Untuk import Sqoop, setiap tugas mapper akan diberikan dengan sebahagian data yang akan diimport. Sqoop menyebarkan data input di antara pemetaan secara sama untuk mendapatkan prestasi tinggi. Kemudian setiap mapper membuat sambungan dengan pangkalan data menggunakan JDBC dan mengambil bahagian data yang diberikan oleh Sqoop dan menulisnya ke dalam HDFS atau Hive atau HBase berdasarkan argumen yang disediakan dalam CLI.

Sekarang setelah kita memahami seni bina dan cara kerja Apache Sqoop, mari kita fahami perbezaan antara Apache Flume dan Apache Sqoop.

Tutorial Apache Sqoop: Flume vs Sqoop

Perbezaan utama antara Flume dan Sqoop adalah:

  • Flume hanya memasukkan data tidak berstruktur atau data separa berstruktur ke dalam HDFS.
  • Sementara Sqoop dapat mengimport serta mengeksport data berstruktur dari gudang data RDBMS atau Enterprise ke HDFS atau sebaliknya.

Sekarang, maju dalam Tutorial Apache Sqoop kami adalah masa yang tepat untuk menjalani perintah Apache Sqoop.

Tutorial Apache Sqoop: Perintah Sqoop

  • Sqoop - Perintah IMPORT

Perintah import digunakan untuk mengimport jadual dari pangkalan data hubungan ke HDFS. Dalam kes kami, kami akan mengimport jadual dari pangkalan data MySQL ke HDFS.

Seperti yang anda lihat pada gambar di bawah, kami mempunyai jadual pekerja di pangkalan data pekerja yang akan kami import ke HDFS.

Perintah untuk mengimport jadual adalah:

import sqoop --hubungkan jdbc: mysql: // localhost / karyawan - nama pengguna edureka - pekerja meja

Seperti yang anda lihat pada gambar di bawah ini, setelah melaksanakan perintah ini, tugas-tugas Peta akan dilaksanakan di bahagian belakang.

Setelah kod dijalankan, anda boleh memeriksa UI Web HDFS iaitu localhost: 50070 tempat data diimport.

  • Sqoop - Perintah IMPORT dengan direktori sasaran

Anda juga boleh mengimport jadual dalam direktori tertentu dalam HDFS menggunakan perintah di bawah ini:

sqoop import --connect jdbc: mysql: // localhost / karyawan - nama pengguna edureka - pekerja meja --m 1 --target-dir / pekerja

Sqoop mengimport data secara selari dari kebanyakan sumber pangkalan data. -m harta tanah digunakan untuk menentukan jumlah pemetaan yang akan dilaksanakan.

Sqoop mengimport data secara selari dari kebanyakan sumber pangkalan data. Anda boleh menentukan jumlah tugas peta (proses selari) yang akan digunakan untuk melakukan import dengan menggunakan -m atau –Num-pemetap hujah. Setiap argumen ini mengambil nilai integer yang sesuai dengan tahap keseimbangan yang harus digunakan.

Anda boleh mengawal jumlah pemetaan secara bebas dari jumlah fail yang terdapat di dalam direktori. Prestasi eksport bergantung kepada tahap paralelisme. Secara lalai, Sqoop akan menggunakan empat tugas selari untuk proses eksport. Ini mungkin tidak optimum, anda perlu bereksperimen dengan persediaan anda sendiri. Tugas tambahan mungkin menawarkan konkurensi yang lebih baik, tetapi jika pangkalan data sudah tertekan semasa mengemas kini indeks, memicu pemicu, dan sebagainya, maka beban tambahan dapat menurunkan kinerja.

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

Bilangan fail yang dibuat semasa mengimport jadual MySQL adalah sama dengan jumlah mapper yang dibuat.

  • Sqoop - Perintah IMPORT dengan Klausa Di Mana

Anda boleh mengimport subset jadual menggunakan klausa 'di mana' di alat import Sqoop. Ini melaksanakan pertanyaan SQL yang sesuai di pelayan pangkalan data masing-masing dan menyimpan hasilnya dalam direktori sasaran dalam HDFS. Anda boleh menggunakan perintah berikut untuk mengimport data dengan ‘ di mana Klausa:

import sqoop --hubungkan jdbc: mysql: // localhost / karyawan - nama pengguna edureka - pekerja meja --m 3 --di mana 'emp_no & gt 49000' --target-dir / Terkini_Pekerja

  • Sqoop - Import Tambahan

Sqoop menyediakan mod import tambahan yang dapat digunakan untuk mengambil baris yang lebih baru daripada beberapa baris yang diimport sebelumnya. Sqoop menyokong dua jenis import tambahan: tambahkan dan terakhir diubah suai . Anda boleh menggunakan argumen –menambah untuk menentukan jenis import tambahan yang akan dilakukan.

Anda harus menentukan tambahkan mod semasa mengimport jadual di mana baris baru terus ditambah dengan peningkatan nilai id baris. Anda menentukan lajur yang mengandungi id baris dengan - semak-lajur . Sqoop mengimport baris di mana ruang semak mempunyai nilai lebih besar daripada yang ditentukan dengan - nilai akhir .

Strategi kemas kini jadual alternatif yang disokong oleh Sqoop dipanggil terakhir diubah suai mod. Anda harus menggunakannya apabila baris jadual sumber dapat diperbaharui, dan setiap kemas kini tersebut akan menetapkan nilai lajur yang terakhir diubah menjadi cap waktu semasa.

Semasa menjalankan import seterusnya, anda harus menentukan - nilai akhir dengan cara ini untuk memastikan anda hanya mengimport data baru atau yang dikemas kini. Ini ditangani secara automatik dengan membuat import tambahan sebagai pekerjaan tersimpan, yang merupakan mekanisme pilihan untuk melakukan import kenaikan berulang.

Pertama, kami memasukkan baris baru yang akan dikemas kini dalam HDFS kami.

Perintah untuk import tambahan adalah:

sqoop import --connect jdbc: mysql: // localhost / karyawan - nama pengguna edureka - pekerja meja --target-dir / Latest_Em Employees - incendementendend --check-column emp_no --last-value 499999

Anda dapat melihat pada gambar di bawah, fail baru dibuat dengan data yang dikemas kini.

  • Sqoop - Import Semua Jadual

Anda boleh mengimport semua jadual dari pelayan pangkalan data RDBMS ke HDFS. Setiap data tabel disimpan dalam direktori yang terpisah dan nama direktori sama dengan nama jadual. Setiap jadual dalam pangkalan data tersebut mesti mempunyai medan kunci utama. Perintah untuk mengimport semua jadual dari pangkalan data adalah:

sqoop import-all-tables --hubungkan jdbc: mysql: // localhost / karyawan - nama pengguna edureka

  • Sqoop - Senaraikan Pangkalan Data

Anda boleh menyenaraikan pangkalan data yang ada dalam pangkalan data hubungan menggunakan Sqoop. Alat senarai-pangkalan data Sqoop menguraikan dan melaksanakan pertanyaan 'SHOW DATABASES' terhadap pelayan pangkalan data. Perintah untuk menyenaraikan pangkalan data adalah:

senarai-pangkalan data sqoop --hubungkan jdbc: mysql: // localhost / - nama pengguna edureka

  • Sqoop - Senarai Jadual

Anda juga boleh menyenaraikan jadual pangkalan data tertentu di pelayan pangkalan data MySQL menggunakan Sqoop. Alat senarai-jadual Sqoop menguraikan dan melaksanakan pertanyaan 'SHOW TABLES'. Perintah untuk menyenaraikan jadual adalah pangkalan data adalah:

senarai-senarai sqoop --hubungkan jdbc: mysql: // localhost / karyawan - nama pengguna edureka

  • Sqoop - Eksport

Seperti yang telah kita bincangkan di atas, anda juga dapat mengeksport data dari HDFS ke pangkalan data RDBMS. Jadual sasaran mesti ada di pangkalan data sasaran.Data disimpan sebagai rekod dalam HDFS. Rekod ini dibaca dan dihuraikan dan dibatasi dengan pembatas yang ditentukan pengguna.Operasi lalai adalah memasukkan semua rekod dari fail input ke jadual pangkalan data menggunakan pernyataan INSERT. Dalam mod kemas kini, Sqoop menghasilkan pernyataan UPDATE yang menggantikan rekod yang ada ke dalam pangkalan data.

Oleh itu, pertama kita membuat jadual kosong, di mana kita akan mengeksport data kita.

Perintah untuk mengeksport data dari HDFS ke pangkalan data hubungan adalah:

sqoop export --connect jdbc: mysql: // localhost / karyawan - nama pengguna edureka --table emp - eksport-dir / pengguna / edureka / pekerja

  • Sqoop - Codegen

Dalam aplikasi berorientasi objek, setiap tabel pangkalan data memiliki satu kelas Objek Akses Data yang berisi metode 'getter' dan 'setter' untuk menginisialisasi objek. Codegen menghasilkan kelas DAO secara automatik. Ini menghasilkan kelas DAO di Java, berdasarkan struktur Skema Jadual.

Perintah untuk menghasilkan kod java adalah:

sqoop codegen --connect jdbc: mysql: // localhost / karyawan - nama pengguna edureka - pekerja meja

Anda dapat melihat jalan di gambar di atas di mana kod dihasilkan. Mari kita pergi ke jalan dan periksa fail yang dibuat.

Saya harap blog ini memberi maklumat dan nilai tambah kepada anda. Sekiranya anda berminat untuk mengetahui lebih lanjut, anda boleh melalui ini yang memberitahu anda tentang Big Data dan bagaimana Hadoop menyelesaikan cabaran yang berkaitan dengan Big Data.

Sekarang setelah anda memahami Apache Sqoop, lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus Latihan Pensijilan Hadoop Data Besar Edureka membantu pelajar menjadi pakar dalam bidang HDFS, Benang, MapReduce, Babi, Hive, HBase, Oozie, Flume dan Sqoop menggunakan kes penggunaan masa nyata di domain Runcit, Media Sosial, Penerbangan, Pelancongan, Kewangan.

Ada soalan untuk kami? Sila sebutkan di bahagian komen dan kami akan menghubungi anda.