Што такое Spring для Apache Hadoop?

Агляд: вясна is one of the widely used frameworks in enterprise applications development. вясна мае розныя кампаненты, такія як Spring ORM, Spring JDBC і г.д., каб падтрымліваць розныя функцыі. Вясна для Apache Hadoop з'яўляецца асновай для падтрымкі будаўніцтва прыкладанняў з кампанентамі Hadoop як HDFS, MapReduce і вулей і г.д.. вясна прадастаўляе API-інтэрфейсы для працы з усімі гэтымі кампанентамі. Spring таксама падтрымлівае інтэграцыю Hadoop з іншымі праектамі Spring экосистемных для распрацоўкі прыкладанняў ў рэальным жыцці. У гэтым артыкуле мы абмяркуем выкарыстанне вясна за рамкі Apache Hadoop.

Увядзенне:
Apache Hadoop ўяўляе сабой каркас праграмнага забеспячэння з адчыненым зыходным кодам, які выкарыстоўваецца для захоўвання і апрацоўкі дадзеных набораў большага аб'ёму. Spring таксама з'яўляецца адкрытым зыходным кодам, які шырока выкарыстоўваецца ў прыкладаннях Java / J2EE. ін'екцыі залежнасцяў у Spring (Аб) або інверсія кантролю (IO) механізм стаў папулярнай альтэрнатывай Бабы Enterprise Java (або EJB) мадэль. Спружына мае перавагу быць дастаткова гнуткім, каб быць лёгка падлучаны з любым іншым рамкі развіцця. Выкарыстоўваючы гэта перавага, вясной, мы можам падключыць яго з дапамогай Apache Hadoop, каб дапамагчы нам атрымаць максімальную выгаду ад кожнага з гэтых двух структур.

пачатак працы:
У гэтым раздзеле мы пагаворым пра тое, як стварыць Hadoop MapReduce Праца з выкарыстаннем Spring. Гэта ўключае ў сябе наступныя крокі -

  • Step 1 - Атрымаць неабходныя залежнасці з выкарыстаннем Maven - Як мы ведаем, Maven моцна залежыць ад файла pom.xml, мы робім наступныя запісы ў нашым файле pom.xml. Гэтыя запісы залежнасцяў з'яўляюцца для ядра Hadoop і Spring Framework.

Listing1: Прыклады запісу канфігурацыі ў файле pom.xml

[код]

< !– Spring Data Apache Hadoop — >
< залежнасць >
< идентификатор_группы > org.springframework.data </ идентификатор_группы >
< артэфакта > веснавых дадзеных Hadoop </ артэфакта >
< version > 1.0.0.РЭЛІЗ </ version >
< /залежнасць >
< !– Apache Hadoop Ядро -- >
< залежнасць >
< идентификатор_группы > org.apache.hadoop </ идентификатор_группы >
< артэфакта > Hadoop-жыльных </ артэфакта >
< version > 1.0.3 </version >
</залежнасць>

[/ код]

  • Step 2 - Стварэнне кампанента сопоставителя - Як мы ведаем кампанент Mapper выкарыстоўваецца, каб разарваць фактычную праблему на больш дробныя кампаненты. Гэтыя меншыя кампаненты становяцца прасцей вырашаць. Мы можам мець наш уласны наладжаны кампанент сопоставителя за кошт пашырэння карты Apache паменшыць клас Mapper. Нам неабходна перавызначыць метад карты гэтага класа. Клас Mapper чакае, што наступныя чатыры параметру -

для ўводу: Гэтыя параметры служаць для ўводу ключа і значэння

  • ТАДЫ - Гэты параметр апісвае тып ключа, які прадугледжаны ў якасці ўваходных дадзеных для кампанента картографа.
  • VALUEIN - Гэты параметр апісвае тып значэння, якое прадастаўляецца ў якасці ўваходных дадзеных для кампанента пераўтваральнікаў.

для высновы: Гэтыя параметры для вываду ключа і значэння

  • KEYOUT - Гэты параметр апісвае тып з пакласці ключавой параметр з кампанента картографа.
  • VALUEOUT - Гэты параметр апісвае тып выхаднога значэння з кампанента картографа.

Кожны з гэтых параметраў неабходна рэалізаваць немагчыма запісаць interface. У дадзеным прыкладзе, мы выкарыстоўвалі нашу картографа, каб прачытаць змесціва файла адной лініі ў той час, і падрыхтаваць пары ключ-значэнне кожнага радка. Наша рэалізацыя метаду адлюстравання выконвае наступныя задачы -

  • First, падзяліць кожную асобную радок у словы
  • Другі, перабіраць кожнае слова і вымаюць ні ўсё Unicode сімвалы, якія не з'яўляюцца ні літар, ні сімвалаў.
  • Трэцяя, пабудаваць пару ключ-значэнне з дапамогай метаду запісу з кантэкст клас, які сумяшчальны з парай ключ-значэнне чакаецца выхадны.

Listing2: Прыклад заказны клас Mapper

[Code]

Адкрыты клас MyWordMapper пашырае Mapper<LongWritable, тэкст, тэкст, IntWritable> {
Прыватны Тэкст MyWord = новы тэкст();

@ Override
абаронены несапраўдным карту(ключ LongWritable, значэнне тэксту, кантэкст кантэкст) кідае IOException, InterruptedException {
Радок лінія = value.toString();
StringTokenizer lineTokenz = новы StringTokenizer(line);
у той час як (lineTokenz.hasMoreTokens()) {
Радок cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(MyWord, новы IntWritable(1));
}
}

/**
* Замяніць усе сімвалы Unicode, якія не з'яўляюцца ні лічбы, ні літары з пустым радком.
* @param арыгінал, Гэта зыходная радок
* @return радковы аб'ект, які змяшчае толькі літары і лічбы
*/
прыватныя removeNonLettersNonNumbers струнных (радок арыгінала) {
вярнуць original.replaceAll(“[^ Р{L}\\р{N}]”, “”);
}
}

[/Code]

Step 3 - Стварыце рэдуктар Кампанент - Рэдуктар ўяўляе сабой кампанент, які выдаляе непажаданыя прамежкавыя значэння і перасылае толькі тыя ключавыя пары значэнняў, якія маюць дачыненне. Для таго, каб мець наш наладжаны рэдуктар, наш клас павінен падоўжыць рэдуктар клас і больш асядлаць метад скарачэння. Клас рэдуктар чакае, што наступныя чатыры параметру.

для ўводу: Гэтыя параметры служаць для ўводу ключа і значэння

  • ТАДЫ - Гэты параметр апісвае тып ключа, які прадугледжаны ў якасці ўваходных дадзеных для кампанента картографа.
  • VALUEIN - Гэты параметр апісвае тып значэння, якое прадастаўляецца ў якасці ўваходных дадзеных для кампанента пераўтваральнікаў.

для высновы: Гэтыя параметры для вываду ключа і значэння

  • KEYOUT - Гэты параметр апісвае тып з пакласці ключавой параметр з кампанента картографа
  • VALUEOUT - Гэты параметр апісвае тып выхаднога значэння з кампанента картографа.

Пры рэалізацыі мы павінны пераканацца, што тып дадзеных з 'keyin' і 'параметраў KEYOUT' аднолькавыя. Акрамя таго, 'valuein' і параметры valueout 'павінны быць таго ж тыпу. Наша рэалізацыя метаду зніжэння выконвае наступныя крокі -

  • First, праверце, што ўводу ключа ўтрымлівае патрэбнае слова.
  • Другі, калі вышэй крок дакладна, атрымаць колькасць уваходжанняў словы.
  • Трэцяя, пабудаваць новую пару ключ-значэнне, выклікаўшы метад запісу класа рэдуктара.

Listing3: Прыклад заказны клас Reducer

[Code]

імпарт org.apache.hadoop.io.IntWritable;
імпарт org.apache.hadoop.io.Text;
імпарт org.apache.hadoop.mapreduce.Reducer;

Адкрыты клас MyWordReducer пашырае Reducer<тэкст, IntWritable, тэкст, IntWritable> {
абаронены статычны канчатковая радок MY_TARGET_TEXT = “Hadoop”;

@ Override
абаронены несапраўдным скарачэння(тэкст keyTxt, Iterable<IntWritable> каштоўнасці, кантэкст кантэкст) кідае IOException, InterruptedException {
калі (containsTargetWord(keyTxt)) {
INT wCount = 0;
для (IntWritable значэнне: каштоўнасці) {
wCount = value.get();
}
context.write(key, новы IntWritable(wCount));
}
}
прыватнае лагічнае значэнне containsTargetWord(тэкст keyTxt) {
вярнуць keyTxt.toString().ўраўноўваецца(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - Стварэнне кантэксту прыкладання - Наступны крок заключаецца ў стварэнні кантэксту прыкладання, выкарыстоўваючы XML. Мы можам наладзіць кантэкст прыкладання нашага прыкладання, выкарыстоўваючы наступныя крокі -
    • Стварыце файл уласцівасцяў, які змяшчае значэнне уласцівасцяў канфігурацыі. Акно Уласцівасці прыкладання Прыклад файла прыведзены ніжэй -

[Code]
fs.default.name = HDFS://лакальны:9000
mapred.job.tracker = лакальны:9001
input.path = / шлях / да / уваход / файл /
output.path = / шлях / да / выхад / файл
[/Code]

  • Налада гельдеровость месца, якое выкарыстоўваецца для здабывання значэнняў уласцівасцяў канфігурацыі з створанага файла уласцівасцяў. Гэта можа быць зроблена шляхам дадання наступнага ў нашым файле кантэксту XML прыкладання -

[Code]
<кантэкст:Рэгіён-запаўняльнік =”classpath:application.properties” />

[/Code]

  • Налада Apache Hadoop і яго працу - Мы можам наладзіць файл па змаўчанні сістэмы і яе працу трэкера на дадаўшы наступнае ў нашым кантэксце файла прыкладання

[Code]

<HDP:канфігурацыя>
fs.default.name = ${fs.default.name}
mapred.job.tracker = ${mapred.job.tracker}
</HDP:канфігурацыя>

[/Code]

Мы павінны дадаць наступнае ў нашым дадатку файл кантэксту XML для вызначэння трэкера заданні -

[Code]
<HDP:ідэнтыфікатар заданні =”wordCountJobId”
ўваходных шлях =”${input.path}”
выхад-шлях =”${output.path}”
банку-па-клас =”net.qs.spring.data.apachehadoop.Main”
картографа =”net.qs.spring.data.apachehadoop.MyWordMapper”
рэдуктар =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Наладзьце бягун працу, якая запускае створаную Hadoop працу. Бягун Праца можа быць настроена шляхам дадання наступнага ў нашым файле кантэксту XML прыкладання

[Code]
<HDP:праца-бягун ID =”wordCountJobRunner” Праца-вых =”wordCountJobId” выканання пры запуске- =”праўда”/>
[/Code]

  • Step 5 – Загрузка кантэксту прыкладання пры запуску - Цяпер мы можам выканаць створаную Hadoop працу, загружаючы кантэкст прыкладання пры запуску прыкладання. Мы можам зрабіць гэта шляхам стварэння асобніка аб'екта ClasspathXmlApplicationContext, які прымае імя нашага прыкладання кантэксту файла ў якасці ўваходнага параметру ў канструктар. Гэта можа быць зроблена, як пры -

Listing4: Прыклад, які паказвае загрузку кантэксту прыкладання

[Code]
імпарт org.springframework.context.ApplicationContext;
імпарт org.springframework.context.support.ClassPathXmlApplicationContext;

Адкрыты клас Main {
дзяржаўнай статычнай сілы асноўных(Радок[] arguments) {
ApplicationContext CTX = новы ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 - Выканаць заданне MapReduce - Мы можам пачаць нашу карту скараціць працу, выкарыстоўваючы наступныя крокі -
  • Загрузіце ўваходных файл у HDFS - Мы можам зрабіць гэта, выканаўшы наступную каманду ў камандным радку -

[Code]

Hadoop ДФС -Положите sample.txt /input/sample.txt

[/Code]

Ніжэй прыведзены прыклад файла ўводу, які быў выкарыстаны ў дадзеным прыкладзе. Мэтавае ключавое слова 'Hadoop ' вылучаецца ЗЯЛЁНЫ. слова "Hadoop ' існуе 4 раз ва ўзоры.

Input

уваход

Изображение1: Прыклад уваходнага файла

  • Праверце, калі файл быў паспяхова загружаны, выканаўшы наступную каманду. Ён будзе паказваць ўваходных файл.

[код]

Hadoop ДФС -ls / уваход

[/код]

  • Выканайце заданне MapReduce. Гэта можа быць зроблена шляхам выканання асноўнай метад нашага файла Java з IDE. Калі ўсе этапы працы, як чакаецца, то наступная будзе выхадны.

выхад: Hadoop 4
Summary: Давайце скончым тое, што мы абмяркоўвалі да гэтага часу ў наступных куль –

  • абедзве вясна і Hadoop карысныя рамкі з адкрытым кодам.
  • Аб'яднаўшы гэтыя мы можам атрымаць выгаду ад абедзвюх рамак.
  • Стварэнне карты скараціць працу з дапамогай спружыны працэс шэсць крок, як апісана вышэй.
Tagged on: ,
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share