What is Spring for Apache Hadoop?

Yfirlit: Spring er einn af the víða notaður ramma í framtak umsókn þróun. Spring hefur mismunandi hluti eins Vor Ormur, Vor JDBC etc til að styðja við mismunandi lögun. Vor fyrir Apache Hadoop er umgjörð til að styðja umsókn bygging með Hadoop hluti eins HDFS, MapReduce og Hive etc. Spring veitir API til að vinna með öllum þessum þáttum. Vor styður einnig aðlögun Hadoop með öðrum verkefnum Spring vistkerfi fyrir raunveruleikanum umsókn þróun. Í þessari grein munum við fjalla um notkun Spring fyrir Apache Hadoop ramma.

Inngangur:
Apache Hadoop er opinn uppspretta hugbúnaður ramma, sem er notað til að geyma og vinna gögn-setur stærri bindi. Vor er einnig opinn uppspretta ramma, sem er víða notað í Java / J2EE forrit. ánauðar innspýting Spring er (OF) eða inversion stjórn (IO) kerfi hefur orðið vinsæll valkostur við Enterprise Java Baunir (eða EJB) model. Vor hefur þann kost að vera sveigjanlegur nógur til að vera auðveldlega tengt við önnur þróun ramma. Using this kostur vorsins, við getum stinga hana með Apache Hadoop til að hjálpa okkur að fá hámarks hag af báðum þessum ramma.

Getting Started:
Í þessum kafla munum við tala um hvernig á að búa til Hadoop MapReduce starf using Spring. Þetta felur í sér eftirfarandi skref -

  • Step 1 – Fá nauðsynlega ósjálfstæði nota Maven - Eins og við vitum Maven er mjög háð pom.xml skrá, við tökum eftirfarandi færslur í pom.xml skrá okkar. Þessar ánauðar færslur eru fyrir Hadoop kjarna og Spring ramma.

Listing1: Dæmi stillingar færslur í pom.xml skrá

[númer]

< !– Vor Gögn Apache Hadoop — >
< ánauðar >
< groupId > org.springframework.data </ groupId >
< artifactId > vor-data-Hadoop </ artifactId >
< version > 1.0.0.FRÉTTATILKYNNING </ version >
< /ánauðar >
< !– Apache Hadoop Core -- >
< ánauðar >
< groupId > org.apache.hadoop </ groupId >
< artifactId > Hadoop-algerlega </ artifactId >
< version > 1.0.3 </version >
</ánauðar>

[/ númer]

  • Step 2 – Búa mapper hluti - eins og við vitum að Mapper hluti er notaður til að brjóta raunverulegt vandamál í smærri hluti. Þessar smærri þættir þá verða auðveldara að leysa. Við getum haft eigin sérsniðna mapper hluti okkar með því að lengja Kortið Apache draga mapper bekknum. Við þurfum að hunsa kort aðferð þessum flokki. The Mapper bekknum væntir eftirfarandi fjórum þáttum -

fyrir hjálpina: Eftirfarandi breytur eru fyrir lykill inntak og gildi

  • ÞÁ Þessi færibreyta lýsir helstu tegund sem er veitt sem inntak til mapper hluti.
  • VALUEIN Þessi færibreyta lýsir tegund af gildi sem er veitt sem inntak til the mapper hluti.

fyrir framleiðsla: Eftirfarandi breytur eru fyrir lykill framleiðsla og verðmæti

  • KEYOUTÞessi færibreyta lýsir tegund af út setja lykil breytu úr mapper hluti.
  • VALUEOUTÞessi færibreyta lýsir tegund af the framleiðsla gildi frá mapper hluti.

Hver af þessum þáttum verður innleiða skrifanleg interface. Í gefin dæmi, við höfum notað mapper okkar til að lesa the innihald af a skrá í einni línu í einu og undirbúa lykill-gildi pör af hverjum línu. framkvæmd okkar á kortinu aðferð framkvæma eftirfarandi verkefni -

  • First, hættu hvert einasta lína í orðum
  • Second, iterate gegnum hvert einasta orð og taka út hvorki alla Unicode sem eru hvorki bréf né stafir.
  • Þriðja, reisa lykill-gildi par með skrifréttindi aðferð af samhengi flokkur sem er samhæft við búist framleiðsla lykill-gildi par.

Listing2: Dæmi um sérsniðin Mapper bekknum

[Code]

opinber bekknum MyWordMapper nær mapper<LongWritable, Text, Text, IntWritable> {
persónulegur texti myword = new Texti();

@ Stöðuhnekking
varið ógilt kort(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String lína = value.toString();
StringTokenizer lineTokenz = new StringTokenizer(line);
while (lineTokenz.hasMoreTokens()) {
String cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, ný IntWritable(1));
}
}

/**
* Skipta út öllum Unicode sem eru hvorki tölur né bréf með tóman streng.
* @param upprunalega, Það er Upphaflegur strengur
* @return streng hlut sem inniheldur aðeins bókstafi og tölustafi
*/
Sér String removeNonLettersNonNumbers (string upprunalega) {
aftur original.replaceAll(“[^\\p{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 – búa til rörtengi Component - A rörtengi er hluti sem eyðir óæskilegum meðalgildum og áfram aðeins þessir helstu pör gildi sem eiga við. Til að hafa sérsniðna minnkuðu okkar, bekknum okkar ætti að lengja rörtengi flokki og yfir ríða draga aðferð. The rörtengi bekknum væntir eftirfarandi fjórar breytur.

fyrir hjálpina: Eftirfarandi breytur eru fyrir lykill inntak og gildi

  • ÞÁ Þessi færibreyta lýsir helstu tegund sem er veitt sem inntak til mapper hluti.
  • VALUEIN Þessi færibreyta lýsir tegund af gildi sem er veitt sem inntak til the mapper hluti.

fyrir framleiðsla: Eftirfarandi breytur eru fyrir lykill framleiðsla og verðmæti

  • KEYOUTÞessi færibreyta lýsir tegund af út setja lykil breytu úr mapper hluti
  • VALUEOUTÞessi færibreyta lýsir tegund af the framleiðsla gildi frá mapper hluti.

Þó að innleiða við verðum að ganga úr skugga um að datatype af 'keyin "og" keyout "breytur eru sömu. Einnig 'valuein "og breytur valueout' ætti að vera af sömu tegund. framkvæmd okkar á að draga aðferðinni framkvæma eftirfarandi skrefum -

  • First, athuga að inntak lykillinn inniheldur tilætluð orðið.
  • Second, ef ofangreind skref er satt, fá fjölda atvika af orðinu.
  • Þriðja, reisa nýja lykill-gildi par með því að kalla skrifréttindi aðferð á rörtengi bekknum.

Listing3: Dæmi um sérsniðin rörtengi bekknum

[Code]

innflutningur org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

opinber bekknum MyWordReducer nær rörtengi<Text, IntWritable, Text, IntWritable> {
varið truflanir endanleg String MY_TARGET_TEXT = “Hadoop”;

@ Stöðuhnekking
varið ógilt minnka(Texti keyTxt, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
ef (containsTargetWord(keyTxt)) {
INT wCount = 0;
fyrir (IntWritable gildi: values) {
wCount = value.get();
}
context.write(key, ný IntWritable(wCount));
}
}
persónulegur Boolean containsTargetWord(Texti keyTxt) {
aftur keyTxt.toString().jafngildir(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 – Búa umsókn samhengi - Næsta skref er að búa til umsókn samhengi með XML. Við getum stillt umsókn samhengi umsókn okkar með eftirfarandi skrefum -
    • Búa til eiginleika skrá sem inniheldur verðmæti stelling eignir. Sýnishorn umsókn eignir skrá er sýnd hér fyrir neðan -

[Code]
fs.default.name = HDFS://localhost:9000
mapred.job.tracker = localhost:9001
input.path = / slóð / á / input / skrá /
output.path = / slóð / á / framleiðsla / skrá
[/Code]

  • Stilla eign stað handhafa sem er notað til að ná gildi stelling eignir úr búið eiginleika skrá. Þetta er hægt að gera með því að bæta eftirfarandi í umsókn okkar samhengi XML skrá -

[Code]
<samhengi:Eign-tákn staðsetningu =”classpath:application.properties” />

[/Code]

  • Stilla Apache Hadoop og starf hennar - Við getum stillt sjálfgefið skrá kerfi og atvinnusköpun Tracker sína með því að bæta eftirfarandi í okkar umsókn samhengi skrá

[Code]

<HDP:stillingar>
fs.default.name = ${fs.default.name}
mapred.job.tracker = ${mapred.job.tracker}
</HDP:stillingar>

[/Code]

Við ættum að bæta eftirfarandi í umsókn samhengi XML skrá okkar til að skilgreina starf Tracker -

[Code]
<HDP:starf id =”wordCountJobId”
inntak-Slóð =”${input.path}”
output-Slóð =”${output.path}”
jar-by-class =”net.qs.spring.data.apachehadoop.Main”
Mapper =”net.qs.spring.data.apachehadoop.MyWordMapper”
rörtengi =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Stilla starf hlaupari sem rekur búið Hadoop starf. The Job hlaupari hægt að stilla með því að bæta eftirfarandi í umsókn okkar samhengi XML skrá

[Code]
<HDP:job-hlaupari id =”wordCountJobRunner” job-tilv =”wordCountJobId” hlaupa-á-ræsingu =”satt”/>
[/Code]

  • Step 5 – Hleðsla umsókn samhengi við ræsingu - Við getum nú keyrt búið Hadoop starf með því að hlaða forritið samhengi þegar forritið byrjar upp. Við getum gert þetta með því að skapa eintak af ClasspathXmlApplicationContext hlut sem samþykkir nafn okkar umsókn samhengi skrá sem viðfang inntak til framkvæmdaaðila. Þetta er hægt að gera eins og við -

Listing4: Sýnishorn sýna hleðsla umsókn samhengi

[Code]
import org.springframework.context.ApplicationContext;
innflutningur org.springframework.context.support.ClassPathXmlApplicationContext;

opinber bekknum Main {
opinber truflanir ógilt aðalæð(Band[] rök) {
ApplicationContext CTX = new ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 – Keyrðu Mapreduce starf - Við getum byrjað kort okkar að draga starf er í eftirfarandi skrefum -
  • Hlaða inntak skrá inn HDFS - Við getum gert þetta með því að framkvæma eftirfarandi skipun á stjórn hvetja -

[Code]

Hadoop DFS -Settu sample.txt /input/sample.txt

[/Code]

Eftirfarandi er sýnishorn inntak skrá sem hefur verið notað í þessu dæmi. Miða Lykillinn orð 'Hadoop " er lögð áhersla á GREEN. Orðið 'Hadoop " exists 4 sinnum í úrtakinu.

Input

inntak

Image1: Dæmi um inntak skrá

  • Athugaðu hvort skráin hafi verið hlaðið upp með því að keyra eftirfarandi skipun. Það mun sýna inntak skrá.

[númer]

Hadoop DFS -LS / input

[/númer]

  • Keyrðu Mapreduce starf. Þetta er hægt að gera með því að framkvæma helstu aðferð við Java skrá okkar frá IDE. Ef öll skrefin sem skyldi þá eftirfarandi verður framleiðsla.

Output: Hadoop 4
Summary: Leyfðu okkur að gera það sem við höfum rætt svo langt í eftirfarandi byssukúlur –

  • bæði Spring og Hadoop eru gagnlegar ramma frá the opinn uppspretta samfélag.
  • Með því að sameina þær að við getum fengið að njóta góðs af bæði ramma.
  • Að búa til kort draga starf með vor er sex skref aðferð sem lýst er hér að ofan,en.
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