목록Develop (22)
새벽을 밝히는 붉은 달
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cjWzbk/btszhrjEasi/ehdRR9imekPBf8wJosqMd0/img.png)
회사에서 벡터 데이터베이스 도입한 것은 알고 있었는데, 인공지능 쪽에 쓰이는 데이터베이스인 것만 알고 정확히 뭔지 잘 모르고 있었다. 점차 팀 내에서 MLOps 관련된 프로젝트가 늘어나는 것을 보며 나도 알고 있어야 언젠가 관련 업무를 할당받았을 때 더 빠르게 이해할 수 있을 것 같아서 살펴보려고 한다. 1. 관계형 데이터베이스는 AI 애플리케이션에 적합하지 않다 우리는 일반적으로 데이터를 저장할 때 관계형 데이터베이스에 저장하고, 이를 기반으로 검색한다. AI 애플리케이션의 경우 복잡한 작업을 실행할 때 장기 기억을 이해하고 유지하는데 중요한 의미 정보를 전달하는 데이터 표현 유형인 벡터 임베딩을 사용한다. 임베딩은 고차원의 단어나 이미지 같은 데이터를 실수 벡터 형태로 표현한 결과물을 의미한다. 아래..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/biK9Zk/btsuZTYBZcU/auXbKnKv5VMsYWKCFKCiR0/img.png)
1. 들어가며 hdfs에 로그 파일이 쌓이고 있었는데, 로그가 너무 많이 쌓여서 hdfs disk full로 인해 spark를 사용할 수 없었다. 이때 팀리더께서 제안을 해주셨던 방법 중 하나가 logrotate였는데, (결국에 다른 방법으로 해결하긴 했지만) 처음 접한 도구여서 한 번 정리를 해보고자 한다. 2. logrotate란 위에서 말했듯이 DBMS, 어플리케이션 서버, 웹 서버 등을 운영하다보면 자연스레 로그가 쌓이게 된다. 이슈 등이 발생했을 때 쌓인 로그들을 보면서 이슈의 원인이 무엇인지 파악하게 된다. 따라서 로그를 삭제하긴 힘든데, 그렇다고 계속 쌓이는 로그를 가만히 둘 수는 없다. 만약 계속 쌓이는 로그를 가만히 둔다면 서비스의 성능 저하가 오거나, 서비스가 아예 사용이 불가능한 상태..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bLSX9w/btst6M7qPw7/BQqvPOGITL3mE1DEdgDrXK/img.png)
며칠 전에 운영하던 서버에서 Too many open files 에러로 인해 노트북을 사용할 수 없다는 이슈가 있었다. 만약 내가 백엔드 직무였고 서비스와 직접 맞닿아 있는 부분을 운영하고 있었다면 이미 마주쳐봤을 것 같지만, 나는 사내 대상으로 운영하는 서버여서 접속자 수나 커넥션 등에 대해서는 신경을 쓰지 않다가 이번에 처음으로 만나게 된 에러라 잊지 않기 위해 기록한다. 1. 원인 최대로 열 수 있는 파일 디스크립터의 수를 NOFILE이라고 부른다. 이 NOFILE에는 limit이 있는데, 프로세스가 그 제한을 넘었기 때문에 발생하는 에러이다. 2. 해결 방안 NOFILE에 대한 limit을 늘려주면 된다. 이때, 나 혼자 사용하는 것이 아닌 멀티유저로 운영되는 서버의 경우, 각 프로세스의 limi..
2년 전에 Colab에서 Selenium을 사용해서 크롤링을 했었는데, 이번에 크롤링을 할 일이 생겨 같은 코드를 동작시키니 WebDriverException: Message: Service /usr/bin/chromedriver unexpectedly exited. Status code was: 1 라며 크롤러를 동작시킬 수 없었다. 구글링을 통해 올해 1월에 올라온 글을 참고해봐도 같은 에러가 발생했다. 결국엔 코랩 깃허브 레포의 이슈에서 해결방법을 찾았다. 아마 우분투 버전이 바뀌면서 그런 것 같다고 한다. 글 작성 시점 기준 (2023.05.13) Colab에서 Selenium을 동작시킬 수 있는 코드는 다음과 같다. %%shell sudo apt -y update sudo apt install ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b6KOgj/btrPgePCyzF/WtFrTwhmvCN7znLTHoyXo0/img.png)
Redshift에 간단한 weather data를 넣으려고 하는데, 자꾸 아래처럼 에러가 났다. 나는 분명 INSERT 문을 사용해 값을 넣어주려고 했는데, (INSERT INTO . VALUES (value 1, value 2, ...) 를 사용했다) 자꾸 값을 컬럼명으로 인식했다. 왜 그런가 했더니, 파이썬은 "(double quotes)과 '(single quotes)를 구분없이 사용이 가능한데, sql에서는 이 둘을 구분하기 때문에 발생한 문제였다. Stackoverflow에 따르면, single quotes는 string literals를 위해 쓰이고, double quotes는 database identifiers를 위해 쓰인다고 한다. 나는 이 사실을 모르고 query의 value를 "로 감..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wnE2B/btrEt3LhTVD/3eFXRv8NxcTz8C4DR8SMkK/img.png)
이번에 라즈베리파이를 사용하면서, ssh 접속을 자주 해야 하는데, 매번 입력하면 귀찮을 것 같아 ssh 접속이 된 터미널을 바로 열 수 있도록 만들어놓았다. 그 과정을 공유해본다. 1. Windows Terminal 설치하기 Windows Terminal은 윈도우에 설치된 terminal과 다르게 마이크로소프트 앱에서 설치해주어야 한다. 다음 링크를 통해 다운로드 받을 수 있다. https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701?hl=ko-kr&gl=KR Get Windows Terminal from the Microsoft Store Windows 터미널은 명령 프롬프트, PowerShell 및 WSL과 같은 명령 줄 도구 및..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/chFa9X/btrErWk6fOr/h62YMN1ANNz3BPWPHtyhSK/img.png)
이번에 진행하게 된 프로젝트에서 쿠버네티스 환경 기반 라즈베리파이 멀티클러스터를 만들어야 하는데, 그 과정을 한 번 기록해보고자 한다. 먼저, 이번에는 라즈베리파이 멀티클러스터를 구성할 것이다. 📚 준비물 라즈베리파이4 4GB 4개 microSD card 16GB 4개 microSD card 리더기 아크릴 케이스 5포트 멀티충전기 Type C - USB 케이블 4개 5포트 스위칭 허브 1개 CAT6 랜 케이블 4개 1. 라즈베리파이에 Ubuntu 20.04 굽기 현재 목표는 라즈베리파이에 우분투 + K8S를 올리고자 하기 때문에, 라즈베리파이에 우분투를 구울 것이다. 1. 다음 사이트에서 Raspberry Pi Imager를 다운 받는다. (호스트 OS에 맞는 OS로 다운 받는다) https://www...