Ինչ է Գարուն է Apache Hadoop?

Overview: գարուն is one of the widely used frameworks in enterprise applications development. գարուն ունի տարբեր բաղադրիչներ, ինչպիսիք Spring ORM, Գարուն JDBC այլն աջակցել տարբեր առանձնահատկություններ. Գարուն է Apache Hadoop է շրջանակը `աջակցել դիմումի շենքը հետ Hadoop բաղադրիչների, ինչպիսիք են HDFS, MapReduce եւ Փեթակ այլն. գարուն տրամադրում է APIs հետ աշխատելու բոլոր այդ բաղադրիչների. Գարուն է նաեւ աջակցում ինտեգրումը Hadoop այլ Գարուն էկոհամակարգի ծրագրերի իրական կյանքի կիրառման զարգացումը. Այս հոդվածում մենք կքննարկենք օգտագործումը գարուն համար Apache Hadoop շրջանակներում.

Ներածություն:
Apache Hadoop բաց կոդով ծրագրային ապահովում շրջանակը, որն օգտագործվում է պահել եւ գործընթացն տվյալների հավաքածուներ ավելի մեծ ծավալի. Գարուն է նաեւ բաց աղբյուր շրջանակը, որը լայնորեն օգտագործվում է Java / J2EE դիմումները. Գարնան կախվածությունը ներարկման (OF) կամ շրջում վերահսկողությունից (IO) մեխանիզմը դարձել է հայտնի այլընտրանք Ձեռնարկությունների Java Լոբի (կամ EJB) մոդել. Գարուն ունի առավելություն լինելու ճկուն բավարար է հեշտությամբ plugged ցանկացած այլ զարգացման շրջանակներում. Օգտագործելով այս առավելությունը գարնանը, մենք կարող ենք plug այն Apache Hadoop է օգնել մեզ, ստանալ առավելագույն օգուտ յուրաքանչյուրի այդ երկու շրջանակներից.

Սկսել:
Այս բաժնում մենք կխոսենք, թե ինչպես պետք է ստեղծել Hadoop MapReduce Հոբին օգտագործելով Գարուն. Սա ներառում է հետեւյալ քայլերը -

  • Step 1 - Ձեռք բերել պահանջվող կախվածությունը օգտագործելով Maven - Ինչպես մենք գիտենք, Maven մեծապես կախված է pom.xml ֆայլը, Մենք կատարել հետեւյալ գրառումները մեր pom.xml ֆայլ. Այս կախվածության գրանցումները համար են Hadoop հիմքում եւ Spring շրջանակներում.

Listing1: Նմուշ կոնֆիգուրացիա գրառումներ pom.xml ֆայլ

[համար]

< !– Գարուն Data Apache Hadoop — >
< կախվածություն >
< groupId > org.springframework.data </ groupId >
< artifactId > գարուն-data-Hadoop </ artifactId >
< version > 1.0.0.ՀԱՂՈՐԴԱԳՐՈՒԹՅՈՒՆ </ version >
< /կախվածություն >
< !– Apache Hadoop Core -- >
< կախվածություն >
< groupId > org.apache.hadoop </ groupId >
< artifactId > Hadoop հիմնական </ artifactId >
< version > 1.0.3 </version >
</կախվածություն>

[/ համար]

  • Step 2 - Ստեղծել mapper բաղադրիչ - Քանի որ մենք գիտենք, որ Mapper բաղադրիչը, որն օգտագործվում է կոտրել փաստացի խնդիրը փոքր բաղադրիչների. Այս փոքր բաղադրիչները, ապա դառնում են ավելի հեշտ է լուծել. Մենք կարող ենք ունենալ մեր սեփական անհատականացված mapper բաղադրիչը, ըստ երկարաձգելու Apache քարտեզը նվազեցնել Mapper դաս. Մենք պետք է անտեսեն քարտեզը մեթոդը այս դասի. The Mapper կարգի ակնկալում հետեւյալ չորս պարամետրերի -

մուտքագրման: Հետեւյալ պարամետրերը համար են մուտքագրման բանալին եւ արժեքի

  • ՀԵՏՈ - Այս պարամետրը նկարագրում է առանցքային տեսակը, որը տրամադրվում է որպես մուտքային է Mapper բաղադրիչի.
  • VALUEIN - Այս պարամետրը նկարագրում տեսակը արժեքի, որը տրամադրվում է որպես ներդրում Mapper բաղադրիչի.

արտադրության համար: Հետեւյալ պարամետրերը համար են թողարկում բանալին եւ արժեքի

  • KEYOUT - Այս պարամետրը նկարագրում տեսակը դուրս դնելու առանցքային պարամետր ից Mapper բաղադրիչի.
  • VALUEOUT - Այս պարամետրը նկարագրում տեսակը թողարկում արժեք Mapper բաղադրիչի.

Յուրաքանչյուր այդ պարամետրերի պետք է իրականացնել գրելի interface. Տվյալ օրինակով, մենք օգտագործել ենք մեր mapper կարդալ բովանդակությունը ֆայլի մեկ տողով մի ժամանակ եւ պատրաստել բանալին արժեքային զույգ յուրաքանչյուր տողում. Մեր իրականացումը Քարտեզի մեթոդի իրականացնում է հետեւյալ խնդիրները `

  • First, պառակտել յուրաքանչյուր տող մեջ բառերի
  • Երկրորդ, կրկնել միջոցով յուրաքանչյուր բառի եւ հանել ո'չ բոլոր Unicode կերպարներ, որոնք ոչ նամակներ, ոչ էլ նիշ.
  • Երրորդ, կառուցել առանցքային արժեքը զույգ օգտագործելով գրելու մեթոդը կոնտեքստ դաս, որը համատեղելի է ակնկալվող թողարկում առանցքային արժեքի զույգի.

Listing2: Sample հարմարեցված Mapper դասը

[Code]

հասարակական կարգի MyWordMapper տարածվում Mapper<LongWritable, տեքստ, տեքստ, IntWritable> {
մասնավոր Text myword = new Տեքստը();

@ Վերագրել
պաշտպանված առոչինչ քարտեզ(LongWritable բանալին, Տեքստը արժեքը, Համատեքստ համատեքստ) նետում IOException, InterruptedException {
String Line = value.toString();
StringTokenizer lineTokenz = new StringTokenizer(line);
ժամանակ (lineTokenz.hasMoreTokens()) {
String cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, նոր IntWritable(1));
}
}

/**
* Փոխարինել բոլոր Unicode կերպարներ, որոնք ոչ թվերը, ոչ էլ նամակներ դատարկ լարային.
* @param բնօրինակը, Դա է, բնօրինակը լարային
* @return լարային օբյեկտ, որը պարունակում է միայն տառեր եւ թվեր
*/
մասնավոր Լարային removeNonLettersNonNumbers (String բնօրինակը) {
վերադառնալ original.replaceAll(“[^ P{L}\\P{N}]”, “”);
}
}

[/Code]

Step 3 - Ստեղծել Reducer Բաղադրիչ - A reducer մի բաղադրիչն է, որը deletes անցանկալի միջանկյալ արժեքները եւ Հարձակվողներ միայն այն առանցքային արժեքը զույգերով, որոնք առնչվում. Որպեսզի ունենք մեր անհատական ​​reducer, Մեր դասարանը պետք է երկարաձգել Reducer դասի եւ ավելի զբոսանք է նվազեցնել մեթոդը. The reducer կարգի ակնկալում է հետեւյալ չորս պարամետրերի.

մուտքագրման: Հետեւյալ պարամետրերը համար են մուտքագրման բանալին եւ արժեքի

  • ՀԵՏՈ - Այս պարամետրը նկարագրում է առանցքային տեսակը, որը տրամադրվում է որպես մուտքային է Mapper բաղադրիչի.
  • VALUEIN - Այս պարամետրը նկարագրում տեսակը արժեքի, որը տրամադրվում է որպես ներդրում Mapper բաղադրիչի.

արտադրության համար: Հետեւյալ պարամետրերը համար են թողարկում բանալին եւ արժեքի

  • KEYOUT - Այս պարամետրը նկարագրում տեսակը դուրս դնելու առանցքային պարամետր ից Mapper բաղադրիչի
  • VALUEOUT - Այս պարամետրը նկարագրում տեսակը թողարկում արժեք Mapper բաղադրիչի.

Թեեւ իրականացնելիս մենք պետք է համոզվեք, որ datatype է «keyin» եւ «keyout» պարամետրերի են նույն. Նաեւ «valuein» եւ valueout »պարամետրերը պետք է լինի նույն տեսակի. Մեր իրականացումը նվազեցնելու մեթոդի իրականացնում է հետեւյալ քայլերը -

  • First, ստուգել, ​​որ ներմուծումը բանալին պարունակում ցանկալի բառը.
  • Երկրորդ, եթե նշված քայլը ճիշտ է,, get համարը երեւույթների բառի.
  • Երրորդ, կառուցել նոր առանցքային արժեքն զույգ զանգահարելով գրել մեթոդը Reducer դասի.

Listing3: Sample հարմարեցված Reducer դասը

[Code]

ներմուծման org.apache.hadoop.io.IntWritable;
ներմուծման org.apache.hadoop.io.Text;
ներմուծման org.apache.hadoop.mapreduce.Reducer;

հասարակական կարգի MyWordReducer տարածվում Անցում<տեքստ, IntWritable, տեքստ, IntWritable> {
պաշտպանված ստատիկ վերջնական String MY_TARGET_TEXT = “Hadoop”;

@ Վերագրել
պաշտպանված առոչինչ է նվազեցնել(Տեքստը keyTxt, Iterable<IntWritable> values, Համատեքստ համատեքստ) նետում IOException, InterruptedException {
եթե (containsTargetWord(keyTxt)) {
int wCount = 0;
համար (IntWritable արժեքը: values) {
wCount = value.get();
}
context.write(key, նոր IntWritable(wCount));
}
}
մասնավոր բուլյան containsTargetWord(Տեքստը keyTxt) {
վերադառնալ keyTxt.toString().հավասար(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - Ստեղծել դիմում համատեքստը - Հաջորդ քայլը պետք է ստեղծել դիմումի համատեքստը օգտագործելով XML. Մենք կարող ենք կարգավորել դիմում համատեքստը մեր դիմումի օգտագործելով հետեւյալ քայլերը -
    • Ստեղծել հատկությունները ֆայլը, որը պարունակում է արժեքը կազմաձեւման հատկությունների. Դիմումի օրինակելի Properties ֆայլը, որը ցույց է ստորեւ.

[Code]
fs.default.name = HDFS://localhost:9000
mapred.job.tracker = localhost: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:Աշխատանքի ID =”wordCountJobId”
մուտքագրում ճանապարհը =”${input.path}”
արտադրանքը ուղին =”${output.path}”
ՋԱՌ-ի class =”net.qs.spring.data.apachehadoop.Main”
Mapper =”net.qs.spring.data.apachehadoop.MyWordMapper”
reducer =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Կարգավորել աշխատատեղերի runner որն ստեղծված Hadoop աշխատանքը. Աշխատանքի վազող կարող է կազմաձեւվել ավելացնելով հետեւյալ դիմում համատեքստը XML ֆայլ

[Code]
<HDP:Job-վազող id =”wordCountJobRunner” աշխատանքի Ref =”wordCountJobId” վազում-ին, ժամը, գործարկման =”ճիշտ”/>
[/Code]

  • Step 5 – Բեռնվում է դիմում համատեքստը ժամը գործարկման - Մենք այժմ կարող է կատարել ստեղծված Hadoop աշխատանք բեռնելիս դիմումի համատեքստը, երբ դիմումը սկսվում է. Մենք կարող ենք դա անել ստեղծել ատյանի ClasspathXmlApplicationContext օբյեկտի, որն ընդունում է անունը դիմում համատեքստում ֆայլը որպես մուտքագրման պարամետր է կոնստրուկտոր. Դա կարելի է անել, քանի որ մինչեւ

Listing4: Sample ցուցադրությունը բեռնելը դիմումի համատեքստում

[Code]
ներմուծման org.springframework.context.ApplicationContext;
ներմուծման org.springframework.context.support.ClassPathXmlApplicationContext;

հասարակական կարգի Գլխավոր {
հասարակական ստատիկ անվավեր հիմնական(Լար[] փաստարկներ) {
ApplicationContext CTX = new ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 - Վարում է Mapreduce աշխատանքը - Մենք կարող ենք սկսել մեր քարտեզը նվազեցնել աշխատանքի օգտագործելով հետեւյալ քայլերը -
  • Վերբեռնեք մուտքագրման ֆայլի մեջ HDFS - Մենք կարող ենք դա անել, կատարելով հետեւյալ հրամանը վրա հրամանատարության արագ -

[Code]

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

[/Code]

Ստորեւ ներկայացվում է մի նմուշ մուտքային ֆայլ, որը արդեն օգտագործվել է այս օրինակով. Թիրախը առանցքային բառըHadoop ' կարեւորվում է GREEN. Բառը 'Hadoop ' գոյություն ունի 4 անգամ նմուշի.

Input

Մուտքային

Image1: Sample մուտքագրում ֆայլի

  • Ստուգեք, եթե ֆայլը արդեն վերբեռնվել հաջողությամբ է վազում է հետեւյալ հրամանը. Այն ցույց կտա մուտքագրման ֆայլը.

[համար]

Hadoop DFS -ls / մուտքագրում

[/համար]

  • Գործարկել Mapreduce աշխատանքը. Դա կարելի է անել, կատարելով հիմնական մեթոդը մեր java ֆայլ ից IDE. Եթե ​​բոլոր քայլերը աշխատել, ինչպես եւ սպասվում, ապա Հետեւյալ կլինի արտադրանքը.

արտադրանք: Hadoop 4
Summary: Եկեք եզրակացնել, թե ինչ ենք մենք քննարկել այնքան հեռու է հետեւյալ փամփուշտներով –

  • երկուսն էլ գարուն իսկ Hadoop են օգտակար շրջանակները են բաց կոդով համայնքի.
  • Ըստ համատեղելով դրանք, մենք կարող ենք ստանալ նպաստ երկու շրջանակներում.
  • Ստեղծելով քարտեզ նվազեցնել աշխատանքի օգտագործելով գարունը մի վեց քայլ գործընթաց ինչպես բացատրվում է վերեւում.
Tagged on: ,
============================================= ============================================== Գնեք լավագույն տեխնոլոգիական գրքերը Amazon- ում,en,Էլեկտրականություն CT շագանակագույն էլեկտրաէներգիա,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share