Apache Hadoop üçün Spring nədir?

Baxış: yaz is one of the widely used frameworks in enterprise applications development. yaz Spring ORM kimi müxtəlif komponentləri var, Spring JDBC və s müxtəlif xüsusiyyətləri dəstək. Apache Hadoop üçün Spring HDFS kimi Hadoop komponentləri ilə tətbiq bina dəstək çərçivə, MapReduce və Hive s. yaz Bütün bu komponentləri ilə işləmək üçün API təmin edir. Spring də real həyat proqram inkişaf üçün digər Spring ekosistemi layihələri ilə Hadoop inteqrasiyasını dəstəkləyir. Bu yazıda istifadə müzakirə edəcək yaz Apache Hadoop çərçivəsində üçün.

Giriş:
Apache Hadoop açıq mənbə proqram çərçivəsində edir, böyük həcmi data-dəstləri saxlamaq və emal üçün istifadə olunur. Spring da açıq mənbə çərçivəsində edir, geniş Java / J2EE applications istifadə olunur. Bahar asılılıq injection (OF) və ya nəzarət inversiya (IO) mexanizm Enterprise Java Fasulye bir məşhur alternativ olmuşdur (və ya EJB) model. Spring asanlıqla hər hansı digər inkişaf çərçivəsində takıldığından üçün kifayət qədər çevik olan üstünlüyü var. Baharın bu üstünlüyü istifadə, biz bu iki çərçivəsində hər maksimum fayda almaq üçün Apache Hadoop ilə plug bilər.

Başlarken:
Bu bölmədə biz Bahar istifadə Hadoop MapReduce İş yaratmaq üçün necə haqqında danışacağıq. Bu, aşağıdakı mərhələlərdən ibarətdir -

  • Step 1 - biz Maven pom.xml fayl çox asılıdır Bildiyiniz kimi - Maven istifadə tələb bağımlılıkları almaq, biz pom.xml fayl aşağıdakı entries etmək. Bu asılılıq entries Hadoop əsas və Spring çərçivəsində üçün.

Listing1: pom.xml fayl Sample konfiqurasiya entries

[kod]

< !– Spring Data Apache Hadoop — >
< asılılıq >
< groupid > org.springframework.data </ groupid >
< artifactId > yaz-data-Hadoop </ artifactId >
< version > 1.0.0.AZAD </ version >
< /asılılıq >
< !– Apache Hadoop Core -- >
< asılılıq >
< groupid > org.apache.hadoop </ groupid >
< artifactId > Hadoop-core </ artifactId >
< version > 1.0.3 </version >
</asılılıq>

[/ kod]

  • Step 2 - Mapper komponenti yarat - Bildiyimiz kimi bir mapper komponent kiçik komponentləri faktiki problem qırmaq üçün istifadə olunur. həll etmək üçün bu kiçik komponentlər sonra asan ola. Biz Apache xəritəsi Mapper sinif azaltmaq uzadaraq öz özelleştirilmiş mapper komponenti ola bilər. Biz bu sinif xəritə metodu yalnış lazımdır. Mapper sinif aşağıdakı dörd parametrləri gözləyir -

giriş üçün: Aşağıdakı parametrləri daxil düyməsi və dəyər üçün

  • sonra - Bu parametr Mapper komponenti bir giriş kimi təqdim olunur əsas növü təsvir.
  • VALUEIN - Bu parametr Mapper komponenti bir giriş kimi təqdim olunur dəyər növü təsvir.

çıxış üçün: Aşağıdakı parametrləri çıxış düyməsi və dəyər üçün

  • KEYOUT - Bu parametr Mapper komponenti əsas parametr qoymaq həyata növü təsvir.
  • VALUEOUT - Bu parametr Mapper komponent çıxış dəyər növü təsvir.

bu parametrləri hər həyata keçirməlidir yazılabilir interface. verilən misalda, hər xəttinin əsas dəyər cüt bir zamanda fayl bir xətt məzmunu oxumaq və hazırlamaq üçün Mapper istifadə. Xəritə metodu Bizim həyata keçirilməsi aşağıdakı vəzifələri həyata keçirir -

  • First, sözləri hər bir xətt split
  • Ikinci, hər bir söz vasitəsilə təkrarlamaq və nə məktublar, nə də simvol bütün Unicode simvol nə almaq.
  • Üçüncü, yazmaq metodu istifadə edərək əsas dəyər cüt tikintisi Kontekst gözlənilən çıxış əsas dəyər cüt uyğun class.

Listing2: Nümunə xüsusi Mapper sinif

[Code]

public class MyWordMapper Mapper uzanır<LongWritable, mətn, mətn, IntWritable> {
Şəxsi Text myword = new Text();

@ Rusiyada yüklenme
mühafizə etibarsız xəritəsi(LongWritable əsas, Text dəyəri, Context kontekstində) IOException salır, InterruptedException {
String line value.toString =();
StringTokenizer lineTokenz = Yeni StringTokenizer(line);
isə (lineTokenz.hasMoreTokens()) {
String cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, yeni IntWritable(1));
}
}

/**
* boş simli ilə nə nömrələri də məktublar olan bütün Unicode simvol əvəz.
* @param orijinal, Bu orijinal simli
* yalnız məktubları və nömrələr olan bir string obyekt @return
*/
Şəxsi String removeNonLettersNonNumbers (String orijinal) {
original.replaceAll qayıtmaq(“[^ P{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 - yaratmaq reduktor Komponent - A reduktor forvard istenmeyen aralıq dəyərlər və müvafiq yalnız əsas dəyər cüt silir bir hissəsidir. Bizim xüsusi Azaldan malik olmaq, Bizim sinif uzatmaq lazımdır reduktor sinif və üzərində metodu azaltmaq ride. reduktor sinif aşağıdakı dörd parametrləri gözləyir.

giriş üçün: Aşağıdakı parametrləri daxil düyməsi və dəyər üçün

  • sonra - Bu parametr Mapper komponenti bir giriş kimi təqdim olunur əsas növü təsvir.
  • VALUEIN - Bu parametr Mapper komponenti bir giriş kimi təqdim olunur dəyər növü təsvir.

çıxış üçün: Aşağıdakı parametrləri çıxış düyməsi və dəyər üçün

  • KEYOUT - Bu parametr Mapper komponenti əsas parametr qoymaq həyata növü təsvir
  • VALUEOUT - Bu parametr Mapper komponent çıxış dəyər növü təsvir.

biz keyin "və" keyout "parametrləri datatype eyni əmin etmək lazımdır həyata baxmayaraq. Həmçinin "valuein və valueout" parametrləri eyni tipli olmalıdır. azaltmaq metodu Bizim həyata keçirilməsi aşağıdakı addımları yerinə yetirir -

  • First, input açar istədiyiniz söz ehtiva yoxlayın.
  • Ikinci, yuxarıda addım doğru əgər, sözü hadisələr sayı almaq.
  • Üçüncü, reduktor sinif yazmaq metodu zəng yeni bir əsas dəyər cüt tikintisi.

Listing3: Nümunə xüsusi Azaldan sinif

[Code]

idxal org.apache.hadoop.io.IntWritable;
idxal org.apache.hadoop.io.Text;
idxal org.apache.hadoop.mapreduce.Reducer;

public class MyWordReducer Azaldan uzanır<mətn, IntWritable, mətn, IntWritable> {
statik final String MY_TARGET_TEXT mühafizə = “Hadoop”;

@ Rusiyada yüklenme
mühafizə etibarsız azaltmaq(Text keyTxt, Iterable<IntWritable> dəyərlər, Context kontekstində) IOException salır, InterruptedException {
əgər (containsTargetWord(keyTxt)) {
int wCount = 0;
uğrunda (IntWritable dəyəri: dəyərlər) {
wCount = value.get();
}
context.write(açar, yeni IntWritable(wCount));
}
}
Şəxsi boolean containsTargetWord(Text keyTxt) {
keyTxt.toString qayıtmaq().bərabərdir(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - proqram kontekstində yarat - Növbəti addım XML istifadə edərək, ərizə kontekstində yaratmaq. Biz aşağıdakı adımları istifadə edərək tətbiqi proqram kontekstində konfiqurasiya edə bilərsiniz -
    • konfiqurasiya xassələrinin dəyəri olan bir xassələri fayl yaradın. A nümunə proqram xassələri fayl aşağıda göstərilir -

[Code]
fs.default.name = HDFS://localhost:9000
mapred.job.tracker = localhost:9001
input.path = / path / to / Giriş / file /
output.path = / path / to / çıxış / file
[/Code]

  • yaradılmış xassələri fayl konfiqurasiya xassələri dəyərlər almaq üçün istifadə olunur ki, bir əmlak yerin sahibi konfiqurasiya. Bu proqram kontekstində XML faylı aşağıdakı əlavə edilə bilər -

[Code]
<Kontekst:mülkiyyət tutucu yeri =”classpath:application.properties” />

[/Code]

  • Apache Hadoop və onun iş Yapılandır - Biz default fayl sistemi və onun iş tracker konfiqurasiya edə bilərsiniz bizim proqram kontekstində fayl aşağıdakı əlavə

[Code]

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

[/Code]

Biz iş tracker müəyyən etmək üçün bizim proqram kontekstində XML faylı aşağıdakı əlavə etməlidir -

[Code]
<HDP:iş id =”wordCountJobId”
giriş-yol =”${input.path}”
çıxış yol =”${output.path}”
jar-by-class =”net.qs.spring.data.apachehadoop.Main”
Mapper =”net.qs.spring.data.apachehadoop.MyWordMapper”
reduktor =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • yaradılmış Hadoop iş çalışır iş runner konfiqurasiya. İş runner bizim proqram kontekstində XML faylı aşağıdakı əlavə konfiqurasiya edilə bilər

[Code]
<HDP:iş runner id =”wordCountJobRunner” iş ref =”wordCountJobId” run-at-başlanğıc =”doğru”/>
[/Code]

  • Step 5 – başlanğıc proqram kontekstində Loading - Ərizə başlayır zaman Biz indi tətbiq kontekstində loading tərəfindən yaradılmış Hadoop iş icra edə bilər. Biz konstruktor giriş parametri kimi tətbiq kontekstində fayl adını qəbul ClasspathXmlApplicationContext obyektin instansiya yaratmaqla bunu edə bilərsiniz. Bu altında edilə bilər -

Listing4: proqram kontekstində nümunəsi göstərən loading

[Code]
idxal org.springframework.context.ApplicationContext;
idxal org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
ictimai statik void main(Sim[] arqumentlər) {
ApplicationContext CTX = Yeni ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 - Mapreduce iş Run - Biz Xəritə aşağıdakı adımları istifadə edərək, iş azaltmaq başlaya bilərsiniz -
  • HDFS daxil input fayl yüklə - Biz skript istemi aşağıdakı funksiyanı yerinə bu edə bilərsiniz -

[Code]

Hadoop DFS qoyun sample.txt /input/sample.txt

[/Code]

bu misal istifadə edilmişdir ki, bir nümunə daxil fayl Aşağıdakı. hədəf əsas söz "Hadoop " qeyd olunur GREEN. Söz 'Hadoop " mövcud 4 nümunə dəfə.

Input

Input

Image1: Nümunə Giriş faylı

  • Fayl aşağıdakı funksiyanı çalışan uğurla qəbul edilmişdir yoxlayın. Bu giriş faylı göstərəcək.

[kod]

Hadoop DFS -LS / input

[/kod]

  • Mapreduce iş Run. Bu IDE bizim java fayl əsas metodu icra edilə bilər. bütün addımlar gözlənildiyi kimi işləmək, onda aşağıdakı çıxış edəcək.

buraxılış: Hadoop 4
Summary: Bizə aşağıdakı güllə bu günə qədər müzakirə etdik nə bağlamaq edək –

  • həm yazHadoop açıq mənbə icma faydalı çərçivələr var.
  • Bu birleştiren, hər iki çərçivəsində fayda əldə edə bilərsiniz.
  • Yuxarıda izah altı addım prosesi bir xəritə istifadə edərək, yaz iş azaldır yaradılması.
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