Windows에서 Hadoop 및 Spark 설치 및 실행

Windows에서 Hadoop 및 Spark 설치 및 실행


최근 Hadoop과 Spark(H/S)를 실행하고 생물 제약 업계를 위한 소프트웨어에 대한 개념 검증 테스트를 할 수 있는 새로운 대형 서버가 생겼습니다. Windows Server 2016/Windows 10에 H/S를 설치하고 실행하는 데 장애가 발생했습니다.나는 이 아파치 제품을 Windows cmd 알림부호에서 직접 설치하고 실행하는 방법을 한 걸음 한 걸음 기록했다. Linux 모방이 필요 없다.

Update 16 Dec 2019: Software version numbers have been updated and the text has been clarified.


소프트웨어 가져오기


첫 번째 단계는 자바, 하둡, 스파크를 다운로드하는 것이다.Spark는 최신 버전의 Java를 사용할 때 문제가 발생한 것 같아서 Java 8을 계속 사용하고 있습니다.
  • Java (using version: 8u230+)
  • Hadoop (using version: 3.1.3)
  • Spark (using version: 3.0.0 preview)
  • I can't guarantee that this guide works with newer versions of Java. Please try with Java 8 if you're having issues. Also, with the new Oracle licensing structure (2019+), you may need to create an Oracle account to download Java 8. To avoid this, simply download from AdoptOpenJDK instead.


    Java의 경우 AdoptOpenJDK HotSpot JVM의'Windows x64'버전(jdk8u232-b09)을 다운로드했습니다.Hadoop의 경우 v3.1.3의 바이너리 파일(hadoop-3.1.3.tar.gz);Spark의 경우 v3.0.0 "Apache Hadoop 2.7 이상 버전을 위해 사전 구축"(spark-3.0.0-preview-bin-hadoop2.7.tgz).이 점에서 말하자면, 나는 일반적으로 이 판본들을 hadoop-<version>spark-<version>이라고 부른다.이 강좌의 나머지 부분은 버전 번호로 바꾸십시오.

    Even though newer versions of Hadoop and Spark are currently available, there is a bug with Hadoop 3.2.1 on Windows that causes installation to fail. Until that patched version is available (3.3.0 or 3.1.4 or 3.2.2), you must use an earlier version of Hadoop on Windows.


    다음은 download 7-Zip에서 *gz파일을 추출합니다.두 번 추출해야 할 수도 있습니다. (한 번은 *gz에서 *.tar 파일로 이동하고 두 번째는 "untar"로 이동합니다.)추출 후(Hadoop 소요 시간) 모든 *.tar*gz 파일을 삭제할 수 있습니다.현재 다운로드 디렉터리에는 두 개의 디렉터리와 JDK 설치 프로그램이 있어야 합니다.

    위의 그림과 같이 Hadoop 디렉토리와 Spark 디렉토리에는 각각 LICENSE, NOTICEREADME 파일이 포함되어 있습니다.특정 버전의 Hadoop을 사용하면 다음과 같은 디렉터리 구조를 추출하고 얻을 수 있습니다
    C:\Users\<username>\Downloads\hadoop-<version>\hadoop-<version>\...
    
    ...이 경우 복사 및 붙여넣기를 통해 내부 hadoop-<version> 디렉터리의 내용을 외부 hadoop-<version> 디렉터리로 이동한 다음 내부 hadoop-<version> 디렉터리를 삭제합니다.예를 들어, LICENSE 파일의 경로는 다음과 같아야 합니다.
    C:\Users\<username>\Downloads\hadoop-<version>\LICENSE
    
    ...Spark 디렉토리와 유사합니다.

    WARNING: If you see a message like "Can not create symbolic link : A required privilege is not held by the client" in 7-Zip, you MUST run 7-Zip in Administrator Mode, then unzip the directories. If you skip these files, you may end up with a broken Hadoop installation.


    Spark 및 Hadoop 디렉토리를 C:\ 디렉토리로 이동합니다. 이 작업을 수행하려면 시스템에 관리자 권한이 있어야 할 수 있습니다.그런 다음 Java 설치 프로그램을 실행하지만 기본 C:\Program Files\AdoptOpenJDK\jdk-<version>\에서 C:\Java으로 대상 폴더를 변경합니다.(H/S는 이름에 공백을 포함하는 디렉토리에서 문제가 발생할 수 있습니다.)

    설치가 완료되면 Java *.msi 설치 프로그램을 제거할 수 있습니다.C:\HadoopC:\Spark이라는 두 개의 새 디렉터리를 만들고 hadoop-<version>spark-<version> 디렉터리를 각각 복사합니다.

    "이름이 너무 깁니다"형식의 경고를 받으면 이 파일들을 건너뛰십시오.이 파일은 *.html개에 불과하여 H/S를 실행하는 데 중요하지 않습니다.

    환경 변수 설정


    다음으로 우리는 환경 변수를 설정해야 한다.Control Panel > System and Security > System > Advanced System Settings > Environment Variables...으로 이동:

    ...다음 이름으로 새 시스템 변수(아래 상자)를 추가합니다.
  • JAVA_HOME --> C:\Java
  • HADOOP_HOME --> C:\Hadoop\hadoop-<version>
  • SPARK_HOME --> C:\Spark\spark-<version>
  • 다운로드한 Hadoop 및 Spark 버전에 따라 조정됩니다.
    그리고 Path을 편집하고 하단의 시스템 변수 상자에 \bin의 변수를 추가합니다(Hadoop에도 \sbin).
    echo %PATH%에서 cmd을 사용한다면, 사용자 경로가 %PATH 변수의 시스템 경로에 추가되었기 때문에 경로 중간 어딘가에서 이 세 디렉터리를 볼 수 있을 것입니다.현재 java -version, hdfs -versionspark-shell --version이 버전 번호로 되돌아오는지 확인해야 합니다. 아래와 같습니다.이것은 %PATH%에 올바르게 설치되어 추가되었음을 의미합니다.

    위의 명령을 경로에 공백이 있는 위치에서 실행하려고 하면 실패할 수 있습니다.예를 들어, 사용자 이름이 "Firstname Lastname"이고 Hadoop 버전을 확인하려고 하면 다음과 같은 오류 메시지가 나타날 수 있습니다.
    C:\Users\Firstname Lastname>hdfs -version
    Error: Could not find or load main class Lastname
    
    이 문제를 해결하려면 경로에 빈 칸이 없는 작업 디렉터리로 이동하십시오. (위의 화면 캡처에서 제가 한 것처럼)
    C:\Users\Firstname Lastname>cd ..
    
    C:\Users>hdfs -version
    openjdk version "1.8.0_232"
    OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_232-b09)
    OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.232-b09, mixed mode)
    

    Hadoop 구성


    다음은 %HADOOP_HOME%\etc\hadoop으로 이동하여 파일 core-site.xml을 편집(또는 만들기)하여 다음과 같이 보십시오.

    핵심 사이트.xml


    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
      </property>
    </configuration>
    
    같은 디렉토리에서 다음과 같이 mapred-site.xml을 편집(또는 작성)합니다.

    그려진 사이트입니다.xml


    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
      <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
      </property>
    </configuration>
    
    다음으로 hdfs-site.xml을 편집하거나 작성합니다.

    hdfs 사이트.xml


    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
      <property>
        <name>dfs.replication</name>
        <value>1</value>
      </property>
      <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///C:/Hadoop/hadoop-<version>/namenode</value>
      </property>
      <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///C:/Hadoop/hadoop-<version>/datanode</value>
      </property>
    </configuration>
    
    ...예, Windows에서 백슬래시를 사용하더라도 정슬래시여야 합니다.이것은 Hadoop이 이러한 파일 경로를 설명하는 방식 때문입니다.또한 <version>을 적절한 Hadoop 버전 번호로 교체해야 합니다.마지막으로 yarn-site.xml을 편집합니다. 내용은 다음과 같습니다.

    사선 현장.xml


    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
      </property>
      <property>
        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>  
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
      </property>
    </configuration>
    
    우리가 해야 할 마지막 일은 hdfs-site.xml에서 인용한 디렉터리를 만드는 것이다.

    패치 Hadoop


    현재 a patch created by and posted to GitHub by user cdarlint을 신청해야 합니다.(이 패치는 설치 중인 Hadoop 버전에 해당되지만 정확한 버전이 없으면 필요한 버전 이전 버전을 사용하십시오....이 경우 가능합니다.)%HADOOP_HOME%\bin 디렉터리(\bin.old 또는 유사한 디렉터리로 복사)를 백업한 다음 패치 파일 (상기git repo에서 다운로드한 것) 을 낡은 %HADOOP_HOME%\bin 디렉터리로 복사하여 새 파일로 이전 파일을 대체합니다.hdfs namenode -format에서 cmd을 실행하면 다음과 같이 표시됩니다.
    hadoop-yarn-server-timelineservice-<version>C:\Hadoop\hadoop-<version>\share\hadoop\yarn\timelineservice에서 C:\Hadoop\hadoop-<version>\share\hadoop\yarn으로 복사하는 일도 있습니다.(이것들은 3.1.3JAR 파일 이름과 디렉터리 이름 사이에 일치하지 않을 수 있는 짧은 버전 번호입니다.)

    HDFS 부트


    마지막으로 start-dfs.cmd에서 start-yarn.cmdcmd을 실행하여 HDFS를 부트할 수 있습니다.
    namenode 명령을 사용하여 datanode, resourcemanager, nodemanagerjps이 실행 중인지 확인해야 합니다.

    또한 새로운 Hadoop 분산 파일 시스템을 모니터링하기 위해 브라우저에서 localhost:8088localhost:9870을 열 수 있습니다.

    마지막으로 hadoop fs -mkdir /test을 실행하여 파일 시스템을 편집할 수 있는지 테스트합니다. 이것은 루트 디렉터리에 test이라는 디렉터리를 생성합니다.

    Hadoop 및 Spark 테스트


    HDFS에 디렉터리(fs -mkdir)를 만들고 그 내용(fs -ls)을 열거하는 방법을 알고 있습니다. 그러면 파일을 만들고 편집합니까?음, 파일은 fs -put을 통해 로컬 파일 시스템에서 HDFS로 복사할 수 있습니다.그리고 spark-shell을 사용하여 sc.textFile(...)의 파일을 읽을 수 있습니다.
    hdfs://localhost:9000/뿐만 아니라 hdfs://에서도 HDFS에서 파일을 읽을 수 있습니다.이것은 우리가 defaultFS에서 정의한 core-site.xml이기 때문이다.
    HDFS를 중지하려면 다음 명령을 실행합니다.
    C:\Users> stop-dfs.cmd
    
    화목하다
    C:\Users> stop-yarn.cmd
    
    자, 여기 있습니다!Spark는 Windows에서 실행되며 HDFS에 저장된 파일을 읽습니다.이것은 일을 해야만 시작할 수 있다. 나는 이전에 나와 같은 잘못을 저지른 사람을 만났거나 이전에 강좌를 작성한 사람을 만나서 매우 고맙다. 나는 이 강좌들을 본 연습의 틀로 사용한다.다음은 이 강좌를 구축하기 위한 블로그, GitHub repos 등의 게시물입니다.
  • Muhammad Bilal Yar's Hadoop 2.8.0 walkthrough
  • java.net.URISyntaxException
  • java.lang.UnsatisfiedLinkError
  • FATAL resourcemanager.ResourceManager
  • localhost:50070 error
  • Kuldeep Singh's walkthrough and troubleshooting guide
  • Jacek Laskowski's GitBook
  • java.io.IOException: Incompatible clusterIDs
  • HDFS basic commands
  • Spark basic commands
  • 좋은 웹페이지 즐겨찾기