Mùa xuân cho Apache Hadoop là gì?

Tổng quan: mùa xuân là một trong những khuôn khổ sử dụng rộng rãi trong việc phát triển các ứng dụng doanh nghiệp. mùa xuân có các thành phần khác nhau như Spring ORM, Mùa xuân JDBC vv để hỗ trợ các tính năng khác nhau. Mùa xuân cho Apache Hadoop là khuôn khổ để hỗ trợ xây dựng ứng dụng với các thành phần như Hadoop HDFS, MapReduce và Hive vv. mùa xuân cung cấp các API để làm việc với tất cả các thành phần. Spring cũng hỗ trợ tích hợp của Hadoop với các dự án Xuân hệ sinh thái khác cho phát triển ứng dụng thực tế đời sống. Trong bài viết này, chúng tôi sẽ thảo luận về việc sử dụng mùa xuân cho các khuôn khổ Apache Hadoop.

Giới thiệu:
Apache Hadoop là một khung phần mềm mã nguồn mở, được sử dụng để lưu trữ và xử lý dữ liệu bộ khối lượng lớn hơn. Mùa xuân cũng là một framework mã nguồn mở, được sử dụng rộng rãi trong các ứng dụng / J2EE Java. tiêm phụ thuộc của Spring (HÀNH) hoặc đảo ngược của kiểm soát (IO) cơ chế đã trở thành một lựa chọn phổ biến cho Đậu Enterprise Java (hoặc EJB) mô hình. Spring có lợi thế là đủ linh hoạt để dễ dàng cắm với bất kỳ khuôn khổ phát triển khác. Sử dụng lợi thế này của mùa xuân, chúng ta có thể cắm nó với Apache Hadoop để giúp chúng tôi có được những lợi ích tối đa của mỗi hai khung này.

Getting Started:
Trong phần này chúng ta sẽ nói về làm thế nào để tạo ra một công việc Hadoop MapReduce sử dụng Spring. Điều này bao gồm các bước sau đây -

  • Step 1 – Có được các phụ thuộc yêu cầu sử dụng Maven - Như chúng ta biết maven là phụ thuộc nhiều vào các tập tin pom.xml, chúng tôi làm cho các mục sau đây trong tập tin pom.xml của chúng tôi. Những mục phụ thuộc này cho Hadoop lõi và Spring framework.

Listing1: mục cấu hình mẫu trong tập tin pom.xml

[đang]

< !– Mùa xuân liệu Apache Hadoop — >
< phụ thuộc >
< groupId > org.springframework.data </ groupId >
< artifactId > mùa xuân-dữ liệu Hadoop </ artifactId >
< version > 1.0.0.GIẢI PHÓNG </ version >
< /phụ thuộc >
< !– Apache Hadoop Core -- >
< phụ thuộc >
< groupId > org.apache.hadoop </ groupId >
< artifactId > hadoop-core </ artifactId >
< version > 1.0.3 </version >
</phụ thuộc>

[/ đang]

  • Step 2 – Tạo các thành phần mapper - Như chúng ta biết một thành phần vẽ bản đồ được sử dụng để phá vỡ các vấn đề thực tế thành các thành phần nhỏ hơn. Những thành phần nhỏ hơn sau đó trở nên dễ dàng hơn để giải quyết. Chúng tôi có thể có thành phần mapper của riêng tùy chỉnh của chúng tôi bằng cách mở rộng bản đồ Apache giảm lớp Mapper. Chúng tôi cần phải ghi đè lên các phương pháp bản đồ của lớp này. Các lớp mapper hy vọng bốn thông số sau -

Đối với đầu vào: các thông số sau đây cho khóa đầu vào và giá trị

  • THEN Tham số này mô tả các loại chính được cung cấp như là một đầu vào cho các thành phần mapper.
  • VALUEIN Tham số này mô tả các kiểu của giá trị được cung cấp như là một đầu vào cho các thành phần mapper.

Đối với đầu ra: thông số sau đây là dành cho chính sản lượng và giá trị

  • KEYOUTTham số này mô tả các loại đặt ra tham số quan trọng từ các thành phần mapper.
  • VALUEOUTTham số này mô tả các kiểu của giá trị sản lượng từ các thành phần mapper.

Mỗi tham số này phải thực hiện có thể ghi interface. Trong ví dụ đưa ra, chúng tôi đã sử dụng ánh xạ của chúng tôi để đọc các nội dung của một tập tin một dòng tại một thời gian và chuẩn bị cặp khóa-giá trị của tất cả các dòng. thực hiện của chúng tôi về các phương pháp bản đồ thực hiện các nhiệm vụ sau -

  • First, chia mỗi dòng thành lời
  • Lần thứ hai, lặp lại qua mỗi từ duy nhất và đưa ra không phải tất cả các ký tự Unicode mà không phải là chữ hay ký tự.
  • Thứ ba, xây dựng một cặp khóa-giá trị bằng cách sử dụng phương pháp ghi các Bối cảnh lớp học mà là tương thích với sản lượng dự kiến ​​cặp khóa-giá trị.

Listing2: Mẫu lớp Mapper tùy chỉnh

[Code]

public class MyWordMapper kéo dài Mapper<LongWritable, Text, Text, IntWritable> {
tin Tiêu myword = Tiêu đề mới();

@ Override
protected void bản đồ(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
Chuỗi dòng = value.toString();
StringTokenizer lineTokenz = new StringTokenizer(line);
trong khi (lineTokenz.hasMoreTokens()) {
Chuỗi cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, mới IntWritable(1));
}
}

/**
* Thay thế tất cả các ký tự Unicode nhưng không phải là con số cũng không phải chữ cái với một chuỗi rỗng.
* @ param gốc, Đó là chuỗi gốc
* @return một đối tượng chuỗi có chứa chữ cái và số
*/
removeNonLettersNonNumbers Chuỗi tin (string ban đầu) {
trở original.replaceAll(“[^ \ P{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 – tạo giảm Component - A giảm tốc là một thành phần trong đó xóa các giá trị trung gian không mong muốn và chuyển tiếp chỉ những cặp giá trị quan trọng có liên quan. Để có giảm tốc tùy chỉnh của chúng tôi, lớp học của chúng tôi nên mở rộng giảm lớp và hơn đi xe các phương pháp giảm. Các lớp học giảm kỳ vọng bốn thông số sau đây.

Đối với đầu vào: các thông số sau đây cho khóa đầu vào và giá trị

  • THEN Tham số này mô tả các loại chính được cung cấp như là một đầu vào cho các thành phần mapper.
  • VALUEIN Tham số này mô tả các kiểu của giá trị được cung cấp như là một đầu vào cho các thành phần mapper.

Đối với đầu ra: thông số sau đây là dành cho chính sản lượng và giá trị

  • KEYOUTTham số này mô tả các loại đặt ra tham số quan trọng từ các thành phần mapper
  • VALUEOUTTham số này mô tả các kiểu của giá trị sản lượng từ các thành phần mapper.

Trong khi thực hiện, chúng ta phải đảm bảo rằng các kiểu dữ liệu của tham số và 'Keyin' 'keyout' là cùng. Ngoài ra các 'valuein' và các thông số valueout 'nên có cùng loại. thực hiện của chúng tôi về các phương pháp giảm thực hiện các bước sau đây -

  • First, kiểm tra xem phím đầu vào chứa từ mong muốn.
  • Lần thứ hai, nếu các bước trên là đúng sự thật, có được số lần xuất hiện của từ.
  • Thứ ba, xây dựng một cặp khóa-giá trị mới bằng cách gọi phương pháp ghi của lớp giảm tốc.

Listing3: Mẫu lớp giảm tốc tùy chỉnh

[Code]

nhập khẩu org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class MyWordReducer kéo dài giảm tốc<Text, IntWritable, Text, IntWritable> {
bảo vệ tĩnh thức Chuỗi MY_TARGET_TEXT = “Hadoop”;

@ Override
khoảng trống bảo vệ giảm(Tiêu keyTxt, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
nếu (containsTargetWord(keyTxt)) {
int wCount = 0;
cho (giá trị IntWritable: values) {
wCount = value.get();
}
context.write(key, mới IntWritable(wCount));
}
}
containsTargetWord boolean tin(Tiêu keyTxt) {
trở keyTxt.toString().bằng(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 – Tạo bối cảnh ứng dụng - Bước tiếp theo là tạo ra bối cảnh ứng dụng sử dụng XML. Chúng ta có thể cấu hình các bối cảnh ứng dụng của ứng dụng của chúng tôi sử dụng các bước sau đây -
    • Tạo một tập tin thuộc tính có chứa các giá trị của các thuộc tính cấu hình. Một mẫu thuộc tính tập tin ứng dụng được hiển thị dưới đây -

[Code]
fs.default.name = HDFS://localhost:9000
mapred.job.tracker = localhost:9001
input.path = / path / to / input / file /
output.path = / path / to / đầu ra / file
[/Code]

  • Cấu hình một người giữ vị trí tài sản được sử dụng để lấy các giá trị của thuộc tính cấu hình từ các thuộc tính tập tin được tạo ra. Điều này có thể được thực hiện bằng cách thêm những điều sau đây trong ứng dụng tập tin dung XML của chúng tôi -

[Code]
<bối cảnh:vị trí tài sản placeholder =”classpath:application.properties” />

[/Code]

  • Cấu hình Apache Hadoop và công việc của mình - Chúng ta có thể cấu hình các hệ thống tập tin mặc định và theo dõi công việc của mình bằng cách thêm những điều sau đây trong tập tin ngữ cảnh ứng dụng của chúng tôi

[Code]

<HDP:cấu hình>
fs.default.name = ${fs.default.name}
mapred.job.tracker = ${mapred.job.tracker}
</HDP:cấu hình>

[/Code]

Chúng tôi cần thêm những điều sau đây trong ứng dụng tập tin dung XML của chúng tôi để xác định việc theo dõi công việc -

[Code]
<HDP:id = công việc”wordCountJobId”
đầu vào-path =”${input.path}”
ra-path =”${output.path}”
jar-by-class =”net.qs.spring.data.apachehadoop.Main”
mapper =”net.qs.spring.data.apachehadoop.MyWordMapper”
giảm =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Cấu hình các Á hậu công việc mà chạy job hadoop tạo. Á hậu công việc có thể được cấu hình bằng cách thêm những điều sau đây trong ứng dụng tập tin dung XML của chúng tôi

[Code]
<HDP:id việc Á hậu =”wordCountJobRunner” việc làm ref =”wordCountJobId” chạy-at-khởi động =”đúng”/>
[/Code]

  • Step 5 – Đang tải bối cảnh ứng dụng lúc khởi động - Bây giờ chúng ta có thể thực hiện các công việc Hadoop tạo ra bằng cách tải các bối cảnh ứng dụng khi ứng dụng khởi động. Chúng tôi có thể làm điều này bằng cách tạo ra các thể hiện của đối tượng ClasspathXmlApplicationContext mà chấp nhận tên của tập tin ngữ cảnh ứng dụng của chúng tôi như là tham số đầu vào cho các nhà xây dựng. Điều này có thể được thực hiện như dưới -

Listing4: hiển thị tải Mẫu bối cảnh ứng dụng

[Code]
nhập khẩu org.springframework.context.ApplicationContext;
nhập khẩu org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {
public static void main(Chuỗi[] arguments) {
ApplicationContext ctx = new ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 – Chạy công việc MapReduce - Chúng ta có thể bắt đầu bản đồ của chúng tôi giảm việc sử dụng các bước sau đây -
  • Upload tập tin đầu vào vào HDFS - Chúng ta có thể làm điều này bằng cách thực hiện các lệnh sau trên cửa sổ lệnh -

[Code]

hadoop dfs -Đặt sample.txt /input/sample.txt

[/Code]

Sau đây là một tập tin đầu vào mẫu đó đã được sử dụng trong ví dụ này. Các mục tiêu từ khóa 'Hadoop ' được nhấn mạnh trong GREEN. Từ "Hadoop ' tồn tại 4 lần trong mẫu.

Input

Đầu vào

Image1: tập tin đầu vào mẫu

  • Kiểm tra nếu tập tin đã được tải lên thành công bằng cách chạy lệnh sau đây. Nó sẽ hiển thị các tập tin đầu vào.

[đang]

dfs hadoop -ls / đầu vào

[/đang]

  • Chạy công việc MapReduce. Điều này có thể được thực hiện bằng cách thực hiện các phương pháp chính của file java của chúng tôi từ IDE. Nếu tất cả các bước làm việc như mong đợi thì đây sẽ là sản lượng.

Output: Hadoop 4
Summary: Hãy để chúng tôi kết luận những gì chúng ta đã đề cập tới trong những viên đạn sau –

  • cả hai mùa xuânHadoop là các khuôn khổ hữu ích từ cộng đồng mã nguồn mở.
  • Bằng cách kết hợp những chúng ta có thể có được lợi ích của cả hai khuôn khổ.
  • Tạo một bản đồ giảm việc sử dụng mùa xuân là một quá trình sáu bước như đã giải thích ở trên.
Tagged on: ,
============================================= ============================================== Mua sách Techalpine tốt nhất trên Amazon,en,Thợ điện CT Hạt dẻ,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Thưởng thức blog này,,en,làm ơn mở rộng vốn từ,,en,techalpine.com/apache-mahout-and-machine-learning,,en? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share