ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Hadoop Edit Log 알아보기
    Hadoop 2023. 12. 4. 19:48
    728x90
    반응형

    - 목차



    소개.

    하둡의 네임노드는 기본적으로 in-memory 기반의 구조를 취합니다.

    대부분의 메타데이터를 in-memory 에서 관리합니다.

    이 말의 뜻은 메타데이터를 찾기 위해서 Disk 의 File 을 읽거나 쓰지 않는다는 의미이기도 합니다.  
    그래서 네임노드는 Edit Log 라는 버퍼를 사용하며 In-Memory 구조를 활용합니다.
    MySQL 데이터베이스가 Redo Log 와 BufferPool 이라는 두 구조를 가지는 것과 유사합니다.
     
    네임노드는 가능한 많은 양의 메타데이터들을 메모리에서 관리하려고 합니다.
    클라이언트가 특정 파일를 요청하면 메모리에 존재하는 메타데이터를 제공할 수 있습니다.
    만약 메모리에 존재하지 않는다면 (Cache Miss) 디스크에 존재하는 메타데이터를 조회하여 제공합니다.
    클라이언트가 특정 파일 수정 또는 삭제 요청을 한다면, 메모리에 존재하는 파일을 수정하거나 삭제합니다.
    네임노드는 최대한 많은 양의 메타데이터를 메모리에 유지하면서 빠른 처리 속도를 보장합니다.
    다만, 이러한 방식은 Recovery 관점에서 큰 문제가 있습니다.
    메모리를 휘발되기 때문이죠.
     
    따라서 데이터의 영구성, 데이터 처리를 위한 버퍼 등의 목적으로 Edit Log 라는 것이 사용됩니다.

     

    Hadoop Cluster 간단히 실행해보기.

    Edit Log 에 대해서 자세히 알아보기 위하여

    Docker 를 활용하여 NameNode 와 DataNode 를 실행해보려고 합니다.

    아래 커맨드를 실행하면 Docker-Compose 를 기반으로 하나의 NameNode 와 DataNode 가 실행됩니다.

    cat <<EOF> /tmp/hadoop_config
    HDFS-SITE.XML_dfs.namenode.rpc-address=namenode:8020
    HDFS-SITE.XML_dfs.replication=1
    HDFS-SITE.XML_dfs.namenode.name.dir=/opt/hadoop
    EOF
    
    cat <<EOF> /tmp/hadoop-docker-compose.yaml
    version: "2"
    services:
       namenode:
          platform: linux/amd64
          container_name: namenode
          image: apache/hadoop:3
          hostname: namenode
          command: ["/bin/bash", "-c", "hdfs namenode"]
          ports:
            - 9870:9870
            - 8020:8020
          env_file:
            - /tmp/hadoop_config
          networks:
            - hadoop
          volumes:
            - namenode:/hadoop/dfs/data
       datanode:
          platform: linux/amd64   
          container_name: datanode
          depends_on:
            - namenode
          image: apache/hadoop:3
          command: ["/bin/bash", "-c", "hdfs datanode"]
          env_file:
            - /tmp/hadoop_config 
          networks:
            - hadoop
          volumes:
            - datanode:/hadoop/dfs/data
    networks:
      hadoop:
        driver: bridge
        enable_ipv6: false
    volumes:
      namenode:
      datanode:
    EOF
    
    docker-compose -f /tmp/hadoop-docker-compose.yaml --project-name=hadoop up -d

     

    실행되는 Docker-Compose 의 이미지는 아래와 같구요.

    완전히 실행되는데에 대략 2분 정보 소요되는 것 같네요.

     

     

    Edit Log 란.

    Edit Log 는 다른 생태계의 Redo Log, WAL Log (Write-Ahead Log) 와 유사합니다.
    기능적으로는 동일하게 사용됩니다.
    모든 Write, Update, Delete 처리에 대한 요청들은 Edit Log 에 쌓이게 됩니다.
    Edit Log 에 모든 Edit 요청들이 쌓이게 되구요.

     

    Edit Log 의 저장 위치.

     

    Edit Log 가 저장되는 위치 정보는 hdfs-site.xml 에 설정됩니다.
    그 내부에 dfs.namenode.edits.dir 이라는 key 의 value 로 설정되는데요.
    아래와 같이 설정되어 있습니다.
     
    < hdfs-site.xml >

    <property>
      <name>dfs.namenode.edits.dir</name>
      <value>/var/log/hadoop</value>
    </property>

     
    또는 환경변수를 통해서 조회할 수 있습니다.
    환경 변수의 이름은 HADOOP_LOG_DIR 입니다.

    echo $HADOOP_LOG_DIR
    
    /var/log/hadoop

     

     
     

    반응형

    'Hadoop' 카테고리의 다른 글

    Hadoop DataNode 알아보기  (0) 2023.12.12
    Hadoop fsimage 알아보기  (0) 2023.12.11
    Hadoop Namespace 알아보기  (0) 2023.12.04
    Hadoop Block 알아보기  (0) 2023.11.27
    [Hadoop] Docker 로 Hadoop Cluster 실행하기 ( docker-compose )  (0) 2021.12.15
Designed by Tistory.