ฉันจะไม่พูดถึงการใช้ Maven มีออนไลน์มากมายและไม่มีการเปลี่ยนแปลงครั้งใหญ่ในช่วงหลายปีที่ผ่านมา ที่นี่ฉันจะแนะนำวิธีการสร้างสภาพแวดล้อมการพัฒนา Hadoop เท่านั้น
1. สร้างโครงการก่อน
คัดลอกรหัสดังต่อไปนี้: MVN archetype: สร้าง -dgroupid = my.hadoopstudy -dartifactid = hadoopstudy -darchetYpeartifactId = maven -archetype -quickstart -dinteractiveMode = false
2. จากนั้นเพิ่มแพ็คเกจการพึ่งพา Hadoop ของ hadoop-common, hadoop-client, hadoop-hdfs ในไฟล์ pom.xml ไฟล์ pom.xml ที่เพิ่มขึ้นมีดังนี้
<Project XMLNS: XSI = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://maven.apache.org/pom/4.0.0" XSI: schemalocation = "httpmm:MANCMMMMMMMMMMMMMMMMMMMMMMMMMMMMM http://maven.apache.org/maven-v4_0_0.xsd "> <moderVersion> 4.0.0 </modelversion> <roupid> my.hadoopstudy </groupid> <ratifactid> hadoopstudy </artifactid> <name> hadoopstudy </name> <url> http://maven.apache.org </url> <การพึ่งพาอาศัย> <การพึ่งพา> <roupId> org.apache.hadoop </groupid> <RoupID> org.apache.hadoop </groupId> <ratifactid> hadoop-hdfs </artifactid> <version> 2.5.1 </เวอร์ชัน> </การพึ่งพา> <การพึ่งพา> <roupid> org.apache.hadoop </groupid> <RoupID> Junit </groupId> <ratifactId> Junit </artifactid> <version> 3.8.1 </เวอร์ชัน> <pope> ทดสอบ </cope> </percterency> </dependencies>
3. ทดสอบ
3.1 ก่อนอื่นเราสามารถทดสอบการพัฒนาของ HDF ที่นี่เราสมมติว่าเรามีกลุ่มในบทความ Hadoop ก่อนหน้านี้รหัสคลาสมีดังนี้
แพ็คเกจ my.hadoopstudy.dfs; นำเข้า org.apache.hadoop.conf.configuration; นำเข้า org.apache.hadoop.fs.fsdatautputstream; นำเข้า org.apache.hadoop.fs.filestatus; นำเข้า org.hadoop. org.apache.hadoop.io.ioutils; นำเข้า java.io.inputstream; นำเข้า java.net.uri; การทดสอบระดับสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยนข้อยกเว้น {string uri = "hdfs: //9.111.254.189: 9000/"; configuration config = new configuration (); ระบบไฟล์ fs = filesystem.get (uri.create (uri), config); // แสดงรายการไฟล์และไดเรกทอรีทั้งหมดภายใต้/ผู้ใช้/fkong/ไดเรกทอรีบน hdfs filestatus [] สถานะ = fs.liststatus (เส้นทางใหม่ ("/ผู้ใช้/fkong")); สำหรับ (สถานะ filestatus: สถานะ) {system.out.println (สถานะ); } // สร้างไฟล์ในไดเรกทอรี/ผู้ใช้/fkong ของ HDFS และเขียนบรรทัดของข้อความ fsDataOutputStream OS = fs.create (เส้นทางใหม่ ("/ผู้ใช้/fkong/test.log")); OS.WRITE ("Hello World!". GetBytes ()); os.flush (); os.close (); // แสดงเนื้อหาของไฟล์ที่ระบุภายใต้/ผู้ใช้/fkong ใน hdfs inputstream คือ = fs.open (เส้นทางใหม่ ("/ผู้ใช้/fkong/test.log")); ioutils.copybytes (IS, System.out, 1024, True); - 3.2 การทดสอบงาน MapReduce
รหัสทดสอบค่อนข้างง่ายดังนี้:
แพ็คเกจ my.hadoopstudy.mapreduce; นำเข้า org.apache.hadoop.conf.configuration; นำเข้า org.apache.hadoop.fs.path; นำเข้า org.apache.hadoop.io.intwable; org.apache.hadoop.mapreduce.mapper; นำเข้า org.apache.hadoop.mapreduce.reducer; นำเข้า org.apache.hadoop.mapreduce.lib.input.fileinputformat; นำเข้า org.apache.hadoop.mapreduce org.apache.hadoop.util.genericoptionsparser; นำเข้า java.io.ioexception; คลาสสาธารณะ EventCount {คลาสคงที่ mymapper สาธารณะขยาย Mapper <วัตถุ, ข้อความ, ข้อความ, intwlitable> {ส่วนตัวสุดท้ายคงที่ เหตุการณ์ข้อความส่วนตัว = ข้อความใหม่ (); แผนที่โมฆะสาธารณะ (คีย์วัตถุ, ค่าข้อความ, บริบทบริบท) พ่น IOException, interruptedException {int IDX = value.toString (). indexof (""); if (idx> 0) {string e = value.toString (). substring (0, idx); event.set (e); Context.write (Event, One); }}} คลาสสแตติกสาธารณะ MyReducer ขยายตัวลดลง <ข้อความ, intWritable, ข้อความ, intwlitable> {ผลการเขียนแบบส่วนตัว = ใหม่ intWritable (); โมฆะสาธารณะลดลง (คีย์ข้อความ, การติดตั้งซ้ำ <intwlitable>, บริบทบริบท) โยน ioexception, interruptedException {int sum = 0; สำหรับ (intwlitable val: ค่า) {sum += val.get (); } result.set (ผลรวม); บริบทการเขียน (คีย์ผลลัพธ์); }} โมฆะคงที่สาธารณะหลัก (สตริง [] args) พ่นข้อยกเว้น {การกำหนดค่า conf = การกำหนดค่าใหม่ (); String [] otherArgs = new genericoptionsparser (conf, args) .getRemainingArgs (); if (otherargs.length <2) {system.err.println ("การใช้งาน: EventCount <in> <ont>"); System.Exit (2); } job job = job.getInstance (conf, "count event"); Job.setJarbyClass (EventCount.Class); Job.setMapperclass (mymapper.class); Job.setCombinerclass (myreducer.class); Job.setReducerclass (myreducer.class); Job.setOutputkeyclass (text.class); job.setOutputValUeclass (intwritable.class); FileInputFormat.addInputPath (งาน, เส้นทางใหม่ (OtherArgs [0])); FileOutputFormat.setOutputPath (งาน, เส้นทางใหม่ (อื่น ๆ arges [1])); System.Exit (job.waitforcompletion (จริง)? 0: 1); -เรียกใช้คำสั่ง "MVN Package" เพื่อสร้างแพ็คเกจ JAR Hadoopstudy-1.0-snapshot.jar และคัดลอกไฟล์ JAR ไปยังไดเรกทอรีการติดตั้ง Hadoop
ที่นี่เราคิดว่าเราจำเป็นต้องวิเคราะห์ข้อมูลเหตุการณ์ในไฟล์บันทึกหลายไฟล์เพื่อนับจำนวนเหตุการณ์ดังนั้นสร้างไดเรกทอรีและไฟล์
/tmp/input/event.log.1
/tmp/input/event.log.2
/tmp/input/event.log.3
เนื่องจากเราเพียงแค่ต้องสร้างคอลัมน์ที่นี่เนื้อหาของแต่ละไฟล์อาจเหมือนกันหากเนื้อหามีดังนี้
Job_new ...
Job_new ...
Job_finish ...
Job_new ...
Job_finish ...
จากนั้นคัดลอกไฟล์เหล่านี้ไปยัง HDFS
การคัดลอกรหัสมีดังนี้: $ bin/hdfs dfs -put/tmp/input/user/fkong/input
เรียกใช้งาน MapReduce
คัดลอกรหัสดังต่อไปนี้: $ bin/hadoop jar hadoopstudy-1.0-snapshot.jar my.hadoopstudy.mapreduce.eventCount/ผู้ใช้/fkong/input/user/fkong/output
ดูผลการดำเนินการ
การคัดลอกรหัสมีดังนี้: $ bin/hdfs dfs -cat/user/fkong/output/part-r-00000
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น