What is Spring for Apache Hadoop?

Преглед: пружина is one of the widely used frameworks in enterprise applications development. пружина има различни компоненти като Spring ORM, Spring JDBC и т.н., за да поддържа различни функции. Пролет за Apache Hadoop е рамката да подкрепя изграждането на заявление с Hadoop компоненти като HDFS, MapReduce и кошер и т.н.. пружина предоставя APIs да работят с всички тези компоненти. Пролетта също подкрепя интеграцията на Hadoop с други Spring екосистемни проекти за разработка на приложения на реалния живот. В тази статия ние ще обсъдим използването на пружина за Apache Hadoop рамки.

Въвеждане:
Apache Hadoop е софтуер рамка с отворен код, която се използва за съхранение и обработка на данните,-комплекти от по-голям обем. Пролет е и рамка с отворен код, който се използва широко в Java приложения / J2EE. инжектиране на зависимостта на пролет (НА) или инверсия на контрол (IO) механизъм се превърна в популярна алтернатива на боб Enterprise Java (или EJB) модел. Spring има предимството да бъде достатъчно гъвкава, за да бъде лесно запушени с всяка друга рамка за развитие. Използването на този предимство на пролетта, можем да го включите с Apache Hadoop за да ни помогне да получите максимална полза от всяка от тези две рамки.

Приготвяме се да започнем:
В този раздел ние ще говорим за това как да се създаде Hadoop MapReduce Job използване Spring. Това включва следните етапи -

  • Step 1 - Получи необходимото зависимости, използващи Maven - Както знаем Maven е силно зависима от файла pom.xml, ние правим следните записи в нашия pom.xml файл. Тези записи на зависимост са за ядрото Hadoop и рамка Spring.

Listing1: Примерни записи за конфигуриране в pom.xml файл

[код]

< !– Spring Data Apache Hadoop — >
< зависимостта >
< groupId > org.springframework.data </ groupId >
< artifactId > пролет-данни-Hadoop </ artifactId >
< version > 1.0.0.ОСВОБОЖДАВАНЕ </ version >
< /зависимостта >
< !– Apache Hadoop ядро ​​-- >
< зависимостта >
< groupId > org.apache.hadoop </ groupId >
< artifactId > Hadoop-ядро </ artifactId >
< version > 1.0.3 </version >
</зависимостта>

[/ код]

  • Step 2 - Създаване на компонента Mapper - Както знаем на Mapper компонент се използва за прекъсване на актуален проблем на по-малки компоненти. Тези по-малки компоненти след това стават по-лесни за решаване. Ние можем да имаме свой собствен потребителски Mapper компонент чрез разширяване на картата Apache намали Mapper клас. Ние трябва да замени метода на картата на този клас. Класът на Mapper очаква следващите четири параметри -

За вход: Следните параметри са за въвеждане на ключ и стойност

  • ТОГАВА - Този параметър описва ключ тип, който е въведен като входни данни за компонента Mapper.
  • VALUEIN - Този параметър описва типа на стойността, която се предоставя като принос към компонент Mapper.

За изход: Следните параметри са за изход ключ и стойност

  • KEYOUT - Този параметър описва вида на се поставени ключов параметър от компонент Mapper.
  • VALUEOUT - Този параметър описва вида на изходната стойност от компонент Mapper.

Всеки един от тези параметри трябва да се приложат писане interface. В дадения пример, ние сме използвали нашия Mapper да прочете съдържанието на даден файл един ред наведнъж и се подготвят двойки ключ-стойност на всеки ред. Нашата прилагане на метода на картата изпълнява следните задачи -

  • First, разделят всеки един ред в думи
  • Second, обхождане чрез всяка дума и да вземат нито всички Unicode символи, които не са нито писма, нито герои.
  • Трета, изграждане на ключ-стойност двойка се използва метода на запис на контекст клас, който е съвместим с очакван изход двойка ключ-стойност.

Listing2: Проба персонализирани Mapper клас

[Code]

обществени клас MyWordMapper простира Mapper<LongWritable, Текст, Текст, IntWritable> {
частния Текст myword = нов Текст();

@ Override
защитено невалидни карта(ключ LongWritable, Текст стойност, контекст контекст) хвърля IOException, InterruptedException {
String линия = value.toString();
StringTokenizer lineTokenz = нов StringTokenizer(line);
докато (lineTokenz.hasMoreTokens()) {
String cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, новият IntWritable(1));
}
}

/**
* Замяна на всички Unicode символи, които не са нито номера, нито писма с празен низ.
* @param оригинална, Това е оригиналната низ
* @return низ обект, който съдържа само букви и цифри
*/
частни String removeNonLettersNonNumbers (String оригинална) {
върнете original.replaceAll(“[^ \ Р{L}\\р{N}]”, “”);
}
}

[/Code]

Step 3 - Създаване на редуктор Компонент - A редуктор е компонент, който изтрива нежеланите междинни стойности и форуърди само тези двойки ключови стойности, които са от значение. За да имаме свой персонализиран редуктор, нашия клас ще удължават редуктор клас и над вози Намаляване метод. Класът на редуктор очаква следващите четири параметри.

За вход: Следните параметри са за въвеждане на ключ и стойност

  • ТОГАВА - Този параметър описва ключ тип, който е въведен като входни данни за компонента Mapper.
  • VALUEIN - Този параметър описва типа на стойността, която се предоставя като принос към компонент Mapper.

За изход: Следните параметри са за изход ключ и стойност

  • KEYOUT - Този параметър описва вида на се поставени ключов параметър от компонент Mapper
  • VALUEOUT - Този параметър описва вида на изходната стойност от компонент Mapper.

При изпълнението трябва да сме сигурни, че Типът данни на "keyin така и на параметрите" keyout "са едно и също. Също така на "valuein" и параметрите valueout "трябва да бъдат от един и същ тип. Нашата изпълнение на намаляване метод изпълнява следните стъпки -

  • First, провери, че ключът за вход съдържа желаната дума.
  • Second, ако горната стъпка е вярно, получите броя срещания на думата.
  • Трета, изграждане на нова двойка ключ-стойност, като се обадите на метода на запис от класа на редуктор.

Listing3: Проба персонализирани редуктор клас

[Code]

внос org.apache.hadoop.io.IntWritable;
внос org.apache.hadoop.io.Text;
внос org.apache.hadoop.mapreduce.Reducer;

обществени клас MyWordReducer простира редуктор<Текст, IntWritable, Текст, IntWritable> {
защитени статични окончателно String 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. Ние можем да конфигурирате контекста на прилагане на нашето приложение с помощта на следните стъпки -
    • Създаване на файл с имоти, която съдържа стойността на имотите за конфигурация. проба за кандидатстване свойства файл A е показано по-долу -

[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}”
буркан-с-клас =”net.qs.spring.data.apachehadoop.Main”
Mapper =”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 {
публично статично невалидни основни(Низ[] доводи) {
ApplicationContext CTX = нов ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 - Пуснете заданието MapReduce - Можем да започнем нашата карта намаляване на работни места с помощта на следните стъпки -
  • Качване на входен файл в HDFS - Ние можем да направим това, като изпълнява следната команда на командния ред -

[Code]

Hadoop DFS положена sample.txt /input/sample.txt

[/Code]

Следва въвеждане проба файл, който е бил използван в този пример. Ключовата дума мишена "Hadoop " е подчертано в GREEN. Думата 'Hadoop " съществува 4 пъти в пробата.

Input

Вход

Image1: Примерен входен файл

  • Проверете дали файлът е качен успешно, като пуснете следната команда. Това ще покаже на входния файл.

[код]

Hadoop DFS -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