이 기사는 Hadoop 환경이 원격 시스템 (예 : Linux 서버)에 있고 Hadoop 버전은 2.5.2라고 가정합니다.
참고 : 이 기사 Eclipse/Intellij Idea 원격 디버깅 Hadoop 2.6.0 주로 참조가 있으며이를 기반으로 조정되었습니다.
32 비트 JDK 및 32 비트 이클립스와 같은 Win7 64 비트에 32 비트 소프트웨어를 설치하고 싶지만이 기사의 운영 체제는 Win7 64 비트이지만 모든 소프트웨어는 32 비트입니다.
소프트웨어 버전 :
운영 체제 : Win7 64 비트
Eclipse : Eclipse-Jee-Mars-2-WIN32
Java : 1.8.0_77 32 비트
Hadoop : 2.5.2
1. Hadoop을 설치하십시오
1. d :/app/hadoop-2.5.2.와 같은 Hadoop-2.5.2.tar.gz를 압축하려면 Win7에서 디렉토리를 찾으십시오.
2. 환경 변수를 구성합니다
hadoop_home = d : /app/hadoop-2.5.2/
2. Hadoop Eclipse 플러그인을 설치하십시오
1. Hadoop-Eclipse-Plugin을 다운로드하십시오
Hadoop-Eclipse-Plugin은 ECLIPSE에 특별히 사용되는 Hadoop 플러그인으로, IDE 환경에서 직접 HDF의 디렉토리 및 파일 컨텐츠를 볼 수 있습니다. 소스 코드는 github에서 호스팅되며 공식 웹 사이트 주소는 https://github.com/winghc/hadoop2x-eclipse-plugin입니다. 릴리스 폴더에서 Hadoop-Eclipse-Plugin-2.6.0.jar를 다운로드하십시오.
2. Windows 32 비트 플랫폼 용 Hadoop 플러그인 패키지 다운로드 (Hadoop.dll, winutils.exe)
소프트웨어 환경은 32 비트이므로 32 비트 Hadoop.dll 및 Winutils.exe를 다운로드해야합니다. 다운로드 주소는 Baidu Hadoop.dll 32에서 사용할 수 있습니다
예를 들어, http://xiazai.vevb.com/201607/yuanma/eclipse-hadoop(Vevb.com).rar를 다운로드하십시오
winutils.exe를 $ hadoop_home/bin 디렉토리로 복사하고 Hadoop.dll을 c :/wind
3. Hadoop-Eclipse-Plugin 플러그인을 구성하십시오
Eclipse 시작, Window-> preferences-> Hadoop Map/Reduce Win7에서 Hadoop의 루트 디렉토리를 지정하십시오 (예 : $ hadoop_home)
맵을 전환/보기를 줄입니다
Windows->보기보기-> 기타 맵/축소 위치
그런 다음지도/축소 위치 패널에 새 위치를 추가하십시오.
다음과 같이 구성하십시오
위치 이름 은 이름 일뿐입니다
Map/Reduce (v2) 마스터 호스트 는 가상 머신의 Hadoop 마스터에 해당하는 IP 주소입니다. 아래 포트는 hdfs-site.xml의 dfs.datanode.ipc.address 속성으로 지정된 포트에 해당합니다.
DFS 마스터 포트 의 포트는 core-site.xml의 fs.defaultfs로 지정된 포트에 해당합니다.
마지막 사용자 이름은 가상 시스템에서 Hadoop을 실행하는 사용자 이름과 동일해야합니다. Hadoop과 함께 Hadoop 2.6.0을 설치하고 실행 했으므로 Hadoop을 여기에 작성하십시오. 루트로 설치 한 경우 그에 따라 루트로 변경하십시오.
이 매개 변수를 지정한 후 마감 및 Eclipse를 클릭하여 Hadoop에 연결하는 방법을 알 수 있습니다. 모든 것이 잘 진행되면 Project Explorer 패널의 HDF에서 디렉토리와 파일을 볼 수 있습니다.
파일을 마우스 오른쪽 버튼으로 클릭하고 삭제를 선택하여 시도 할 수 있습니다. 일반적으로 처음에는 실패하며 많은 것들이있을 것입니다. 일반적인 아이디어는 권한이 충분하지 않다는 것입니다. 그 이유는 현재 Win7 로그인 사용자가 가상 컴퓨터에서 Hadoop의 실행중인 사용자가 아니기 때문입니다. 많은 해결책이 있습니다. 예를 들어 Win7에서 새 Hadoop 관리자 사용자를 작성한 다음 Hadoop으로 전환하여 Win7에 로그인 한 다음 Eclipse를 사용하여 개발할 수 있습니다. 그러나 이것은 너무 짜증나고 가장 쉬운 방법입니다.
hdfs-site.xml에 추가되었습니다
<property> <name> dfs.permissions.enabled </name> <value> false </value> </property>
요컨대, Hadoop의 보안 감지를 완전히 끄는 것입니다 (학습 단계에서는이 문제가 필요하지 않습니다. 공식적으로 생성 될 때이를 수행하지 마십시오), 마지막으로 Hadoop을 다시 시작한 다음 Eclipse로 이동하여 지금 당장 파일 삭제 작업을 반복하는 것이 좋습니다.
참고 : 연결할 수없는 경우 Telnet 192.168.1.6 9000을 먼저 사용해보십시오 (먼저 IP 및 포트를 고유 한 Hadoop 서버 IP 및 포트로 교체하십시오).
Telnet이 실패하면 Core-Site.xml에서 fs.defaultfs의 값에 문제가있을 수 있습니다. 예를 들어, 구성은 LocalHost : 9000입니다. LocalHost를 호스트 이름으로 대체하는 것을 고려할 수 있습니다
3. WordCount 예제를 작성하십시오
1. 새 프로젝트를 만들고지도/감소 프로젝트를 선택하십시오
다음은 다음과 같이 새 클래스 wodcount.java 코드를 만듭니다.
import java.io.ioexception; import java.util.stringtokenizer; import org.apache.hadoop.conf.configuration; import org.apache.hadoop.fs.path; import org.apache.hadoop.io.intwitable; import org.apache.hadoop.io.text; import org.apache.hadoop.hadoop.mapreduce.job; 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; public class wordcount {public static class tokenizermapper <객체, 텍스트, 텍스트, intwritable> {private final static intwaritable one = new Intrwable (1); 개인 텍스트 단어 = 새 텍스트 (); public void map (객체 키, 텍스트 값, 컨텍스트 컨텍스트)는 ioexception, InterruptedException {stringTokenizer itr = new StringTokenizer (value.toString ()); while (itr.hasmoretokens ()) {word.set (itr.nextToken ()); context.write (Word, One); }}} public static class intsumreducer 확장 <텍스트, 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 : wordCount <in> [<in> ...] <ount>"); System.exit (2); } job job = job.getInstance (conf, "Word count"); job.setJarbyClass (WordCount.class); job.setMapperClass (tokenizerMapper.class); job.setcombinerclass (intsumpeducer.class); job.setReducerClass (intsumpreducer.class); job.setOutputKeyClass (text.class); job.setOutputValueClass (intwritable.class); for (int i = 0; i <otherArgs.length -1; ++ i) {fileInputFormat.AddInputPath (job, new Path (OtherArgs [i])); } fileoutputformat.setOutputPath (job, new Path (OtherArgs [OtherArgs.length -1])); System.Exit (job.waitforCompletion (true)? 0 : 1); }}그런 다음 SRC 디렉토리에서 log4j.properties를 만듭니다. 내용은 다음과 같습니다. (실행의 편의를 위해 다양한 출력을 확인하십시오).
log4j.rootlogger = info, stdout#log4j.logger.org.springframework = info#log4j.logger.org.apache.activemq = info#log4j.logger.org.apache.activemq.spring = warn#log4j.org.org.apache.activemq.store.journal = info#logger.org.org.org.org.org.org.org.org g.activeio.journal = infololog4j.appender.stdout = org.apache.log4j.consoleappenderlog4j.appender.stdout.layout = org.apache.log4j.patternlayoutlog4j.appender.stdout.layout.conversionpattern =%d} | %-5.5p | %-16.16t | %-32.32c {1} | %-32.32c %4L | %m%n최종 디렉토리 구조는 다음과 같습니다.
2. 실행중인 매개 변수를 구성합니다
WordCount는 단어를 계산 한 다음 다른 폴더로 출력하기 위해 파일을 입력하는 것이므로 두 개의 매개 변수를 제공하십시오. 위의 그림을 참조하십시오. 프로그램 인수를 입력하십시오.
hdfs : //192.168.1.6 : 9000/user/nub1.txt
HDFS : //192.168.1.6 : 9000/사용자/출력
사용자/nub1.txt 파일에 파일이 없으면 먼저 수동으로 업로드하십시오 (Eclipse에서 DFS 위치 도구를 마우스 오른쪽 버튼으로 클릭하면/출력/존재하지 않아야합니다. 그렇지 않으면, 프로그램이 끝까지 실행되고 대상 디렉토리가 존재한다는 것을 알게되면 오류도보고됩니다.
좋아, 그냥 달리세요
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.