본문 바로가기

Computer Science

Airflow 주요 개념 정리 사용을 위한 기본 개념 DAG: AirFlow에서 실행할 작업들은 순서에 맞게 구성한 워크플로우를 의미, Directed Acyclic Graph(유향 순환 그래프)의 약자로 DAG를 구성하는 각 작업들은 TASK라고 한다. TASK: DAG를 구성하는 각 작업들, TASK는 Operator, Sensor, Hook 등을 사용할 수 있다. Operator: 지정한 작업을 수행하는 실행 도구 ( ex. python operator, bash operator, postgres operator) Sensor: 어떤 결과를 만족하는지 주기적으로 체크할 때 사용 ( ex.데이터 파이프라인에서 이전 작업의 결과물이 잘 생성되었는지 확인) Hook: DB나 서비스 같은 외부 시스템과 통신하기 위한 인터페이스를 제공하.. 더보기
[centos7] OpenSSL1.1.1 설치 centos7에서 python 3.10 버전을 컴파일 할 때 openssl 1.1 이상의 라이브러리가 필요하다. 하지만 기본적으로 깔려있는 버전은 openssl 1.0 버전이다. 다음은 centos7에서 openSSL 1.1.1을 설치하고 pyenv에서 python3.10.x 버전 설치하는 방법을 정리했다. 에러메시지 Installing Python-3.10.7... ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib? Please consult to the Wiki page to fix the problem. https://github.com/pyenv/pyenv/wiki/Common-build-problems BUILD .. 더보기
[Hadoop/Spark] MapReduce란 무엇인가?(Mapper, reducer) MapReduce란? Apache Hadoop MapReduce는 방대한 양의 데이터를 처리하는 작업을 작성하기 위한 소프트웨어 프레임워크이다. 입력 데이터는 독립적인 청크로 분할된다. 각 청크는 클러스터의 노드에서 동시에 처리된다. MapReduce 작업은 두 함수로 구성된다. Mapper: 입력된 데이터를 소비하고 분석하며(일반적으로 필터 및 정렬 작업) 튜플을 내보낸다.(키-값 쌍) Reducer: mapper에서 나온 튜플을 소배하고 매퍼 데이터에서 더 작고 결합된 결과를 생성하는 요약 작업을 수행한다. 분산처리를 하기 좋은 형태로 만들어 처리한다고 생각하면 쉽다. Spark도 MapReduce처리 방식을 지원한다. 예시를 통한 설명 다음 WordCount 예시를 보면 각 단계가 어떤일을 하는지가.. 더보기
[linux] shell 명령어 반복 실행(watch) shell에서 명령어를 반복적으로 실행해야 할 때가 있다. 시스템의 자원 사용량을 모니터링하거나 명령어를 반복적으로 입력하면서 결과를 확인 해야하는 경우이다. 필자의 경우에는 k8s를 사용할 때 kubectl get pods 명령어를 지속적으로 입력하며 확인할 때 사용하였다. 문법: watch -n [시간:초] 예시: 10초마다 pods 정보를 출력 watch -n 10 kubectl get pods 더보기
[Django] no such table 에러 해결법 여러가지 이유가 있겠지만 필자는 DB 전체를 수동으로 삭제했더니 테이블이 없어진 뒤에 새로 생성되지 않아서 발생했다. 'INSTALLED_APPS'의 테이블을 생성해주는 명령어를 활용하여 해결하였다. python manage.py migrate --run-syncdb 더보기
[Git] 깃에서 브랜치 패턴으로 삭제하기 로컬에서 git으로 개발하다보면 PR하고 남은 branch가 쌓이가 된다. 그렇게 많이 쌓였을 때 한번에 지우는 방법을 정리해둔다. 일단 grep을 통해 본인이 지우고자 하는 패턴의 grep 결과를 확인한다. git branch | grep "feature" feature/upgrade feature/new_instance feature/upgrade1 feature/upgrade2 feature/upgrade3 위에서 확인한 grep의 결과를 argument로 삭제를 수행하면 끝 git branch | grep "feature" | xargs git branch -D 실수로 작성하던 브랜치를 삭제하면 안되니까 꼭 리스트를 잘 확인해서 지우는게 좋다. 더보기
[Linux/Shell] OSError: [Errno 7] Argument list too long: 'bash' 오류 해결 방법 bash shell을 호출하면서 매우 긴 argument를 넣는 경우 이러한 에러를 볼 수 있다. 필자는 echo 로 엄청나게 긴 json 스트링을 파일에 리다이렉션 하는 경우 발생했다. 예를 들면 다음과 같다. 오류예시 코드: echo ${verrrrrry long string} > tmp.json >> OSError: [Errno 7] Argument list too long: 'bash' 이 외에도 디렉토리의 하위에 파일이 매우 많은경우 ls 를 수행했을 때도 발생할 수 있다. 이러한 경우 사용하는 argument 사이즈를 줄이거나, stack 사이즈를 늘려서 더 많은 argument를 받을 수 있게 해야한다. stack 사이즈 조절(최대치 허용): ulimit -s unlimited 추가로 she.. 더보기
[Linux/Shell] 리눅스 쉘에서 인자(Argument)의 limit을 확인하는 방법 shell에서 argument를 사용할 때 특정 길이를 넘지 않도록 해야한다. 아마 일반적인 경우에는 그런일이 별로 없겠지만 가끔 인자가 특정 길이를 넘기면 오류가 발생하는 것을 확일할 수 있다. OSError: [Errno 7] Argument list too long: 'bash' 그렇다면 어떻게 하면 인자의 limit을 확인할 수 있을까? 방법은 다음과 같다. 인자 최대길이(바이트)를 출력하는 command: getconf ARG_MAX 결과: 더보기