분류 전체보기 1187

[AWS] S3 - 멀티파트 업로드/다운로드

멀티파트 업로드기본적으로 S3에 단일 작업으로 업로드할 수 있는 객체의 크기는 최대 5GB이다. 만약 5GB를 초과하는 객체를 업로드해야 한다면 멀티파트 업로드 기능을 사용해야 하는데. 멀티파트 업로드 기능이란 하나의 대용량 파일을 여러 개의 부분으로 나눠 업로드하는 기능이다. 일반적으로 객체 크기가 100MB를 넘으면 멀티파트 업로드를 권장한다. 멀티파트 업로드를 이용하면 최대 5TB의 객체를 업로드할 수 있고, 큰 객체를 여러 조각으로 나눠 병렬 처리할 수 있어 빠르게 업로드할 수 있다.다만 객체의 일부분만 업로드된 경우에는 객체가 S3에 표시되지 않는다. 하지만 용량을 차지하고 있기 때문에 비용이 발생하므로 수명주기 규칙 등을 활용해 삭제해 주는 등의 관리가 필요하다.  cli를 이용한 멀티파트 업..

AWS 2023.07.27

[Linux] rsync - 특정 디렉터리 제외하고 복사

개요 데이터 복사를 해야 하는데 저장 공간이 조금 부족해서 불필요한 경로는 제외하고 복사하려고 한다. 방법을 적어둔다. rsync rsync 명령은 cp와 비슷한 파일 복사 도구로, 서로 다른 두 개의 시스템 간에 파일과 디렉터리를 동기화하기 위해 사용한다. 즉, 파일의 타임스탬프와 크기를 검사하여 변경이 발생한 파일만 복사한다. 또 로컬 복사도 할 수 있지만 SSH를 통한 원격 복사도 할 수 있다. 즉, scp처럼 사용할 수도 있다. rsync [OPTION...] SRC... [DEST] 소스 경로만 지정하는 경우, 파일을 나열한다. 특정 디렉터리 제외하고 복사 복사에서 특정 디렉터리를 제외하고 싶을 때는 다음과 같이 사용한다. rsync -avz --exclude SRC DEST # -a : 아카이..

Linux 2023.07.26

[MySQL] 일반 사용자 비밀번호 변경

개요 DBA로부터 애플리케이션 서비스용 MySQL 계정을 발급받았는데 초기 비밀번호가 임의로 생성한 비밀번호인지 기억하기 힘든 조합으로 되어있다. 비밀번호를 변경해서 사용해도 된다고 하니 직접 변경을 해보려고 한다. MySQL 버전은 8.0.32이다. SET PASSWORD SET PASSWORD문은 MySQL 사용자 계정에 암호를 할당한다. 암호는 명시적으로 지정하거나 MySQL에 의해 임의로 생성할 수 있다. 비밀번호를 변경할 때 REPLACE절을 사용해 현재 암호를 확인하거나 RETAIN절로 보조 암호를 관리할 수 도 있다. SET PASSWORD [FOR user] auth_option [REPLACE 'current_auth_string'] [RETAIN CURRENT PASSWORD] auth..

Database 2023.07.25

[Python] heapq - 크거나 작은 n개 데이터 추출

개요 2022.03.20 - [heapq] 최소 힙, 최대 힙 글에서 최소 힙을 제공하는 heapq 라이브러리를 살펴봤다. 위 글에서는 최솟값을 읽거나, 리스트를 heap으로 변경하는 방법을 확인했는데, heap에서 큰 값부터 n개 데이터 또는 작은 값부터 n개 데이터를 얻고 싶다. 방법을 적어둔다. nlargest - 큰 값부터 n개 값 얻기 iterable에 의해 정의된 데이터에서 가장 큰 n개 요소를 반환한다. heapq.nlargest(n, iterable, key=None) 예로 들어 0부터 10까지의 데이터에서 큰 값 세 개를 얻고 싶다면 다음과 같이 사용할 수 있다. import heapq n = 3 data = range(10) heapq.nlargest(n, data) nsmallest ..

Python 2023.07.24

[프로그래머스] 콜라 문제

문제 https://school.programmers.co.kr/learn/courses/30/lessons/132267 다음과 같은 콜라 문제가 있다. 콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가? 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다. 상빈이는 그림과 같은 방법으로 콜라 문제를 풀어냈다. 빈 콜라병 20병을 가져가서 10병을 받는다. 받은 10병을 비우고 5병을 받는다. 5병 중 4병을 비우고 2병을 받고, 또 2병을 비우고 1병을 받는다. 받은 1병과 5병을 받았을 때 남은 1병을 비워서 1병을 또 받는다. 따라서 총 10 + 5 + 2 + 1 + 1 = 19병의 콜라를 받는다. 만약 빈 병 a개를 가져다..

Algorithm 2023.07.21

[grep] 검색 시 특정 디렉터리 제외

개요 2021.07.17 - grep - 디렉터리에서 키워드를 포함한 파일 찾기 2022.03.03 - [grep] 대소문자 구분 없이 문자열 찾기 2022.03.04 - [grep] 특정 문자열 제외 위 글에 이어서 grep 사용 예시를 하나 더 적어둔다. grep -r 옵션을 이용해 하위 디렉터리를 대상으로 검색을 수행할 때 특정 디렉터리는 검색에서 제외하고 싶다. 방법을 적어둔다. grep --exclude-dir grep 명령은 패턴과 일치하는 디렉터리를 제외하고 검색할 수 있도록 --exclude-dir 옵션을 제공한다. 단, -r 옵션과 함께 사용해야 한다. grep # -r, --recursive like --directories=recurse # -R, --dereference-recurs..

Linux 2023.07.20

[Airflow] Concurrency 설정

개요 Airflow로 많은 Dag와 Task를 동시에 병렬로 처리할 때는 Concurrency와 같은 설정은 서버 스펙이나 다른 요소를 고려하여 조정할 필요가 있다. Airflow는 처리량을 조정하기 위해 몇 가지 설정을 제공하는데 이 글에서는 관련 설정에 대해 정리해두려고 한다. 시스템 수준 설정 parallelism Airflow 스케쥴러 당 동시에 실행할 수 있는 최대 Task Instance 수. 기본값은 32이다. 즉, Airflow 스케쥴러 하나당 최대 32개의 Task 실행을 관리할 수 있다. max_active_runs_per_dag 각 Dag 당 실행할 수 있는 최대 Dag_run 수. 기본값은 16이다. max_active_runs_per_dag 값이 Dag 수준 설정인 max_acti..

Apache Airflow 2023.07.19

[Python] Docker SDK를 통한 도커 다루기

개요 2023.07.11 - [Airflow] DockerOperator를 살펴보면서 Python을 이용해 Docker를 다룰 수 있다는 것도 알게 되었다. 그렇다면 방법을 알아보는 게 인지상정……까지는 아니지만 궁금하니 간단히 정리해보려고 한다. Docker SDK for Python Docker SDK for Python은 Docker Engine API을 사용하기 위한 Python 라이브러리다. 컨테이너 실행이나 관리와 같은 docker 명령어로 할 수 있는 모든 작업을 Python 애플리케이션 내에서 수행할 수 있게 해 준다. 공식 문서 : https://docker-py.readthedocs.io/en/stable/# 라이브러리 설치 Docker SDK를 사용하기 위해서는 라이브러리 설치가 필요..

Python 2023.07.18

[Jenkins] 프로젝트에 여러 스케쥴 설정 걸기

개요 주기적으로 실행해야 하는 젠킨스 프로젝트가 있다. 기존에는 KST 기준 매주 화요일 오후 2시 (UTC 05시)에 동작해야 했는데, 스케쥴링 주기가 아래처럼 변경되었다. - KST 매주 화요일 오전 11시 (UTC 화요일 02시) - KST 매주 금요일 오전 8시 (UTC 목요일 23시) 한 프로젝트에 여러 스케쥴을 설정할 수 있나……? 확인해본다. 주기적 빌드(스케쥴링) 설정 Jenkins 프로젝트의 스케쥴링을 설정하는 방법은 다음과 같다. 1. 프로젝트 > 구성으로 접근 2. 빌드 유발 > Build periodically 체크 박스 선택 Build periodically를 선택하고 스케쥴 설정은 cron 형식으로 지정한다. 스케쥴링 추가 설정 보통 cron 형식의 스케쥴을 crontab에서 많..

Jenkins 2023.07.17

[Airflow] DockerOperator - Bind Mount

개요 2023.07.11 - [Airflow] DockerOperator 에서 살펴본 DockerOperator는 스케쥴링된 작업을 수행할 때 미리 구성해 둔 도커 이미지로 컨테이너를 생성하고, 컨테이너에서 작업을 수행한다. 각 작업이 동작하는데 필요한 환경이 다른 경우 의존성 문제를 해소하기 위해 많이 사용하는 것 같다. 그렇다면 DockerOperator로 실행한 컨테이너에서 작업이 동작하기 위한 소스 코드 등은 어떻게 전달해야 할까? Volume VS Bind Mount 2023.07.12 - [Docker] Volume 2023.07.13 - [Docker] Bind Mount 위 두 개 글에서 컨테이너 내에서 생성한 데이터를 호스트에 유지하거나 호스트의 데이터를 컨테이너에 전달하는 방식인 Vol..

Apache Airflow 2023.07.14