hadoop standalone 설치

Volc·2023년 7월 14일
0

hadoop

목록 보기
1/2

java 설치

  • 다음 명령어로 java 1.8 버전을 설치합니다.
    yum install java-1.8.0-openjdk-devel.x86_64 -y
  • java가 정상적으로 설치되었는지 확인
    java -version

hadoop 설치

  • hadoop을 설치할 경로로 가줍니다.
  • 저는 "/opt" 경로에 hadoop 폴더를 만들어 진행하였습니다.
    cd /opt
    mkdir hadoop
    cd hadoop
  • hadoop 3.3.3 버전을 설치해줍니다.
    wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.3/hadoop-3.3.3.tar.gz

    https://hadoop.apache.org/release/ 에서 여러 버전을 다운 받을 수 있다.

  • 압축을 해제합니다.
    tar -xzf hadoop-3.3.3.tar.gz

hadoop 계정 생성

  • hadoop을 사용할 linux 계정을 생성합니다.
    adduser lyk
  • 계정 비빌번호를 설정합니다.
    passwd lyk
  • sudo 명령어를 사용할 수 있게 권한을 줍니다.
    usermod -aG wheel lyk
  • 이전에 만든 hadoop 디렉토리 권한을 hadoop 계정으로 변경합니다.
    sudo chown -R lyk:lyk /opt/hadoop
  • 새로 만든 계정으로 로그인 하여 진행합니다.
    su lyk

SSH 설정

  • localhost로 ssh가 접속이 되는지 확인한다.

    ssh localhost
  • ssh key를 생성해준다.

    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

    ssh key는 비밀번호보다 보안이 좋으며 서버간 접속 시 로그인을 하지 않아도 되기 때문에 생성한다.

    -t 옵션은 무슨 알고리즘으로 key를 생성할건지를 뜻한다. 여기서는 rsa 알고리즘으로 생성한다.

    -p 옵션은 passphrase라고 private key를 보호하기 위한 추가적인 옵션이지만 여기서는 필요없으므로 비워둔다.

    -f 옵션은 key 파일을 어디에 무슨 이름으로 할지에 대한 옵션이다.

    id_rsa는 private key로 절대 노출하면 안된다.

  • ssh의 public key를 authorized_keys에 추가해준다.

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    authorized_keys는 원격 호스트에 로그인 하도록 허용된 사용자를 인증하는 데 사용되는 키를 저장하는 곳이다. 즉, client들의 공개키가 저장되는 곳이다.

  • owner만 읽고 쓸 수 있게 권한을 변경해준다.

    chmod 0600 ~/.ssh/authorized_keys

환경 변수 설정

  • java의 위치를 찾아준다.
    sudo update-alternatives --config java
  • 출력된 경로를 복사하여 bashrc 파일을 연다.
    vim ~/.bashrc
  • bashrc 파일에 다음과 같이 환경변수를 설정해준다.
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.372.b07-1.el7_9.x86_64
    export HADOOP_HOME=/opt/hadoop/hadoop-3.3.3
    export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
  • 변경된 bashrc가 갱신되도록 한다.
    source ~/.bashrc

Hadoop 설정

  • hadoop 설정 파일들이 있는 directory로 이동한다.

    cd $HADOOP_CONFIG_HOME
  • core-site.xml을 다음과 같이 수정해준다.

    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
    </configuration>

    uri 형식으로 입력하여 기본 파일 시스템 이름을 설정해준다.

    datanode들은 이 uri로 hearbeat를 보낸다.

  • hdfs-site.xml을 다음과 같이 수정해준다.

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>/opt/hadoop/data/namenode</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>/opt/hadoop/data/datanode</value>
        </property>
    </configuration>

    dfs.replication은 파일이 생성될 때 복제 개수를 나타낸다.

    dfs.namnode.name.dir은 namenode의 hdfs 파일시스템의 메타데이터를 저장하는 경로설정이다.

    dfs.datanode.data.dir은 datanode의 hdfs 블록을 저장하는 경로의 목록이다.

  • yarn-site.xml을 수정해준다.

    <configuration>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop-master</value>
        </property>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <property>
            <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
            <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
            <name>yarn.resourcemanager.webapp.address</name>
            <value>0.0.0.0:8088</value>
        </property>
    </configuration>

    yarn.resourcemanager.hostname은 resourcemanager의 hostname을 설정하여 모든 노드가 올바른 리소스 매니저와 통신할 수 있도록 하기 위함이다.

    yarn.nodemanager.aux-services는 yarn 노드 매니저에서 실행되는 보조 서비스(auxiliary services)를 정의하는데 사용된다. 여기서는 보조 서비스로 MapReduce Shuffle 서비스를 활성화 한 것이며 MapReduce 작업의 데이터 전송을 지원한다. 이를 통해 맵 태스크와 리듀스 태스크 간의 데이터 이동을 최적화하고, MapReduce 작업의 성능을 향상시킬 수 있다.

    yarn.nodemanager.aux-services.mapreduce_shuffle.class는 yarn 노드 매니저 설정에서 MapReduce ShuffleHandler를 구현한 Java 클래스를 지정한다. ShuffleHandler 클래스는 map 태스크로부터 중간 결과를 수신하여 메모리나 디스크에 저장하고 reudce 태스크가 요청하는 데이터를 제공한다.

    yar.resourcemanager.webapp.address는 Resource Manager의 웹 애플리케이션 주소를 지정하는 구성 속성이다. 웹 애플리케이션을 통해 YARN 클러스의 리소스 매니저에 대한 상태 정보, 클러스터 메트릭, 실행 중인 애플리케이션 등을 모니터링 할 수 있다.

  • mapred-site.xml을 설정해준다.

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <property>
            <name>yarn.app.mapreduce.am.env</name>
            <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
        </property>
        <property>
            <name>mapreduce.map.env</name>
            <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
        </property>
        <property>
            <name>mapreduce.reduce.env</name>
            <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
        </property>
        <property>
            <name>mapred.job.tracker</name>
            <value>hadoop-master:9001</value>
        </property>
    </configuration>

    mapreduce.framework.name은 MapReduce 작업을 실행하기 위해 사용할 프레임워크를 지정한다. 일반적으로 yarn이 사용되며 yarn은 hadoop 클러스터에서 리소스 관리와 작업 스케줄링을 담당하는 컴포넌트이다. 다른 값으로는 local이 있으며 이는Hadoop 클러스터 외부에서 독립적으로 실행되는 로컬 환경에서 MapReduce 작업을 실행함을 의미한다. 주로 개발 및 테스트 목적으로 사용되는 작은 규모의 데이터셋에 적합하다.

    yarn.app.mapreduce.am.env는 yarn MapReudce ApplicationMaster의 환경 변수를 설정하는 속성이다. 이 속성을 사용하여 MapReduce 애플리케이션의 ApplicationMaster에 전달되는 환경 변수를 지정할 수 있다. 여기서는 Hadoop MapReduce의 홈 디렉토리를 설정해주었다. ApplicationMaster는 이 값을 참조하여 해당 디렉토리에서 필요한 파일 및 설정을 참조할 수 있다.

    mapreduce.map.env는 MapReduce 작업의 맵 태스크에 대한 환경 변수를 설정하는 구성 속성이다.

    mapreduce.reduce.env는 MapReduce 작업의 리듀스 태스크에 대한 환경 변수를 설정하는 구성 속성이다.

    mapred.job.tracker는 JobTracker의 주소를 지정하는 속성이다. 현재는 JobTracker 대신 YARN으로 대체되어 필요하지 않다.

hadoop 실행

  • Hadoop 실행을 하기 위해 namenode와 datanode 폴더를 만들어둔다.

    cd /opt/hadoop
    
    mkdir data
    
    cd data
    
    mkdir namenode
    
    mkdir datanode
  • 네트워크 호스트 이름과 IP 주소의 매핑 정보를 추가해준다.

    vim /etc/hosts
    
    10.250.xxx.xx hadoop-master
  • hostname을 바꿔준다.

    vim /etc/hostname
    
    hadoop-master
  • 재시작을 하여 hostname을 변경 시켜준다.

    reboot -p
  • HDFS의 네임노드를 포맷한다.

    hdfs namenode -format

    namenode를 초기화하고 hdfs의 파일 시스템 메타데이터를 새로 생성하는 작업을 수행한다. 기존의 파일 시스템 데이터와 메타데이터가 삭제되고 새로운 namenode 포맷이 수행된다. 실제 운용 환경에서는 사용되지 않아야 하며 실행하기 전 백업이나 기타 필요한 조치를 취하고 주의하여 사용해야 한다.

  • hadoop을 실행시킨다.

    start-dfs.sh
    start-yarn.sh
  • jps 명령어를 아래 5가지의 job들이 나오면 성공이다.

    • ResourceManager
    • Datanode
    • NodeManager
    • NameNode
    • SecondaryNameNode
  • 10.250.xxx.xx:9870을 들어가 datanode들이 live로 잘 떠 있는지 확인한다.

참고 사이트

SSH key

SSH key 인증 과정

hadoop 설정값 description

Hadoop 설정

도커에서 Hadoop 구성하기

Hadoop 설치하기

Apache Hadaoop

profile
미래를 생각하는 개발자

0개의 댓글