لن أتحدث عن استخدام Maven. هناك العديد من الإنترنت ولم تكن هناك تغييرات كبيرة على مر السنين. هنا سأقدم فقط كيفية بناء بيئة تطوير Hadoop.
1. إنشاء مشروع أولا
انسخ الكود على النحو التالي: mvn archetype: indrint -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" http://maven.apache.org/maven-v4_0_0.xsd "> <Dodeversion> 4.0.0 </modelversion> <roupiD> my.hadoopstudy </rougiD> <StifactId> hadoopstudy </stifactid> <Url> http://maven.apache.org </url> <تبعية> <reperence> <roupiD> org.apache.hadoop </rougeid> <StifactId> hadoop-common </stiftid> <splect> <ChotifactId> hadoop-hdfs </intifactId> <sople> 2.5.1 </version> </sependency> <sependency> <groupId> org.apache.hadoop </roughid> <StifactId> hadoop-client </shanit> <spressid> <splex> 3.8.1 </version> <scope> اختبار </scope> </sependency> </تبعية> </project>
3. اختبار
3.1 أولاً يمكننا اختبار تطوير HDFs. نحن هنا نفترض أننا مجموعات havedoop في مقالة Hadoop السابقة ، رمز الفصل هو كما يلي
package my.hadoopstudy.dfs ؛ import org.apache.hadoop.conf.configuration ؛ import org.apache.hadoop.fs.fsdataoutputstream ؛ import org.apache.hadoop.fs.filestatus ؛ import org.hadoop.fs.filesystem ؛ org.apache.hadoop.io.ioutils ؛ import java.io.inputstream ؛ import java.net.uri ؛ اختبار الفئة العامة {public static void main (string [] args) rems {string uri = "hdfs: //9.111.254.189: 9000/" ؛ التكوين التكوين = التكوين الجديد () ؛ FileSystem fs = fileystem.get (uri.create (uri) ، config) ؛ // اذكر جميع الملفات والأدلة ضمن/user/fkong/directory على HDFS filestatus [] almites = fs.liststatus (مسار جديد ("/user/fkong")) ؛ لـ (حالة filestatus: الحالات) {system.out.println (الحالة) ؛ } // قم بإنشاء ملف في دليل/user/fkong من HDFs وكتابة سطر من النص fsdataoutputstream os = fs.create (مسار جديد ("/user/fkong/test.log")) ؛ OS.Write ("Hello World!". getBytes ()) ؛ os.flush () ؛ OS.Close () ؛ // أظهر محتوى الملف المحدد تحت/user/fkong في HDFS inputStream هو = fs.open (مسار جديد ("/user/fkong/test.log")) ؛ ioutils.copybytes (IS ، system.out ، 1024 ، true) ؛ }} 3.2 اختبار وظائف MapReduce
رمز الاختبار بسيط نسبيًا ، على النحو التالي:
package my.hadoopstudy.mapreduce ؛ import org.apache.hadoop.conf.configuration ؛ import org.apache.hadoop.fs.path ؛ import org.apache.hadoop.io.intwrable ؛ import org.apache.hadoop.io org.apache.hadoop.mapreduce.mapper ؛ import org.apache.hadoop.mapreduce.reducer ؛ import org.apache.hadoop.mapreduce.lib.input.fileinputformat org.apache.hadoop.util.genericoptionsparser ؛ استيراد java.io.ioException ؛ فئة عامة eventcount {الفئة الثابتة العامة mymapper تمتد mapper <object ، النص ، والمنصير> {private final static intwritable one = new new new (1) ؛ حدث نص خاص = نص جديد () ؛ خريطة باطلة عامة (مفتاح الكائن ، قيمة النص ، سياق السياق) يلقي ioException ، InterruptedException {int idx = value.toString (). indexof ("") ؛ if (idx> 0) {string e = value.toString (). substring (0 ، idx) ؛ event.set (e) ؛ context.write (الحدث ، واحد) ؛ }}} الفئة الثابتة العامة MyRreducer تمتد المخفض <النص ، غير مقصود ، نص ، مقصود> {private intwritable result = new Intwritable () ؛ الفراغ العام تقليل (مفتاح النص ، قيم <fintrable> ، سياق السياق) يلقي ioException ، interruptedException {int sum = 0 ؛ لـ (val infertwrity al: base) {sum += val.get () ؛ } result.set (sum) ؛ context.write (المفتاح ، النتيجة) ؛ }} public static void main (string [] args) يلقي الاستثناء {configuration conf = configuration () ؛ String [] otherArgs = new GenericOptionSparser (conf ، args) .getRemainingArgs () ؛ if (otherargs.length <2) {system.err.println ("use: eventCount <in> <out>") ؛ System.exit (2) ؛ } Job Job = Job.getInstance (conf ، "عدد الأحداث") ؛ job.setjarbyclass (eventCount.Class) ؛ Job.setMapperClass (mymapper.class) ؛ job.setCombinerClass (myreducer.class) ؛ Job.SetReducerClass (myreducer.class) ؛ Job.SetOutputKeyClass (text.class) ؛ job.setOutputValueClass (confulable.class) ؛ FileInputFormat.adDinputPath (Job ، مسار جديد (OtherArgs [0])) ؛ fileOutputFormat.setoutputpath (Job ، مسار جديد (otherArgs [1])) ؛ System.exit (Job.WaitforCompletion (true)؟ 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/user/fkong/input/user/fkong/output
عرض نتائج التنفيذ
نسخة الكود كما يلي: $ bin/hdfs dfs -cat/user/fkong/output/part-r-00000
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.