Saya tidak akan berbicara tentang penggunaan Maven. Ada banyak online dan tidak ada perubahan besar selama bertahun -tahun. Di sini saya hanya akan memperkenalkan cara membangun lingkungan pengembangan Hadoop.
1. Buat proyek terlebih dahulu
Salin kode sebagai berikut: MVN Archetype: menghasilkan -dgroupId = my.hadoopstudy -dartifactId = hadoopstudy -darchetypeartifactId = maven -archetype -quickstart -dinteractiveMode = false
2. Kemudian tambahkan paket ketergantungan Hadoop Hadoop-Common, Hadoop-Client, Hadoop-HDFS dalam file pom.xml. File pom.xml yang ditambahkan adalah sebagai berikut
<Project xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://maven.apache.org/pom/4.0.0" xsi: schemaCe = "http:/maven. http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>my.hadoopstudy</groupId> <artifactId>hadoopstudy</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name> HadoopStudy </name> <rerl> http://maven.apache.org </rerl> <dependencies> <dependency> <groupid> org.apache.hadoop </groupid> <ArTifactId> Hadoop-Common </arttifactid> <version> 2.5.1 </Versi> </Version> </Hadoop-Common </arttifactid> <version> 2.5.1 </Versi> </Version> </Version> </Version> </Version> </Version> </Version> </Version> </Version> </Version> </Version> </Version> </Version> </Version> </Version> </Version> </Version> </Version> <GroupId> org.apache.hadoop </groupid> <ArtifactId> Hadoop-hdfs </t ArtifactId> <version> 2.5.1 </version> </dependency> <dependency> <groupid> org.apache.hadoop </groupid> <Artifactid> Hadoop-client </Artifache.hadoop </groupId> <ArtifactId> HADOOP-CLIENT </Artifactid> 2.5. <groupid> junit </groupid> <ArTifactId> junit </artifactid> <version> 3.8.1 </version> <scope> test </seupop> </gandendency> </dependencies> </joy Project>
3. Tes
3.1 Pertama kita dapat menguji pengembangan HDF. Di sini kami berasumsi bahwa kami memiliki cluster di artikel Hadoop sebelumnya, kode kelas adalah sebagai berikut
Paket my.hadoopstudy.dfs; impor org.apache.hadoop.conf.configuration; impor org.apache.hadoop.fs.fsdataoutputStream; impor org.apache.hadoop.f.filestatus; impor org.apache.hadoop.apache. org.apache.hadoop.io.ioutils; import java.io.inputStream; import java.net.uri; tes kelas publik {public static void main (string [] args) melempar pengecualian {string uri = "hdfs: //9.111.254.189: 9000/"; Konfigurasi konfigurasi = konfigurasi baru (); Filesystem fs = filesystem.get (uri.create (uri), config); // Sebutkan semua file dan direktori di bawah/pengguna/fkong/direktori pada hdfs filestatus [] status = fs.listStatus (jalur baru ("/user/fkong"))); untuk (status filestatus: status) {system.out.println (status); } // Buat file di Direktori HDFS/USER/FKONG dan tulis baris teks fsDataOutputStream os = fs.create (path baru ("/user/fkong/test.log")); os.write ("Hello World!". GetBytes ()); os.flush (); os.close (); // Tunjukkan konten file yang ditentukan di bawah/pengguna/fkong di inputStream hdfs adalah = fs.open (jalur baru ("/user/fkong/test.log")); Ioutils.copybytes (IS, System.out, 1024, true); }} 3.2 Menguji Pekerjaan MapReduce
Kode tes relatif sederhana, sebagai berikut:
Paket my.hadoopstudy.mapreduce; import org.apache.hadoop.conf.configuration; import org.apache.hadoop.fs.path; import org.apache.hadoop.io.intwritable; import org.apache.hadoop.text; impor org.apache.hadoop org.apache.hadoop.mapreduce.mapper; impor org.apache.hadoop.mapreduce.reducer; impor org.apache.hadoop.mapreduce.lib.input.fileInputFormat; impor org.apache.hadoop.mapreduce.lib.output.fileOfFormat; org.apache.hadoop.util.genericoptionsparser; impor java.io.ioException; kelas publik EventCount {public static class myMapper memperluas mapper <objek, teks, teks, tidak dapat diterapkan> {private final static Intwritable one = new Intwritable (1); acara teks pribadi = teks baru (); peta public void (kunci objek, nilai teks, konteks konteks) melempar IoException, InterruptedException {int idx = value.toString (). IndexOf (""); if (idx> 0) {string e = value.toString (). Substring (0, idx); event.set (e); context.write (peristiwa, satu); }}} public static Class MyReducer memperluas peredam <teks, tidak dapat diterimisi, teks, tidak dapat diterapkan> {hasil yang tidak dapat dituntun privat = new IntWritable (); void public reduksi (kunci teks, nilai -nilai <intwritable>, konteks konteks) melempar ioException, interruptedException {int sum = 0; untuk (val yang tidak dapat dituntun: values) {sum += val.get (); } result.set (sum); context.write (kunci, hasil); }} public static void main (string [] args) melempar Exception {configuration conf = new configuration (); String [] OtherArgs = GenericOptionsParser baru (conf, args) .getRemainingArgs (); if (OtherArgs.length <2) {System.err.println ("Usage: EventCount <n out>"); System.exit (2); } Job job = job.getInstance (conf, "event count"); job.setjarbyclass (eventcount.class); job.setmapperclass (mymapper.class); job.setCombinerClass (myreducer.class); job.setreducerclass (myreducer.class); job.setoutputKeyClass (text.class); job.setoutputValueClass (intrwritable.class); FileInputFormat.addInputPath (pekerjaan, jalur baru (OtherArgs [0])); FileOutPutFormat.SetOutputPath (Job, Path baru (OtherArgs [1])); System.exit (job.waitforcompletion (true)? 0: 1); }}Jalankan perintah "Paket MVN" untuk menghasilkan paket jar Hadoopstudy-1.0-snapshot.jar, dan salin file JAR ke direktori instalasi Hadoop.
Di sini kami berasumsi bahwa kami perlu menganalisis informasi acara dalam beberapa file log untuk menghitung jumlah acara, jadi buat direktori dan file
/tmp/input/event.log.1
/tmp/input/event.log.2
/tmp/input/event.log.3
Karena kita hanya perlu membuat kolom di sini, isi setiap file bisa sama, jika isinya sebagai berikut
Job_new ...
Job_new ...
Job_finish ...
Job_new ...
Job_finish ...
Kemudian salin file -file ini ke HDFS
Salinan kode adalah sebagai berikut: $ bin/HDFS DFS -Put/tmp/input/pengguna/fkong/input
Jalankan pekerjaan MapReduce
Salin kode sebagai berikut: $ bin/Hadoop Jar Hadoopstudy-1.0-snapshot.jar my.hadoopstudy.mapreduce.eventcount/user/fkong/input/user/fkong/output
Lihat hasil eksekusi
Salinan kode adalah sebagai berikut: $ bin/HDFS DFS -CAT/USER/FKONG/OUTPUT/PART-R-00000
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.