Apache Sqoop Tutorial - Mag-import / Mag-export ng Data Sa Pagitan ng HDFS at RDBMS



Apache Sqoop Tutorial: Ang Sqoop ay isang tool para sa paglilipat ng data sa pagitan ng Hadoop at mga kaugnay na database. Saklaw ng blog na ito ang pag-import at pag-export ng Sooop mula sa MySQL.

Bago magsimula sa tutorial na Apache Sqoop na ito, bumalik tayo sa isang hakbang. Naaalala mo ba ang kahalagahan ng paglunok ng data, tulad ng tinalakay natin ito sa aming naunang blog sa Apache Flume . Ngayon, tulad ng alam natin na ang Apache Flume ay isang tool ng paglunok ng data para sa mga hindi istrakturang mapagkukunan, ngunit iniimbak ng mga organisasyon ang kanilang data sa pagpapatakbo sa mga nauugnay na database. Kaya, nagkaroon ng pangangailangan ng isang tool na maaaring mag-import at mag-export ng data mula sa mga nauugnay na database. Ito ang dahilan kung bakit ipinanganak ang Apache Sqoop. Madaling maisama ang Sqoop sa Hadoop at itapon ang nakabalangkas na data mula sa mga nauugnay na database sa HDFS, na papuri sa lakas ng Hadoop. Ito ang dahilan kung bakit, utos ng isang mahusay na kaalaman ng Apache Sqoop at Flume.

Sa una, ang Sqoop ay binuo at pinananatili ni Cloudera. Nang maglaon, noong Hulyo 23, 2011, napasama ito ng Apache. Noong Abril 2012, ang proyekto ng Sqoop ay na-promosyon bilang pinakamataas na proyekto ng Apache.





Sa Apache Flume tutorial blog na ito, sasakupin namin ang:



Sisimulan namin ang tutorial na Apache Sqoop sa pamamagitan ng pagpapakilala sa Apache Sqoop. Pagkatapos ay magpatuloy, mauunawaan natin ang mga pakinabang ng paggamit ng Apache Sqoop.

Apache Sqoop Tutorial: Sqoop Panimula

Apache Sqoop - Apache Sqoop Tutorial - EdurekaPangkalahatan, ang mga application ay nakikipag-ugnay sa pamamagitang database gamit ang RDBMS, at sa gayon ginagawa nito ang mga pamamagitang database ng isa sa pinakamahalagang mapagkukunan na bumubuo ng Malaking Data. Ang nasabing data ay nakaimbak sa RDB Servers sa istrakturang pang-ugnay. Dito, ang Apache Sqoop ay may mahalagang papel sa , na nagbibigay ng magagawa na pakikipag-ugnayan sa pagitan ng pamamagitang database server at HDFS.

Kaya, ang Apache Sqoop ay isang tool sa na idinisenyo upang ilipat ang data sa pagitan HDFS (Imbakan ng Hadoop) at mga nauugnay na server ng database tulad ng MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres atbp. Ang Apache Sqoop ay nag-import ng data mula sa mga nauugnay na database sa HDFS, at ini-export ang data mula sa HDFS patungo sa mga nauugnay na database. Mahusay na inililipat nito ang maramihang data sa pagitan ng Hadoop at mga panlabas na tindahan ng data tulad ng mga warehouse ng data ng enterprise, mga kaugnay na database, atbp.



Ganito nakuha ang pangalan ng Sqoop - ' SQ L kay Had buksan & Hadoop sa SQL ”.

Bilang karagdagan, ginagamit ang Sqoop upang mag-import ng data mula sa mga panlabas na datastore sa mga tool ng ecosystem ng Hadoop tulad ng Pugad & HBase .

Ngayon, sa pagkakaalam natin kung ano ang Apache Sqoop. Kaya, advance tayo sa aming tutorial na Apache Sqoop at unawain kung bakit ang Sqoop ay ginagamit ng malawakan ng mga organisasyon.

Apache Sqoop Tutorial: Bakit Sqoop?

Para sa developer ng Hadoop, nagsisimula ang aktwal na laro pagkatapos na mai-load ang data sa HDFS. Pinatugtog nila ang data na ito upang makakuha ng iba't ibang mga pananaw na nakatago sa data na nakaimbak sa HDFS.

Kaya, para sa pagtatasa na ito, ang data na naninirahan sa mga nauugnay na sistema ng pamamahala ng database ay kailangang ilipat sa HDFS. Ang gawain ng pagsusulat ang code para sa pag-import at pag-export ng data mula sa pamanggit na database sa HDFS ay hindi nakakainteres at nakakapagod. Dito dumarating ang Apache Sqoop upang iligtas at matanggal ang kanilang sakit. Awtomatiko nitong proseso ng pag-import at pag-export ng data.

Ginagawang madali ng Sqoop ang buhay ng mga developer sa pamamagitan ng pagbibigay ng CLI para sa pag-import at pag-export ng data. Kailangan lang nilang magbigay ng pangunahing impormasyon tulad ng pagpapatotoo ng database, mapagkukunan, patutunguhan, pagpapatakbo atbp Inaalagaan ang natitirang bahagi.

bilog doble sa int java

Panloob na binago ng Sqoop ang utos sa mga gawain sa MapReduce, na pagkatapos ay isinasagawa sa paglipas ng HDFS. Gumagamit ito ng balangkas ng YARN upang mai-import at mai-export ang data, na nagbibigay ng pagpapaubaya sa kasalanan sa tuktok ng parallelism.

Isusulong ang blog ng Sqoop Tutorial na ito, mauunawaan natin ang mga pangunahing tampok ng Sqoop at pagkatapos ay lilipat tayo sa arkitektura ng Apache Sqoop.

Apache Sqoop Tutorial: Pangunahing Mga Tampok ng Sqoop

Nagbibigay ang Sqoop ng maraming mga kapansin-pansin na tampok tulad ng:

  1. Buong Load : Maaaring i-load ng Apache Sqoop ang buong talahanayan sa pamamagitan ng isang solong utos. Maaari mo ring mai-load ang lahat ng mga talahanayan mula sa isang database gamit ang isang solong utos.
  2. Karagdagan Mag-load : Nagbibigay din ang Apache Sqoop ng pasilidad ng incremental load kung saan maaari mong mai-load ang mga bahagi ng talahanayan tuwing nai-update ito.
  3. Kapareho pag-import / pag-export : Gumagamit ang Sqoop ng balangkas ng YARN upang mai-import at mai-export ang data, na nagbibigay ng pagpapaubaya sa kasalanan sa tuktok ng parallelism.
  4. Angkat mga resulta ng SQL tanong : Maaari mo ring mai-import ang resulta na ibinalik mula sa isang query sa SQL sa HDFS.
  5. Pag-compress : Maaari mong i-compress ang iyong data sa pamamagitan ng paggamit ng deflate (gzip) algorithm na may –compress argument, o sa pamamagitan ng pagtukoy sa argumentong –compression-codec. Maaari mo ring mai-load ang naka-compress na talahanayan sa Apache Hive .
  6. Mga konektor para sa lahat major RDBMS Mga database : Nagbibigay ang Apache Sqoop ng mga konektor para sa maraming mga database ng RDBMS, na sumasakop sa halos buong bilog.
  7. Kerberos Seguridad Pagsasama : Ang Kerberos ay isang computer network authentication protocol na gumagana batay sa ‘mga tiket’ upang payagan ang mga node na nakikipag-usap sa isang hindi ligtas na network na patunayan ang kanilang pagkakakilanlan sa isa't isa sa isang ligtas na pamamaraan. Sinusuportahan ng Sqoop ang pagpapatotoo ng Kerberos.
  8. Mag-load data diretso sa BUHAY / HBase : Maaari mong mai-load ang data nang direkta sa Apache Hive para sa pagtatasa at ilalagay din ang iyong data sa HBase, na isang NoSQL database.
  9. Suporta para sa Pagkatipon : Maaari mo ring utusan ang Sqoop na i-import ang talahanayan sa Accumulo sa halip na isang direktoryo sa HDFS.

Ang arkitektura ay isa na nagbibigay kapangyarihan sa Apache Sqoop sa mga benepisyong ito. Ngayon, sa pagkakaalam natin ng mga tampok ng Apache Sqoop, magpatuloy tayong unawain at unawain ang arkitektura at pagtatrabaho ng Apache Sqoop.

Apache Sqoop Tutorial: Sqoop Architecture at Paggawa

Ipaunawa sa amin kung paano gumagana ang Apache Sqoop gamit ang diagram sa ibaba:

Nag-import ang tool ng pag-import ng mga indibidwal na talahanayan mula sa RDBMS hanggang sa HDFS. Ang bawat hilera sa isang talahanayan ay itinuturing bilang isang talaan sa HDFS.

Kapag nagsumite kami ng utos ng Sqoop, ang aming pangunahing gawain ay nahahati sa mga subtask na hinahawakan ng indibidwal na Map Task sa loob. Ang Map Task ay ang subtask, na nag-i-import ng bahagi ng data sa Hadoop Ecosystem. Sama-sama, lahat ng mga gawain sa Mapa ay nag-i-import ng buong data.

Gumagawa din ang pag-export sa katulad na pamamaraan.

Ang tool sa pag-export ay nai-export ang isang hanay ng mga file mula sa HDFS pabalik sa isang RDBMS. Ang mga file na ibinigay bilang input sa Sqoop ay naglalaman ng mga talaan, na kung saan ay tinawag bilang mga hilera sa talahanayan.

Kapag isinumite namin ang aming Trabaho, nai-map ito sa Mga Map Tasks na nagdadala ng tipak ng data mula sa HDFS. Ang mga tipak na ito ay nai-export sa isang nakaayos na patutunguhan ng data. Pinagsasama ang lahat ng mga nai-export na chunks ng data, natatanggap namin ang buong data sa patutunguhan, na sa karamihan ng mga kaso ay isang RDBMS (MYSQL / Oracle / SQL Server).

Kinakailangan ang pagbabawas ng yugto sa kaso ng mga pagsasama-sama. Ngunit, ang Apache Sqoop ay nag-i-import lamang at nai-export ang data na hindi ito nagsasagawa ng anumang mga pagsasama-sama. Ang trabaho sa mapa ay naglulunsad ng maraming mga mapper depende sa bilang na tinukoy ng gumagamit. Para sa pag-import ng Sqoop, ang bawat gawain sa mapper ay itatalaga sa isang bahagi ng data na mai-import. Ibinahagi ng Sqoop ang input data sa mga mapper nang pantay upang makakuha ng mataas na pagganap. Pagkatapos ang bawat mapper ay lumilikha ng isang koneksyon sa database gamit ang JDBC at kinukuha ang bahagi ng data na itinalaga ng Sqoop at isusulat ito sa HDFS o Hive o HBase batay sa mga argumento na ibinigay sa CLI.

Ngayon naiintindihan na namin ang arkitektura at pagtatrabaho ng Apache Sqoop, unawain natin ang pagkakaiba sa pagitan ng Apache Flume at Apache Sqoop.

Tutorial sa Apache Sqoop: Flume vs Sqoop

Ang pangunahing pagkakaiba sa pagitan ng Flume at Sqoop ay ang:

  • Ang flume ay naglalagay lamang ng hindi nakaayos na data o semi-istrukturang data sa HDFS.
  • Habang ang Sqoop ay maaaring mag-import pati na rin i-export ang nakabalangkas na data mula sa RDBMS o Enterprise data warehouse sa HDFS o kabaligtaran.

Ngayon, ang pagsulong sa aming Apache Sqoop Tutorial ito ang mataas na oras upang dumaan sa mga utos ng Apache Sqoop.

Tutorial sa Apache Sqoop: Mga Utos ng Sqoop

  • Sqoop - Command ng IMPORT

Ginagamit ang command ng pag-import sa pag-import ng isang talahanayan mula sa mga nauugnay na database sa HDFS. Sa aming kaso, mag-a-import kami ng mga talahanayan mula sa MySQL database sa HDFS.

Tulad ng nakikita mo sa imahe sa ibaba, mayroon kaming talahanayan ng mga empleyado sa database ng mga empleyado na mai-import namin sa HDFS.

Ang utos para sa pag-import ng talahanayan ay:

sqoop import --connect jdbc: MySQL: // localhost / empleyado --username edureka --mga empleyado

Tulad ng nakikita mo sa imaheng nasa ibaba, pagkatapos maipatupad ang utos na ito ng Map na mga gawain ay isasagawa sa likurang dulo.

Matapos maipatupad ang code, maaari mong suriin ang Web UI ng HDFS ibig sabihin localhost: 50070 kung saan na-import ang data.

  • Sqoop - IMPORT Command na may target na direktoryo

Maaari mo ring mai-import ang talahanayan sa isang tukoy na direktoryo sa HDFS gamit ang utos sa ibaba:

sqoop import --connect jdbc: MySQL: // localhost / empleyado --username edureka --mga empleyado --m 1 --target-dir / empleyado

Ang Sqoop ay nag-import ng data nang kahanay mula sa karamihan sa mga mapagkukunan ng database. -m ang pag-aari ay ginagamit upang tukuyin ang bilang ng mga mappers na naisakatuparan.

Ang Sqoop ay nag-import ng data nang kahanay mula sa karamihan sa mga mapagkukunan ng database. Maaari mong tukuyin ang bilang ng mga gawain sa mapa (parallel na proseso) na gagamitin upang maisagawa ang pag-import sa pamamagitan ng paggamit ng -m o –Num-mappers pagtatalo Ang bawat isa sa mga argumentong ito ay tumatagal ng isang halaga ng integer na tumutugma sa antas ng parallelism upang magamit.

Maaari mong makontrol ang bilang ng mga mappers nang nakapag-iisa mula sa bilang ng mga file na naroroon sa direktoryo. Ang pagganap ng pag-export ay nakasalalay sa antas ng parallelism. Bilang default, gagamitin ng Sqoop ang apat na mga gawain nang kahanay para sa proseso ng pag-export. Maaaring hindi ito pinakamainam, kakailanganin mong mag-eksperimento sa iyong sariling partikular na pag-set up. Ang mga karagdagang gawain ay maaaring mag-alok ng mas mahusay na pagsabay, ngunit kung ang database ay naka-bottleneck sa pag-update ng mga indeks, pag-uudyok ng mga pag-trigger, at iba pa, kung gayon ang karagdagang karga ay maaaring mabawasan ang pagganap.

Maaari mong makita sa imahe sa ibaba, na ang bilang ng gawain sa mapper ay 1.

Ang bilang ng mga file na nilikha habang ina-import ang mga talahanayan ng MySQL ay katumbas ng bilang ng mapper na nilikha.

  • Sqoop - I-import ang Command na Saan Sugnay

Maaari kang mag-import ng isang subset ng isang talahanayan gamit ang sugnay na 'saan' sa tool na pag-import ng Sqoop. Isinasagawa nito ang kaukulang SQL query sa kani-kanilang server ng database at iniimbak ang resulta sa isang direktoryo ng target sa HDFS. Maaari mong gamitin ang sumusunod na utos upang mag-import ng data sa ‘ kung saan ‘Sugnay:

sqoop import --connect jdbc: MySQL: // localhost / empleyado --username edureka --mga empleyado --m 3 - kung saan 'emp_no & gt 49000' --target-dir / Latest_Employees

  • Sqoop - Karagdagang Pag-import

Nagbibigay ang Sqoop ng isang incremental na mode ng pag-import na maaaring magamit upang makuha ang mga hilera lamang na mas bago kaysa sa ilang dating na-import na hanay ng mga hilera. Sinusuportahan ng Sqoop ang dalawang uri ng mga incremental na pag-import: idugtong at huling binago . Maaari mong gamitin ang –incremental argument upang tukuyin ang uri ng incremental import upang maisagawa.

Dapat mong tukuyin idugtong mode kapag nag-i-import ng isang talahanayan kung saan ang mga bagong hilera ay patuloy na idinagdag na may pagtaas ng mga halaga ng row id. Tinukoy mo ang haligi na naglalaman ng row ng id kasama –Check-haligi . Nag-import ang Sqoop ng mga hilera kung saan ang haligi ng tseke ay may halagang higit sa isang tinukoy –Last-halaga .

Ang isang kahaliling diskarte sa pag-update ng talahanayan na suportado ng Sqoop ay tinawag huling binago mode Dapat mong gamitin ito kapag ang mga hilera ng pinagmulang talahanayan ay maaaring ma-update, at ang bawat naturang pag-update ay magtatakda ng halaga ng isang huling binago na haligi sa kasalukuyang timestamp.

Kapag nagpapatakbo ng isang kasunod na pag-import, dapat mong tukuyin –Last-halaga sa ganitong paraan upang matiyak na mai-import mo lamang ang bago o na-update na data. Awtomatiko itong hinahawakan sa pamamagitan ng paglikha ng isang incremental import bilang isang nai-save na trabaho, na kung saan ay ang ginustong mekanismo para sa pagsasagawa ng isang umuulit na karagdagang pag-import.

Una, nagsasama kami ng isang bagong hilera na maa-update sa aming HDFS.

Ang utos para sa dagdag na pag-import ay:

sqoop import --connect jdbc: MySQL: // localhost / empleyado --username edureka --mga empleyado --target-dir / Latest_Employees --incremental append --check-column emp_no --last-value 499999

Maaari mong makita sa imahe sa ibaba, isang bagong file ang nilikha kasama ang na-update na data.

  • Sqoop - I-import ang Lahat ng Mga Talahanayan

Maaari mong i-import ang lahat ng mga talahanayan mula sa RDBMS database server sa HDFS. Ang bawat data ng talahanayan ay nakaimbak sa isang hiwalay na direktoryo at ang pangalan ng direktoryo ay pareho sa pangalan ng talahanayan. Ito ay sapilitan na ang bawat talahanayan sa database na iyon ay dapat magkaroon ng pangunahing pangunahing larangan. Ang utos para sa pag-import ng lahat ng talahanayan mula sa isang database ay:

sqoop import-all-tables - ikonekta ang jdbc: MySQL: // localhost / empleyado --username edureka

  • Sqoop - Listahan ang Mga Database

Maaari mong ilista ang mga database na naroroon na nauugnay sa database gamit ang Sqoop. Ang mga tool ng listahan ng database ng Sqoop ay nag-parse at nagpapatupad ng query na 'SHOW DATABASES' laban sa database server. Ang utos para sa listahan ng mga database ay:

sqoop list-database - magkakonekta jdbc: MySQL: // localhost / --username edureka

  • Sqoop - Listahan ng Mga Talahanayan

Maaari mo ring ilista ang mga talahanayan ng isang partikular na database sa MySQL database server gamit ang Sqoop. Ang mga tool sa listahan ng talahanayan ng Sqoop ay nagpaparse at nagpapatupad ng query na 'SHOW TABLES'. Ang utos para sa listahan ng mga talahanayan ay isang database ay:

sqoop list-tables - ikonekta ang jdbc: MySQL: // localhost / empleyado --username edureka

  • Sqoop - I-export

Tulad ng tinalakay sa itaas, maaari ka ring mag-export ng data mula sa HDFS papunta sa RDBMS database. Dapat na mayroon ang target na talahanayan sa target na database.Ang data ay naka-imbak bilang mga talaan sa HDFS. Ang mga talaang ito ay nabasa at na-parse at na-delimitado sa tinukoy ng gumagamit na delimiter.Ang default na operasyon ay upang ipasok ang lahat ng mga tala mula sa mga file ng pag-input sa talahanayan ng database gamit ang pahayag na INSERT. Sa mode ng pag-update, bumubuo ang Sqoop ng pahayag na UPDATE na pumapalit sa umiiral na tala sa database.

Kaya, unang lumilikha kami ng isang walang laman na talahanayan, kung saan i-export namin ang aming data.

Ang utos na i-export ang data mula sa HDFS papunta sa relational database ay:

sqoop export - ikonekta ang jdbc: mysql: // localhost / empleyado --username edureka --table emp --export-dir / user / edureka / empleyado

  • Sqoop - Codegen

Sa application na nakatuon sa object, ang bawat talahanayan ng database ay may isang klase ng Access ng Data Access na naglalaman ng mga pamamaraan na 'getter' at 'setter' upang simulan ang mga bagay. Awtomatikong nabubuo ng Codegen ang klase ng DAO. Bumubuo ito ng klase ng DAO sa Java, batay sa istraktura ng Table Schema.

Ang utos para sa pagbuo ng java code ay:

sqoop codegen --connect jdbc: MySQL: // localhost / empleyado --username edureka --mga empleyado

kung paano gamitin ang atom na may sawa

Maaari mong makita ang landas sa imahe sa itaas kung saan nabuo ang code. Pumunta tayo sa landas at suriin ang mga file na nilikha.

Inaasahan kong ang blog na ito ay may kaalaman at naidagdag na halaga sa iyo. Kung interesado kang matuto nang higit pa, maaari mo itong daanan na nagsasabi sa iyo tungkol sa Big Data at kung paano nilulutas ng Hadoop ang mga hamon na nauugnay sa Big Data.

Ngayon na naintindihan mo ang Apache Sqoop, tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Ang kurso sa Edureka Big Data Hadoop Certification Training ay tumutulong sa mga nag-aaral na maging dalubhasa sa HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume at Sqoop na gumagamit ng mga kaso ng paggamit ng real-time sa Retail, Social Media, Aviation, Turismo, Pananalapi domain.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento at babalikan ka namin.