Детаљни увод у СКООП архитектуру

Апацхе Скооп је алат за уношење података дизајниран за ефикасан пренос масовних података између Апацхе Хадооп-а и структурираних складишта података као што су релационе базе података и обрнуто.

Као део овог блога, објаснићу како архитектура ради на извршавању наредбе Скооп. Обухватићу детаље попут генерације јар-а преко Цодегена, извршења задатка МапРедуце и различитих фаза укључених у покретање наредбе Скооп за увоз / извоз.

Цодеген

Разумевање Цодегена је од суштинске важности, јер ово интерно претвара наш Скооп посао у јар који се састоји од неколико Јава класа као што су ПОЈО, ОРМ и класе која имплементира ДБВритабле, проширујући СкоопРецорд за читање и писање података из релационих база података у Хадооп и вице- обрнуто.

Можете израдити Цодеген експлицитно као што је приказано доле да бисте проверили класе присутне као део јар.

sqoop codegen \ -- connect jdbc:mysql://ms.jayReddy.com:3306/retail_db \ -- username retail_user \ -- password ******* \ -- table products

Излазни јар ће бити написан у вашем локалном систему датотека. Добит ћете Јар датотеку, Јава датотеку и јава датотеке које су компајлиране у .цласс датотеке:

Погледајмо исечак кода који ће се генерисати.

Класа ОРМ за табелу 'производи' // Предметно-релациони модал генерисан за мапирање:

Сеттер & Геттер методе за добијање вредности:

Интерно користи ЈДБЦ припремљене изјаве за писање у Хадооп и РесултСет за читање података из Хадооп-а.

Скооп Импорт

Користи се за увоз података из традиционалних релационих база података у Хадооп.

Погледајмо фрагмент узорка за исти.

sqoop import \ -- connect jdbc:mysql://ms.jayReddy.com:3306/retail_db \ -- username retail_user \ -- password ******* \ -- table products \ -- warehouse-dir /user/jvanchir/sqoop_prac/import_table_dir \ -- delete-target-dir

Следећи кораци се одвијају интерно током извршавања скоопа.

Корак 1 : Читање података из МиСКЛ-а у стриминг моду. Ради разне операције пре уписивања података у ХДФС.

Као део овог процеса, прво ће генерисати код (типични Мап Редуцтион код) који није ништа друго до Јава код. Коришћењем овог Јава кода покушаће да га увози.

  • Генериши код. (Хадооп МР)
  • Саставите код и генеришите Јар датотеку.
  • Пошаљите датотеку Јар и извршите операције увоза

Током увоза мора донети одређене одлуке како поделити податке у више нити тако да се Скооп увоз може скалирати.

Корак 2 : Схватите структуру података и извршите ЦодеГен

Користећи горњу СКЛ наредбу, дохватиће један запис заједно са именима ступаца. Користећи ове информације, извући ће информације о метаподацима колона, типа података итд.

Корак 3 : Креирајте јава датотеку, компајлирајте је и генеришите јар датотеку

Као део генерисања кода, он мора да разуме структуру података и мора тај објект интерно применити на долазне податке како би био сигуран да су подаци исправно копирани у циљну базу података. Свака јединствена табела има једну Јава датотеку која говори о структури података.

Ова јар датотека убризгаће се у бинарне датотеке Скооп-а да би применила структуру на долазне податке.

Корак 4 : Избришите циљни директоријум ако већ постоји.

Корак 5 : Увезите податке

Овде се повезује са менаџером ресурса, добива ресурс и покреће мастер апликације.

Да би извршио једнаку дистрибуцију података међу задацима мапе, она подразумевано извршава упит о граници на основу примарног кључа

да бисте пронашли минимални и максимални број записа у табели.

На основу максималног броја, поделит ће се са бројем мапирања и поделити између сваког мапирања.

Подразумевано користи 4 мапе:

Извршава ове послове на различитим извршитељима, као што је приказано доле:

Задани број мапе може се променити подешавањем следећег параметра:

Дакле, у нашем случају користи 4 нити. Свака нит обрађује међусобно искључиве подскупове, односно свака нит обрађује различите податке од осталих.

Да бисте видели различите вредности, погледајте доле:

Операције које се изводе под сваким извршним чворовима:

У случају да извршите увоз кошнице Скоооп, одвија се један додатни корак као део извршења.

Корак 6 : Копирајте податке у табелу кошница

Скооп Екпорт

Ово се користи за извоз података из Хадоопа у традиционалне релационе базе података.

Погледајмо фрагмент узорка за исти:

sqoop export \ -- connect jdbc:mysql://ms.jayReddy.com:3306/retail_export \ -- username retail_user \ -- password ******* \ -- table product_sqoop_exp \ -- export-dir /user/jvanchir/sqoop_prac/import_table_dir/products

On executing the above command, the execution steps (1–4) similar to Sqoop import take place, but the source data is read from the file system (which is nothing but HDFS). Here it will use boundaries upon block size to divide the data and it is internally taken care by Sqoop.

The processing splits are done as shown below:

After connecting to the respective database to which the records are to be exported, it will issue a JDBC insert command to read data from HDFS and store it into the database as shown below.

Now that we have seen how Sqoop works internally, you can determine the flow of execution from jar generation to execution of a MapReduce task on the submission of a Sqoop job.

Note: The commands that were executed related to this post are added as part of my GIT account.

Similarly, you can also read more here:

  • Дубинска архитектура кошница са кодом .
  • ХДФС архитектура у дубини са кодом .

Ако и ви желите, можете се повезати са мном на ЛинкедИн-у - Јаивардхан Редди.

Ако сте уживали читајући овај чланак, можете кликнути на пљескање и обавестити друге о томе. Ако желите да додам још нешто, слободно оставите одговор?