나는 Maven의 사용에 대해 이야기하지 않을 것입니다. 온라인이 많고 수년 동안 큰 변화가 없었습니다. 여기에서는 Hadoop 개발 환경을 구축하는 방법 만 소개합니다.
1. 먼저 프로젝트를 만듭니다
다음과 같이 코드를 복사하십시오.
2. 그런 다음 pom.xml 파일에 Hadoop-Common, Hadoop-Client, Hadoop-HDFS의 Hadoop 종속성 패키지를 추가하십시오. 추가 된 pom.xml 파일은 다음과 같습니다
<project xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance"xmlns = "http://maven.apache.org/pom/4.0.0"xsi : schemalocation = "http://maven.apache.org/pom/0.0.0.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> <modelversion> 4.0.0 </modelversion> <groupid> my.hadoopstudy </groupid> <artifactid> hadoopstudy </artifactid> <packaging> jar </same </same </same </same </same </same </same </same hadeoty <Url> http://maven.apache.org </url> <pectionements> <pectionement> <groupid> org.apache.hadoop </groupid> <artifactid> hadoop-common </artifactid> <bersion> 2.5.1 </version> </dependency> <groupid> org.apache.hadoop </groupid> <artifactid> hadoop-hdfs </artifactid> <bersion> 2.5.1 </version> </version> </dependency> <pectomency> <groupid> org.apache.hadoop </groupacid> <artifactid> hadoop-client </artifactid> <version> 2.5.1 </version> </fectomency> <groupicid> junit> <artifactid> <artifactid> <버전> 3.8.1 </version> <Scope> 테스트 </scope> </fectionency> </fectencies> </project>
3. 테스트
3.1 먼저 HDF의 개발을 테스트 할 수 있습니다. 여기서 우리는 우리가 이전 Hadoop 기사에서 클러스터를 havedoop한다고 가정합니다. 클래스 코드는 다음과 같습니다.
패키지 my.hadoopstudy.dfs; import org.apache.hadoop.conf.configuration; import org.apache.hadoop.fs.fsdataoutputstream; import org.apache.hadoop.fs.filestatus; import org.apache.hadoop.fs.filesystem; hadepache.hadoop.f.phort org.apache.hadoop.io.ioutils; import java.io.inputstream; import java.net.uri; public class test {public static void main (String [] args) 예외 {String uri = "hdfs : //9.111.254.189 : 9000/"; 구성 구성 = 새 구성 (); FileSystem fs = filesystem.get (uri.create (uri), config); // hdfs filestatus [] status = fs.liststatus (new Path ( "/user/fkong"))에/사용자/fkong/디렉토리 아래에 모든 파일 및 디렉토리를 나열합니다. for (filestatus status : statuses) {system.out.println (상태); } // hdfs의/user/fkong 디렉토리에서 파일을 만들고 텍스트 줄을 작성합니다 fsdataoutputstream os = fs.create (new Path ( "/user/fkong/test.log"); os.write ( "Hello World!". GetBytes ()); os.flush (); os.close (); // hdfs에서/user/fkong 아래에 지정된 파일의 내용이 = fs.open (새 경로 ( "/user/fkong/test.log"); ioutils.copybytes (is, system.out, 1024, true); }} 3.2 MapReduce 작업 테스트
테스트 코드는 다음과 같이 비교적 간단합니다.
패키지 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.io.text; import org.apache.hadoop.mapreduce.job; import org.apache.hadoop.mapreduce.mapper; import org.apache.hadoop.mapreduce.retucer; import org.apache.hadoop.hadoop.mapreduce.lib.input.fileinputformat; import org.apache.hadoop.mapreduce.lib.output.fileoutputformat; import org.apache.hadoop.util.genericoptionsparser; import java.io.ioexception; public class eventCount {public static class myMapper는 mapper <객체, 텍스트, 텍스트, intwritable을 확장합니다. 개인 텍스트 이벤트 = 새 텍스트 (); public void map (객체 키, 텍스트 값, 컨텍스트 컨텍스트)는 ioexception, InterruptedException {int idx = value.toString (). indexof ( ""); if (idx> 0) {String e = value.toString (). 서브 스트링 (0, idx); event.set (e); context.write (이벤트, 하나); }}} public static class myReducer 확장 <텍스트, intwritable, text, intwritable> {private intwritable result = new intwritable (); public void 감소 (텍스트 키, 반복 가능한 <intwritable> 값, 컨텍스트 컨텍스트)는 ioexception, InterruptedException {int sum = 0; for (intwritable val : values) {sum += val.get (); } result.set (sum); context.write (키, 결과); }} public static void main (string [] args)은 예외 {configuration conf = new configuration (); String [] OtherArgs = New GenericoptionsParser (conf, args) .getRemainingArgs (); if (otherArgs.length <2) {System.err.println ( "usage : eventCount <in> <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 (intwritable.class); fileInputFormat.AdDinputPath (job, new Path (OtherArgs [0]); fileoutputformat.setOutputPath (job, new Path (OtherArgs [1]); System.Exit (job.waitforCompletion (true)? 0 : 1); }}"MVN 패키지"명령을 실행하여 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을 더 지원하기를 바랍니다.