ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker 로 Minio Storage 구현하기
    BigData 2024. 1. 12. 06:38
    728x90
    반응형

    - 목차

     

    들어가며.

    Docker Container 를 기반으로 Minio Storage 를 생성하는 방법에 대해서 알아보도록 하겠습니다.

     

    AWS S3 같은 Object Storage 는 Data-Lake 의 용도로 활용됩니다.

    그래서 Kafka-Connect, Spark, Flink 와 같은 데이터 프로세싱 어플리케이션에 의해서 DataSource, DataSink 의 타겟으로 활용됩니다.

    DataLake 를 구성하기 위한 첫단계로서 로컬 환경에서 Minio Storage 를 구성하는 방법에 대해서 알아보도록 하겠습니다.

     

    Minio Container 실행하기.

    Production 환경에서 bitnami 의 도커 이미지나 Helm Chart 가 흔히 사용됩니다.

    이번에서도 bitnami/minio 이미지를 사용해 볼 예정입니다.

    Docker Run Command.

    아래의 명령어는 Minio Docker Container 를 실행하기 위한 기본적인 형태입니다.

    환경변수를 통해서 Root User & Password 를 설정하여 Credential 정보를 생성하구요.

    Publish 옵션으로 9001, 9000 포트를 Forwarding 합니다.

     

    docker run --name minio -d \
    -e MINIO_ROOT_USER=ROOTUSER -e MINIO_ROOT_PASSWORD=123456789 \
    -p 9010:9000 -p 9001:9001 \
    bitnami/minio

     

    웹 브라우저에서 http://localhost:9001 URL 를 통하여 Minio Web Interface 에 접속이 가능합니다.

    환경변수로 설정한 사용자 정보를 입력하여 로그인할 수 있습니다.

     

     

     

    버킷 생성하기.

    AWS S3 와 같이 파일들을 관리하기 위해서 우선적으로 Bucket 을 생성해야합니다.

     

    http://localhost:9001 URL 로 접속한 Web UI 는 Buckets 페이지를 제공합니다.

    Buckets 페이지에서 버킷을 생성할 수 있습니다.

     

    Access Key 생성하기.

     

    Access Key 의 Policy 는 아래와 같이 Inline 형식으로 입력합니다.

    "test-bucket" 버킷에 데이터를 Write/Read 할 수 있도록 권한을 설정하였습니다.

     

    {
     "Version": "2012-10-17",
     "Statement": [
      {
       "Effect": "Allow",
       "Action": [
        "s3:GetBucketLocation",
        "s3:ListBucket",
        "s3:PutObject",
        "s3:GetObject"
       ],
       "Resource": [
        "arn:aws:s3:::test-bucket",
        "arn:aws:s3:::test-bucket/*"
       ]
      }
     ]
    }

     

     

    File 생성하기.

    아래 코드 예시는 생성된 Minio Bucket 에 File 을 생성하기 위한 Python 코드 예시입니다.

    boto3 라이브러리를 사용하였고, 생성한 Access Keys 의 정보를 사용합니다.

     

    import boto3
    from botocore.exceptions import NoCredentialsError
    
    minio_endpoint = "http://localhost:9010"
    access_key = "Qw0H8Gu6A2KE1PpG33gM"
    secret_key = "hFn1GtcNyFvaeVra7GCMNH9P7YSIdUWORNhNwsjf"
    bucket_name = "test-bucket"
    file_path = "test.txt"
    
    s3_client = boto3.client('s3', endpoint_url=minio_endpoint, aws_access_key_id=access_key,
                             aws_secret_access_key=secret_key, verify=False)
    
    try:
        s3_client.upload_file(file_path, bucket_name, "test.txt")
        print("File uploaded successfully!")
    
    except NoCredentialsError:
        print("Credentials not available")
    
    except Exception as e:
        print(f"Error: {e}")

     

    아래와 같이 파일이 생성된 것을 확인하실 수 있습니다.

     

     

     

     

    마치며.

    로컬 환경에서 간단하게 Data Lake 를 구현하기 위한 첫 단계로 Minio 에 대한 글을 작성하였습니다.

    읽어주셔서 감사합니다.

    반응형

    'BigData' 카테고리의 다른 글

    [Avro] Avro Schema 알아보기  (0) 2024.03.06
    Checksum 알아보기 (Data Integrity, 데이터 무결성, 체크섬)  (0) 2023.12.23
    ASCII 코드 알아보기  (2) 2023.12.22
    Trino 도커로 따라하기  (0) 2023.12.03
    Thrift 알아보기  (0) 2023.11.04
Designed by Tistory.