본문 바로가기

MLOps/트러블 슈팅

(6)
개발자가 사용자와 소통하는 방법(Nonetype object has no attribute write, pyinstaller) 개발자가 사용자와 소통하는 방법(Nonetype object has no attribute write, pyinstaller) 부제 : 오픈마켓 상품 정보 수집기 버그를 고치며.. 1. 사건 Pyinstaller를 이용해서 패키징 한 EXE 파일을 지인에게 전달하고, 또 다른 버그가 생겼다 하지만 내가 테스트할 때 발생하지 않은 버그라 당황했다. 2. 사용자 환경 문제 "사용자가 프로그램을 실행하는 환경이 뭐가 잘못된 건가?"라고 처음엔 생각했다. 사실상 최악의 접근방식이었다. 실행하는 환경에 상관없이 동작하도록 만들었어야 하는 것이지 사용자는 잘못 없다. 3. 원인 파악 먼저 Pyinstaller 도큐먼트에서 5.7 버전에서 Bugfix 내용을 확인할 수 있다 Pyinstaller Docs 설명 패키징..
VScode를 사용했더니 kswapd0 사용률이 100%?.. VScode를 사용했더니 kswapd0 사용률이 100%?.. API 배포를 위한 개발용으로 네이버 클라우드 플랫폼에 서버를 하나 두고 사용하고 있다 최근 들어 계속 아래 그림처럼, CPU랑 MEM 사용량이 100% 찍어 느려지거나 재부팅되는 현상이 발생됐다 그래서 Top 명령어 실행해두고 곁눈질로 모니터링하면서 업무를 하던 도중, kswapd0라는 놈을 잡아냈다 참고: WhaTap - 리눅스 free 명령어로 메모리 상태 확인하기 SWAP 스왑은 디스크의 일정 부분을 메모리 공간 부족 시 메모리 처럼 사용하기 위해 설정해 둔 공간으로, 커널은 메모리가 부족한 상황에서는 Buffer와 Cache로 할당된 것 중에 자주 사용되지 않는 것들을 비우고 메모리에 할당하려고 시도함 또한 메모리에 있는 데이터 중 ..
[트러블 슈팅] Airflow webserver 접속이 계속 refused 된다고? (AWS EC2, Microk8s, helm chart) Airflow Webserver 접속이 계속 거부되는 경우 상황 EKS가 아닌 AWS EC2위에 직접 쿠버네티스를 설치 Helm chart를 사용해 Airflow를 Pod 단위로 배포를 시도 하지만 Webserver 접속은 계속 거부가 되는 상태 개요 최소 3일 이상의 삽질 중에 더 못하겠다고 스택오버플로우에 질문하자마자 20분 뒤에 혼자 해결하고 답변을 달아버린 능지처참 사건 스택오버플로우에서 자문자답하는 사람의 글 보러가기 I installed airflow using microk8s helm, but access to localhost:8080 is denied I am just getting started with Kubernetes. I'm using microk8s and I'm current..
[트러블 슈팅] DAG안에 Task들이 병렬 실행을 하지 않는다?(Feat. Airflow Executor) Airflow Executor 개요 아래 그림과 같은 Graph를 가지는 DAG파일을 작성했다. 작성당시에 의도는 "앞에 3개의 Task를 동시에 실행하는 것"이었는데, 나머지 2개가 Queue 상태에 계속 걸려있는 것이다. 뭔가 잘못됐구나 싶었는데, 비밀은 Executor에 있다. Airflow.cfg 파일을 열어보면 지금 사용 중인 Executor을 확인할 수 있다. 이름만 봐도 알 수 있다. "순차적으로 실행하는 녀석" 옳다구나 하고 뒤에 값을, 바꾸지 마라 """ executor = KubernetesExecutor or executor = LocalExecutor """ 위에 처럼 바꾸고 airflow를 실행한다면, "Sqlite는 LocalExecutor를 지원하지 않는다!!"라는 에러문구를 ..
[트러블 슈팅] RuntimeError: Python in worker has different version 3.9 than that in driver 3.7, PySpark cannot run with different minor versions. Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set. 트러블슈팅 RuntimeError: Python in worker has different version 3.9 than that in driver 3.7, PySpark cannot run with different minor versions. Please check environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON are correctly set. 개요 파이스파크(3.9)를 실행하자, 파이썬(3.7)이랑 파이스파크 버전이 다르다는 오류 메시지가 나왔다. 방법(2가지) 파이스파크가 사용하는 파이썬 버전을 현재 파이썬 버전으로 변경 현재 파이썬 버전을 파이스파크 버전으로 변경 방법 1 spark-env.sh 파일에 아래 2줄 추가 export..
[트러블 슈팅] Error initializing SparkContext.org.apache.hadoop.security.AccessControlException: Permission denied 트러블 슈팅 Error initializing SparkContext. org.apache.hadoop.security.AccessControlException: Permission denied: user=airflow, access=WRITE, inode="/user":root:supergroup:drwxr-xr-x at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:504) 개요 SparkSession 인스턴스 생성할 때는 아무 일 없다가, 세션을 생성하고 CreateDataFrame을 하니까 권한 오류가 생겼다. 방법 스크립트를 실행하는 유저한테 권한을 주면 해결 hdfs-stie.xm..