분류 전체보기 1191

[python3] venv 사용

venv 2021.06.25 - [CentOS 7] virtualenv 설치 및 사용 에서 소개한 virtualenv와 동일한 기능을 하는 python 가상 환경. pip로 설치해야 하는 virtualenv와 다르게 python3.4부터 표준 배포판에 내장되어 있어 별도로 설치할 필요가 없다…… 고 한다. 설치 다만 Ubuntu의 경우, 아래의 명령어로 설치를 수행해야 정상적으로 가상 환경이 생성되었다. 😅 apt install python3-venv 가상 환경 생성 venv는 python3 -m 옵션을 사용해 생성할 수 있다. python3 -m venv ./ # 예시 python3 -m venv ./airflow 지정한 경로에 가상환경이 생성된다. 경로명이 가상 환경의 이름이 된다. 가상 환경 활성화..

Python 2022.07.21

[Ubuntu/virtualenv] AttributeError: module 'virtualenv.create.via_global_ref.builtin.cpython.mac_os' has no attribute 'CPython2macOsArmFramework'

현상 Ubuntu 20.04 LTS에서 python virtualenv를 이용해 가상환경을 구성하려고 한다. pip도 설치되어 있지 않은 빈 OS 상태였기 때문에 아래와 같이 virtualenv 설치를 진행했다. # root 계정으로 전환 sudo -i # 패키지 저장소 업데이트 apt update # python3 pip 설치 apt install python3-pip # virtualenv 설치 pip install virtualenv # 설치 확인 pip list 설치 확인 시 아래와 같이 설치된 모습을 확인했다. 하지만 가상 환경 생성을 시도했을 때 명령어를 찾지 못해 다시 패키지를 설치하라는 안내가 출력되었다. 따라서 안내된 명령어로 다시 python virtualenv 설치했다. 그리고 아래와..

Linux 2022.07.20

DAG

DAG 비순환 방향 그래프; Directed Acyclic Graph 순환을 포함하지 않은 방향 그래프 \( e = (u, v) \)라면, \( e \)를 \( u \)에서 \( v \)로 가는 변이라고 한다. 꼭짓점 \( v \)는 변 \( e \)의 머리라고 하며, 꼭지점 \( u \)는 변 \( e \)의 꼬리라고 한다. 위상 정렬 Topological Sorting 변 (u, v)들에 대해 u가 v 전에 선행하도록 나열한 꼭짓점의 선행 정렬 즉, 그래프의 방향성을 거스르지 않고 꼭짓점을 나열한 것이다. 아래 그림과 같이 나열한 것은 위상 정렬에 해당하지 않다. 하나의 방향 그래프는 여러 개의 위상 정렬을 가질 수 있다. 꼭짓점의 순서는 왼쪽에서 오른쪽 방향으로 진행한다. 정렬 과정은 아래 그림과 ..

자료구조 2022.07.19

Apache Airflow란?

Apache Airflow 프로그래밍 방식으로 워크플로우(일련의 작업의 흐름)를 작성, 예약 및 모니터링하는 오픈 소스 플랫폼 작업을 정확한 시간에, 정확한 방법으로, 정확한 순서대로 실행하게 해주는 오케스트레이터 에어비엔비에서 개발했으며, Apache 인큐베이터 프로젝트로 선정된 지 3년 만에 탑 레벨 프로젝트로 선정되었다. 장점 Dynamic Data Pipeline 데이터 파이프라인을 정의하는데 Python을 이용한다. 따라서 Python으로 가능한 대부분의 작업을 Airflow 파이프라인에서 처리할 수 있으며, 동적인 구성이 가능하다. Scalability Airflow는 확장성이 뛰어나다. 다양한 task를 병렬적으로 실행할 수 있으며, 쿠버네티스 클러스터, 분산 클러스터 환경에서 파이프라이닝이..

Apache Airflow 2022.07.18

[MySQL] SQL Error [1136] [21S01]: Column count doesn't match value count at row 1

Column count doesn't match value count at row 1 대개 테이블에 데이터를 추가할 때 발생하는 에러로, 추가할 데이터의 컬럼 수와 테이블의 컬럼 수가 다르거나 데이터 타입이 다를 때 발생한다. 예시 아래와 같은 스키마를 가진 docs 테이블이 있다고 하자. CREATE TABLE IF NOT EXISTS `docs` ( `id` int(6) unsigned NOT NULL, `rev` int(3) unsigned NOT NULL, `content` varchar(200) NOT NULL, PRIMARY KEY (`id`,`rev`) ) DEFAULT CHARSET=utf8; 이 테이블에 아래의 INSERT 명령을 실행하면, 에러가 발생하는 것을 알 수 있다. INSERT..

Database 2022.07.17

[Shell Script] Pattern Matching

Pattern Matching *, ?, [ ]와 같은 glob 문자를 이용한 패턴 매칭은 파일명 매칭, case 문, 매개변수 확장 등과 같이 쉘 스크립트 전반에서 사용할 수 있다. Glob 문자 문자 의미 * empty를 포함해 모든 문자와 매칭된다. ? 임의의 문자 하나와 매칭된다. […] Bracket 표현식 내 하나의 문자와 매칭된다. Bracket 표현식 표현식 의미 [XYZ] X or Y or Z 문자에 대해 매칭된다. [X-Z] X부터 Z까지의 문자를 -로 표현할 수 있다. [[:class:]] POSIX character class와 매칭된다. [^…] ^문자는 NOT을 의미한다. 괄호 내 문자 이외의 문자와 매칭된다. [!…] ! 문자는 NOT을 의미한다. 괄호 내 문자 이외의 문자와 ..

Linux/Shell Script 2022.07.16

[MySQL] STR_TO_DATE - 문자열을 날짜형 데이터로 변환

STR_TO_DATE() 날짜, 시간 데이터를 지정한 포맷의 데이터로 변환할 때는 DATE_FORMAT 함수를 사용한다. 이와 반대로 특정 포맷의 데이터를 날짜, 시간 데이터로 변환할 때는 STR_TO_DATE 함수를 사용할 수 있다. 용법 STR_TO_DATE(string, format) # string : 변환할 물자열 # format : 사용할 형식 사용하는 포맷은 DATE_FORMAT 함수에서 사용하는 것과 동일해서 별도로 적어놓지는 않는다. 참고 : 2022.06.15 - [MySQL] NOW, DATE_FORMAT STR_TO_DATE 예시 자주 사용하는 형태를 몇 가지 정리한다. YYYY-MM-DD hh:mm:ss 사용한 포맷에 날짜와 시간 부분 모두 포함된 경우에는 DATETIME 형의 데..

Database 2022.07.15

[Python] 2차원 배열 열 추출

2차원 배열 열 추출 2차원 배열에서 각 행을 추출하는 방법은 간단하다. 2차원 배열은 배열이 원소이기 때문에 각 원소인 배열을 통으로 출력하면 되기 때문이다. a = [ [0, 1], [2, 3], [4, 5], [6, 7], [8, 9], ] for i in range(5): print(a[i]) 그렇다면 배열 내 배열의 원소에 접근해야 하는 열의 경우에는 어떻게 추출할 수 있을까? 방법을 몇 가지 정리해둔다. 리스트 컴프리헨션 리스트 컴프리헨션을 이용해 각 행에서 n번째의 원소만을 뽑아낸다. a = [ [0, 1], [2, 3], [4, 5], [6, 7], [8, 9], ] print([t[0] for t in a]) print([t[1] for t in a]) 반복문을 이용해 모든 열을 뽑을 때..

Python 2022.07.14

[dcgm-exporter] Grafana/Prometheus no data 현상

현상 관리하던 쿠버네티스 클러스터에서 Grafana/Prometheus 서비스를 위한 kube-prometheus-stack helm chart를 설치하고 GPU 서버 모니터링을 위해 dcgm-exporter를 함께 설치해서 사용하고 있었다. 다만 최근 몇 가지 이슈가 있어 기존의 kube-prometheus-stack을 완전히 삭제하고 재설치했더니 dcgm-exporter 대시보드에 어떤 메트릭도 보이지 않았다. 프로메테우스에서 관련 메트릭을 수집하는지 확인해봤지만, 마찬가지로 dcgm-exporter가 내보내는 메트릭은 수집되지 않는 상태였다. 환경 환경은 아래와 같다. kubeadm으로 구성한 온프레미스 쿠버네티스 클러스터 kubernetes version 1.17.2 ~ 1.19.0 helm v3..

Kubernetes/삽질 2022.07.13

[k8s] Error: unable to build kubernetes objects from release manifest: 에러

현상 2022.07.11 - [k8s] Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict 에러 글에서, 설치했던 helm chart로 설치한 release를 완전히 삭제하고 재설치하려고 했더니 아래와 같은 에러 메시지가 발생하면서 설치에 실패했다. helm install prometheus-operator prometheus-community/kube-prometheus-stack --dry-run Error: unable to build kubernetes objects from release manifest: [unable to..

Kubernetes/삽질 2022.07.12