Ubuntu 20.04에서 Hadoop을 독립 실행형으로 설치하는 방법

Ubuntu 20.04에서 Hadoop을 독립 실행형으로 설치하는 방법

2022-05-31 last update

12 minutes reading Ubuntu 20.04 Big Data Clustering Ubuntu

소개


Hadoop은 Java 기반의 프로그래밍 프레임워크로 저렴한 기계 집단에서 초대형 데이터 집합을 처리하고 저장하는 것을 지원한다.이것은 빅데이터 분야의 첫 번째 대형 개원 프로젝트로 아파치 소프트웨어 기금회가 협찬한다.
Hadoop은 네 개의 주요 레이어로 구성됩니다.
  • Hadoop Common은 다른 Hadoop 모듈을 지원하는 유틸리티와 라이브러리의 집합입니다.
  • HDFS는 Hadoop 분산 파일 시스템을 대표하여 데이터를 디스크에 오래 지속시키는 것을 책임진다.
  • 사선은 또 다른 자원 협상자의 약칭으로 HDFS의'운영체제'이다.
  • MapReduce는 Hadoop 클러스터의 원본 처리 모델입니다.그것은 집단이나 맵에서 작업을 분배한 후에 노드의 결과를 조직하여 조회에 대한 응답으로 줄인다.많은 다른 처리 모델은 3에 사용할 수 있다.Hadoop의 x 버전입니다.
  • Hadoop 집단의 설정이 상대적으로 복잡하기 때문에 이 프로젝트는 Hadoop을 배우고 간단한 조작과 디버깅을 실행하기에 적합한 독립적인 모델을 포함한다.
    이 강좌에서 Hadoop을 독립 모드로 설치하고 예시 MapReduce 프로그램을 실행하여 설치를 검증합니다.

    선결 조건


    본 강좌를 배우려면 다음이 필요합니다.
  • 권한이 있는 비루트 사용자의 Ubuntu 20.04 서버: Initial Server Setup with Ubuntu 20.04 안내서에서 권한이 있는 사용자를 설정하는 방법에 대한 자세한 정보를 확인할 수 있습니다.
  • 또는An Introduction to Big Data Concepts and Terminology 또는An Introduction to Hadoop
    전제 조건이 완료되면 sudo 사용자로 로그인하여 시작합니다.

    1단계 - Java 설치


    우선 패키지 목록을 업데이트하고 OpenJDK를 설치해야 합니다. 이것은 Ubuntu 20.04의 기본 Java 개발 패키지입니다.
    1. sudo apt update
    2. sudo apt install default-jdk
    설치가 완료되면 버전을 확인하겠습니다.
    1. java -version
    Output
    openjdk version "11.0.13" 2021-10-19 OpenJDK Runtime Environment (build 11.0.13+8-Ubuntu-0ubuntu1.20.04) OpenJDK 64-Bit Server VM (build 11.0.13+8-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)
    이 출력은 OpenJDK가 성공적으로 설치되었는지 확인합니다.

    2단계 - Hadoop 설치


    Java가 있으면 최신 안정적인 버전을 찾기 위해 Apache Hadoop Releases page 에 액세스합니다.
    설치할 버전의 바이너리 파일로 이동합니다.이 안내서에는 Hadoop 3.3.1이 설치되지만 이 안내서의 버전 번호를 바꿀 버전 중 하나를 선택할 수 있습니다.

    다음 페이지에서 마우스 오른쪽 버튼을 클릭하고 링크를 게시 바이너리 파일로 복사합니다.

    서버에서 다음을 수행하려면 sudo 을 사용하십시오.
    1. wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
    참고: Apache 웹 사이트는 최적의 미러를 찾을 수 있도록 동적으로 안내하므로 위의 URL과 일치하지 않을 수 있습니다.
    다운로드한 파일이 변경되지 않았는지 확인하기 위해 SHA-512 또는 보안 해시 알고리즘 512를 사용하여 빠른 검사를 진행합니다.releases page로 돌아가서 마우스 오른쪽 버튼을 클릭하고 다운로드한 버전 바이너리 파일의 검증 및 파일에 링크를 복사합니다.

    마찬가지로 우리 서버에서 wget 파일을 다운로드합니다.
    1. wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz.sha512
    그런 다음 검증을 실행합니다.
    1. shasum -a 512 hadoop-3.3.1.tar.gz
    Output
    2fd0bf74852c797dc864f373ec82ffaa1e98706b309b30d1effa91ac399b477e1accc1ee74d4ccbb1db7da1c5c541b72e4a834f131a99f2814b030fbd043df66 hadoop-3.3.1.tar.gz
    이 값을 wget 파일의 SHA-512 값과 비교합니다.
    1. cat hadoop-3.3.1.tar.gz.sha512
    ~/hadoop-3.3.1.타르광저우sha512
    ...
    SHA512 (hadoop-3.3.1.tar.gz) = 2fd0bf74852c797dc864f373ec82ffaa1e98706b309b30d1effa91ac399b477e1accc1ee74d4ccbb1db7da1c5c541b72e4a834f131a99f2814b030fbd043df66
    ...
    
    미러에서 다운로드한 파일에 대해 실행되는 명령의 출력은 에서 다운로드한 파일apache.org의 값과 일치해야 합니다.
    현재 파일이 손상되거나 변경되지 않았는지 확인하여 추출할 수 있습니다.
    1. tar -xzvf hadoop-3.3.1.tar.gz
    .sha512 로고가 있는 tar 명령을 사용하여 추출하고, -x 압축을 풀고, -z 상세한 출력을 하고, -v 파일에서 추출할 것을 지정합니다.
    마지막으로 추출한 파일을 로컬 설치 소프트웨어의 적절한 위치로 이동합니다.
    1. sudo mv hadoop-3.3.1 /usr/local/hadoop
    소프트웨어가 자리를 잡으면 환경을 설정할 수 있습니다.

    3단계 - Hadoop의 Java 홈 페이지 구성


    Hadoop에서는 환경 변수 또는 Hadoop 구성 파일에 설정할 수 있는 Java로 경로를 설정해야 합니다.
    Java를 가리키는 경로 -f/usr/local 를 가리키는 기호 링크이며, 기본 Java 바이너리 파일을 가리키는 기호 링크입니다./usr/bin/java/etc/alternatives/java 로고를 사용하여 경로의 각 부분에 있는 각 기호 링크를 추적합니다.그리고 readlink 출력에서 -f 클립을 사용하여 sed 의 정확한 값을 얻을 수 있습니다.
    기본 Java 경로 찾기
    1. readlink -f /usr/bin/java | sed "s:bin/java::"
    Output
    /usr/lib/jvm/java-11-openjdk-amd64/
    이 출력을 복사하여 Hadoop의 Java home을 이 특정 버전으로 설정할 수 있습니다. 기본 Java가 변경되면 이 값이 변경되지 않습니다.또는 Hadoop에서 시스템 기본값으로 설정된 모든 Java 버전을 자동으로 사용할 수 있도록 파일에서 동적으로 bin/java 명령을 사용할 수 있습니다.
    시작하려면 열기 JAVA_HOME:
    1. sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh
    그런 다음 다음 다음 옵션 중 하나를 선택하여 파일을 수정합니다.

    옵션 1: 정적 값 설정


    /usr/local/hadoop/etc/hadoop/hadoop-env.상해
     . . .
    #export JAVA_HOME=
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
     . . .
    

    옵션 2: Readlink 동적 설정 값 사용


    /usr/local/hadoop/etc/hadoop/hadoop-env.상해
     . . .
    #export JAVA_HOME=
    export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
     . . .
    
    이러한 행을 찾을 수 없으면 readlink 를 사용하여 텍스트를 빠르게 검색합니다.완료되면 를 사용하여 파일을 종료하고 저장합니다.
    참고 Hadoop의 경우 hadoop-env.shCTRL+W 값이 환경이나 사용자 프로필에 설정된 값을 덮어씁니다.

    단계 4 - Hadoop 실행


    이제 Hadoop을 실행할 수 있습니다.
    1. /usr/local/hadoop/bin/hadoop
    Output
    Usage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS] or hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS] where CLASSNAME is a user-provided Java class OPTIONS is none or any of: --config dir Hadoop config directory --debug turn on shell script debug mode --help usage information buildpaths attempt to add class files from build tree hostnames list[,of,host,names] hosts to use in slave mode hosts filename list of hosts to use in slave mode loglevel level set the log4j level for this command workers turn on worker mode SUBCOMMAND is one of: . . .
    이 출력은 Hadoop을 독립 모드에서 실행하도록 성공적으로 설정했음을 의미합니다.
    Hadoop과 함께 제공되는 예시 MapReduce 프로그램을 실행하면 Hadoop이 정상적으로 작동하는지 확인할 수 있습니다.이를 위해 홈 디렉터리에 CTRL+X 라는 디렉터리를 만들고 Hadoop의 프로필을 복사해서 이 파일들을 우리의 데이터로 사용합니다.
    1. mkdir ~/input
    2. cp /usr/local/hadoop/etc/hadoop/*.xml ~/input
    다음 명령을 사용하여 Java 아카이브의 여러 옵션인 MapReduceJAVA_HOME 프로그램을 실행할 수 있습니다.
    1. /usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep ~/input ~/grep_example 'allowed[.]*'
    이것은 hadoop-env.sh 프로그램을 호출합니다. 이 프로그램은 /etc/profile에 포함된 여러 가지 예시 중 하나입니다. 그 다음에 입력 디렉터리 input 와 출력 디렉터리 hadoop-mapreduce-examples 를 호출합니다.맵Reduce grep 프로그램은 문자나 정규 표현식의 일치 항목을 통계합니다.마지막으로 정규 표현식grep을 주어 단어hadoop-mapreduce-examples가 진술문이나 진술문 끝에 나타나는 상황을 찾아낸다.이 표현식은 대소문자를 구분하기 때문에 문장 첫머리에 대문자를 쓰면 단어를 찾을 수 없습니다.
    작업이 완료되면 처리된 내용과 오류가 발생한 요약을 제공하지만 실제 결과는 포함되지 않습니다.
    Output
    . . . File System Counters FILE: Number of bytes read=1200956 FILE: Number of bytes written=3656025 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 Map-Reduce Framework Map input records=2 Map output records=2 Map output bytes=33 Map output materialized bytes=43 Input split bytes=114 Combine input records=0 Combine output records=0 Reduce input groups=2 Reduce shuffle bytes=43 Reduce input records=2 Reduce output records=2 Spilled Records=4 Shuffled Maps =1 Failed Shuffles=0 Merged Map outputs=1 GC time elapsed (ms)=41 Total committed heap usage (bytes)=403800064 Shuffle Errors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 File Input Format Counters Bytes Read=147 File Output Format Counters Bytes Written=34
    참고: 출력 디렉터리가 이미 존재하면 프로그램이 실패하고 요약이 보이지 않으며 출력은 다음과 같습니다.
    Output
    . . . at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.apache.hadoop.util.RunJar.run(RunJar.java:244) at org.apache.hadoop.util.RunJar.main(RunJar.java:158)
    결과는 출력 디렉터리에 저장되며, 출력 디렉터리에서 실행됩니다input.
    1. cat ~/grep_example/*
    Output
    22 allowed. 1 allowed
    맵리덕스 미션에서 이 단어가 19회grep_example나 나온 뒤 한 문장과 한 번도 나타나지 않았다.실행 예시 프로그램은 우리의 단기 설치가 정상적으로 작동하고 시스템의 비특권 사용자가Hadoop을 실행하여 탐색이나 디버깅을 할 수 있음을 검증했다.

    결론


    이 강좌에서 Hadoop을 독립 모드로 설치하고 실행하는 예시 프로그램을 통해 검증했습니다.맵Reduce 프로그램을 작성하는 방법을 알아보려면 아파치 Hadoop MapReduce tutorial 에 접근해야 할 수도 있습니다. 이 프로그램은 예시 뒤에 있는 코드를 훑어볼 수 있습니다.클러스터를 설정할 준비가 되면 Apache FoundationHadoop Cluster Setup 안내서를 참조하십시오.
    독립된 집단이 아니라 완전한 집단을 배치하려면 How To Spin Up a Hadoop Cluster with DigitalOcean Droplets 을 참조하십시오.