hadoop 2.7.3 은 visual studio 2010 으로 빌드되게 세팅되어있어서

visual studio 2017로 컴파일 해봄



** 참고

  https://wiki.apache.org/hadoop/Hadoop2OnWindows

  hadoop-2.7.3-src.tar.gz/BUILDING.txt




** 준비

  - hadoop-2.7.3-src.tar.gz 다운로드 및 압축 해제

    (F:\projects\big\src\hadoop-2.7.3-src 에 압축 해제 함)

  - 인터넷 연결 필요

  - jdk 1.7 설치 및 PATH, JAVA_HOME 등록

    설치 경로는 공백이 없도록 함. (기본으로 C:\Program Files... 에 설치되므로 변경 필요)

    jdk1.7.0_80 설치함 (http://www.oracle.com/technetwork/java/javase/archive-139210.html)

  - maven 설치 및 bin 폴더 PATH 등록

  - ProtocolBuffer 2.5.0 설치(윈도우용 exe 파일) 및 PATH 등록

  - cmake 설치

  - zlib 1.2.7 소스 다운 로드 및 ZLIB_HOME 등록

    set ZLIB_HOME=C:\third\zlib-1.2.7

  - Unix 명령 툴 설치 : UnxUpdates(http://unxutils.sourceforge.net/) 받아 PATH 등록함. 실제 필요한지는 불확실

  - visual studio 2017 설치


  

  

** visual studio 2017 을 위한 수정

  - visual studio 2017로 프로젝트 파일 업그레이드

    (아래 .sln 파일 열어서 2017로 업그레이드)

    (추가로 /MT, /MTd 설정. 개인적으로 MT를 좋아하여 변경 함)

    F:\projects\big\src\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\winutils\winutils.sln

    F:\projects\big\src\hadoop-2.7.3-src\hadoop-common-project\hadoop-common\src\main\native\native.sln


  - F:\projects\big\src\hadoop-2.7.3-src\hadoop-hdfs-project\hadoop-hdfs\pom.xml 파일449 라인 수정

      <condition property="generator" value="Visual Studio 10" else="Visual Studio 10 Win64">

    를

      <condition property="generator" value="Visual Studio 15" else="Visual Studio 15 Win64">

    으로 수정


    

  

** 컴파일 (mvn 실행)

  "x64 Native Tools Command Prompt for VS 2017" 에서 명령 수행


  > cd F:\projects\big\src\hadoop-2.7.3-src

  > mvn package -Pdist,native-win -DskipTests -Dtar


  아래 경로에 파일 생성

  F:\projects\big\src\hadoop-2.7.3-src\hadoop-dist\target\hadoop-2.7.3.tar.gz

  



** 설치

  F:\projects\big\src\hadoop-2.7.3-src\hadoop-dist\target\hadoop-2.7.3.tar.gz

  를

  C:\hadoop-2.7.3

  에 압축 해제




** standalone 테스트

  > cd C:\hadoop-2.7.3

  > mkdir input

  > cp etc/hadoop/*.xml input

  > bin\hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output "dfs[a-z.]+"

  > cat output/*


  참고 : http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html


  (윈도우에선 C:\tmp 를 사용)