Apa Spring untuk Apache Hadoop?

Ikhtisar: Musim semi adalah salah satu kerangka kerja banyak digunakan dalam pengembangan aplikasi enterprise. Musim semi memiliki komponen yang berbeda seperti Spring ORM, Semi JDBC dll untuk mendukung fitur yang berbeda. Spring untuk Apache Hadoop adalah kerangka untuk mendukung pembangunan aplikasi dengan komponen Hadoop seperti HDFS, MapReduce dan Hive dll. Musim semi menyediakan API untuk bekerja dengan semua komponen ini. Spring juga mendukung integrasi Hadoop dengan proyek-proyek ekosistem semi lainnya untuk pengembangan aplikasi kehidupan nyata. Pada artikel ini kita akan membahas penggunaan Musim semi untuk kerangka Apache Hadoop.

Pengantar:
Apache Hadoop adalah kerangka kerja perangkat lunak open source, yang digunakan untuk menyimpan dan mengolah data-set volume yang lebih besar. Musim semi juga merupakan kerangka kerja open source, yang secara luas digunakan dalam Java / J2EE. injeksi ketergantungan musim semi (DARI) atau inversi kontrol (IO) Mekanisme telah menjadi alternatif yang populer untuk Enterprise Java Beans (atau EJB) model. Semi memiliki keuntungan menjadi cukup fleksibel untuk dapat dengan mudah dipasang dengan kerangka pembangunan lainnya. Menggunakan keuntungan ini musim semi, kita bisa pasang dengan Apache Hadoop untuk membantu kami mendapatkan manfaat maksimal dari masing-masing dua kerangka kerja ini.

Getting Started:
Pada bagian ini kita akan berbicara tentang bagaimana untuk membuat Job Hadoop MapReduce menggunakan Spring. Hal ini melibatkan langkah-langkah berikut -

  • Step 1 – Mendapatkan dependensi yang diperlukan menggunakan Maven - Seperti kita ketahui maven sangat tergantung pada file pom.xml, kita membuat entri berikut dalam file pom.xml kami. entri ketergantungan ini adalah untuk Hadoop inti dan kerangka kerja Spring.

Listing1: entri contoh konfigurasi dalam file pom.xml

[kode]

< !– Semi data Apache Hadoop — >
< ketergantungan >
< groupId > org.springframework.data </ groupId >
< artifactId > semi-data-Hadoop </ artifactId >
< version > 1.0.0.MELEPASKAN </ version >
< /ketergantungan >
< !– Apache Hadoop Core -- >
< ketergantungan >
< groupId > org.apache.hadoop </ groupId >
< artifactId > Hadoop-core </ artifactId >
< version > 1.0.3 </version >
</ketergantungan>

[/ kode]

  • Step 2 – Buat komponen mapper - Seperti kita ketahui komponen mapper digunakan untuk memecahkan masalah yang sebenarnya menjadi komponen yang lebih kecil. Komponen-komponen yang lebih kecil maka menjadi lebih mudah untuk memecahkan. Kita dapat memiliki sendiri komponen mapper disesuaikan kami dengan memperluas peta Apache mengurangi kelas Mapper. Kita perlu mengganti metode peta kelas ini. Kelas mapper mengharapkan empat parameter berikut -

untuk input: Berikut parameter untuk kunci masukan dan nilai

  • KEMUDIAN Parameter ini menjelaskan jenis kunci yang disediakan sebagai masukan untuk komponen mapper.
  • VALUEIN Parameter ini menjelaskan jenis nilai yang diberikan sebagai masukan untuk komponen mapper.

untuk output: Berikut parameter untuk kunci output dan nilai

  • KEYOUTParameter ini menjelaskan jenis out put parameter kunci dari komponen mapper.
  • VALUEOUTParameter ini menjelaskan jenis nilai output dari komponen mapper.

Masing-masing parameter harus melaksanakan dapat ditulis interface. Dalam contoh yang diberikan, kita telah menggunakan mapper kami untuk membaca isi dari file satu baris pada satu waktu dan mempersiapkan pasangan kunci-nilai setiap baris. implementasi kami dari metode peta melakukan kegiatan sebagai berikut -

  • First, membagi setiap baris dalam kata-kata
  • Kedua, iterate melalui setiap kata dan mengambil tidak semua karakter Unicode yang tidak huruf atau karakter.
  • Ketiga, membangun sepasang kunci-nilai dengan menggunakan metode write dari Konteks kelas yang kompatibel dengan output yang diharapkan pasangan kunci-nilai.

Listing2: Sampel disesuaikan kelas Mapper

[Code]

public class MyWordMapper meluas Mapper<LongWritable, Teks, Teks, IntWritable> {
swasta Text myword = Teks baru();

@ Override
dilindungi peta batal(kunci LongWritable, nilai teks, konteks konteks) throws IOException, InterruptedException {
string line = value.toString();
StringTokenizer lineTokenz = new StringTokenizer(line);
while (lineTokenz.hasMoreTokens()) {
String cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, baru IntWritable(1));
}
}

/**
* Mengganti semua karakter Unicode yang tidak angka atau huruf dengan string kosong.
* @param asli, Ini adalah string asli
* @return sebuah objek string yang hanya berisi huruf dan angka
*/
removeNonLettersNonNumbers swasta String (string asli) {
kembali original.replaceAll(“[^ \ P{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 – Buat Peredam Komponen - Sebuah peredam adalah komponen yang menghapus nilai-nilai menengah yang tidak diinginkan dan ke depan hanya mereka kunci pasangan nilai yang relevan. Untuk memiliki peredam disesuaikan kami, kelas kami harus memperpanjang Peredam kelas dan lebih menunggang mengurangi metode. Kelas peredam mengharapkan empat parameter berikut.

untuk input: Berikut parameter untuk kunci masukan dan nilai

  • KEMUDIAN Parameter ini menjelaskan jenis kunci yang disediakan sebagai masukan untuk komponen mapper.
  • VALUEIN Parameter ini menjelaskan jenis nilai yang diberikan sebagai masukan untuk komponen mapper.

untuk output: Berikut parameter untuk kunci output dan nilai

  • KEYOUTParameter ini menjelaskan jenis out put parameter kunci dari komponen mapper
  • VALUEOUTParameter ini menjelaskan jenis nilai output dari komponen mapper.

Sementara menerapkan kita harus memastikan bahwa datatype dari 'keyin' dan 'keyout' parameter yang sama. Juga 'valuein' dan parameter valueout 'harus dari jenis yang sama. implementasi kami dari metode mengurangi melakukan langkah-langkah berikut -

  • First, periksa bahwa kunci masukan berisi kata yang diinginkan.
  • Kedua, jika langkah di atas benar, mendapatkan jumlah kemunculan kata.
  • Ketiga, membangun sepasang kunci-nilai baru dengan memanggil metode menulis dari kelas reducer.

Listing3: Sampel disesuaikan kelas Reducer

[Code]

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

public class MyWordReducer meluas Reducer<Teks, IntWritable, Teks, IntWritable> {
dilindungi final String statis MY_TARGET_TEXT = “Hadoop”;

@ Override
kekosongan dilindungi mengurangi(teks keyTxt, iterable<IntWritable> values, konteks konteks) throws IOException, InterruptedException {
jika (containsTargetWord(keyTxt)) {
int wCount = 0;
untuk (nilai IntWritable: values) {
wCount = value.get();
}
context.write(key, baru IntWritable(wCount));
}
}
containsTargetWord boolean swasta(teks keyTxt) {
kembali keyTxt.toString().sama(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 – Buat konteks aplikasi - Langkah berikutnya adalah untuk menciptakan konteks aplikasi yang menggunakan XML. Kami dapat mengkonfigurasi konteks penerapan aplikasi kita menggunakan langkah-langkah berikut -
    • Membuat file properti yang berisi nilai dari properti konfigurasi. Contoh sifat aplikasi berkas ditampilkan di bawah ini -

[Code]
fs.default.name = HDFS://localhost:9000
mapred.job.tracker = localhost:9001
input.path = / path / ke / input / file /
output.path = / path / ke / output / berkas
[/Code]

  • Konfigurasi tempat dudukan properti yang digunakan untuk mengambil nilai-nilai dari properti konfigurasi dari file sifat dibuat. Hal ini dapat dilakukan dengan menambahkan berikut dalam file konteks XML aplikasi kita -

[Code]
<konteks:Lokasi properti-placeholder =”classpath:application.properties” />

[/Code]

  • Konfigurasi Apache Hadoop dan tugasnya - Kita bisa mengkonfigurasi sistem file default dan pekerjaan tracker dengan menambah berikut dalam file konteks aplikasi kita

[Code]

<hdp:konfigurasi>
fs.default.name = ${fs.default.name}
mapred.job.tracker = ${mapred.job.tracker}
</hdp:konfigurasi>

[/Code]

Kita harus menambahkan berikut dalam file konteks XML aplikasi kita untuk menentukan tracker pekerjaan -

[Code]
<hdp:Pekerjaan id =”wordCountJobId”
input-path =”${input.path}”
Output-path =”${jalur keluaran}”
jar-by-class =”net.qs.spring.data.apachehadoop.Main”
mapper =”net.qs.spring.data.apachehadoop.MyWordMapper”
peredam =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Mengkonfigurasi runner pekerjaan yang berjalan Hadoop pekerjaan diciptakan. Pelari Job dapat dikonfigurasi dengan menambahkan berikut dalam file konteks XML aplikasi kita

[Code]
<hdp:Pekerjaan-pelari id =”wordCountJobRunner” Pekerjaan-ref =”wordCountJobId” run-di-startup =”benar”/>
[/Code]

  • Step 5 – Memuat konteks aplikasi pada startup - Kita sekarang dapat menjalankan Hadoop pekerjaan yang diciptakan oleh memuat konteks aplikasi ketika aplikasi dijalankan. Kita dapat melakukan ini dengan membuat contoh dari objek ClassPathXmlApplicationContext yang menerima nama file konteks aplikasi kita sebagai parameter masukan ke konstruktor. Hal ini dapat dilakukan seperti di bawah -

Listing4: Sampel menunjukkan pemuatan konteks aplikasi

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

public class Main {
public static void main(Senar[] argumen) {
ApplicationContext ctx = ClassPathXmlApplicationContext baru(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 – Menjalankan pekerjaan Mapreduce - Kita bisa mulai peta kita mengurangi pekerjaan menggunakan langkah-langkah berikut -
  • Unggah file input ke dalam HDFS - Kita dapat melakukan ini dengan menjalankan perintah berikut pada command prompt -

[Code]

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

[/Code]

Berikut ini adalah file input sampel yang telah digunakan dalam contoh ini. Target kata kunci 'Hadoop ' disorot di GREEN. Kata 'Hadoop ' ada 4 kali dalam sampel.

Input

Memasukkan

Image1: file input sampel

  • Periksa apakah file telah berhasil diunggah dengan menjalankan perintah berikut. Ini akan menunjukkan file input.

[kode]

DFS Hadoop ls / input

[/kode]

  • Menjalankan pekerjaan Mapreduce. Hal ini dapat dilakukan dengan menjalankan metode utama dari file java kita dari IDE. Jika semua langkah bekerja seperti yang diharapkan maka berikut ini akan menjadi output.

Output: Hadoop 4
Summary: Mari kita simpulkan apa yang telah kita bahas sejauh ini dalam peluru berikut –

  • Kedua Musim semi dan Hadoop kerangka kerja yang berguna dari komunitas open source.
  • Dengan menggabungkan ini kita bisa mendapatkan manfaat dari kedua kerangka.
  • Membuat peta mengurangi pekerjaan menggunakan pegas proses enam langkah seperti yang dijelaskan di atas.
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