버즈빌 사전 과제 그리고 실무 면접 후기
2023. 4. 5. 16:01
제이로그/면접후기
3주 전 버즈빌 데이터 엔지니어에 지원했고 서류 합격이라는 메일과 함께 사전 과제 전형이 진행되었다. 사전 과제 기간이 미리 주어지는 것이 아니라 일주일이라는 시간이 주어졌고 언제부터 사전 과제를 시작할 수 있는지 일정을 내가 정할 수 있다는 점이 좋았던 것 같다. 그래서 나는 주말에 쉬고나서 월요일부터 사전 과제를 안내받아 진행하게 되었다. 사전과제를 받고나서 살펴보니 내가 정말 다뤄보고싶었던 Airflow 에 대한 사전 과제가 주어져 재미있겠다는 생각이 들었다. 먼저 주어진 사전 과제에 대해서 어떤 문제인지 이해를 하기 위해 분석하기 시작했다. 솔직하게 과제를 분석하면서 느꼈던 점은 사전 과제에서 원하는 답이 무엇인지 정확하게 파악이 어려웠던 것 같다. 그래서 이해가 잘 되지 않으면 문제를 다시보고 ..
Docker dangling image 삭제하기
2023. 3. 29. 17:09
DevOps/Docker
도커에서 동일한 태그를 가진 이미지를 빌드할 경우 기존에 있던 이미지는 삭제되지 않고 tag 가 으로 변경된 상태로 남아있게 된다. 아래의 사진을 보면 mysql 5.7 버전을 다시 빌드했을 때 기존에 있던 이미지의 태그가 으로 변경된 것을 확인할 수 있다. 이렇게 더 이상 컨테이너에 연결되지 않고 태그가 없어진 이미지를 Dangling image 라고 한다. 이러한 dangling 이미지를 그대로 방치하게 되면 파일 시스템의 용량을 차지하게 되고 이미지를 확인하는데 불편함이 생길 수 있다. 따라서, dangling 이미지를 조회하고 삭제하려고 한다. dangling image 는 다음과 같이 조회할 수 있다. -f 옵션 은 필터를 지정하는 옵션이다. 따라서 필터를 통해 dangling 의 값이 true..
HDFS 블록(Block) 이해하기
2023. 3. 29. 16:13
데이터 엔지니어링/Hadoop
블록(Block) 이란 일반적으로 물리적인 디스크는 블록 크기 란 개념이 있다. 블록 크기 는 한 번에 읽고 쓸 수 있는 데이터의 최대량이다. 보통 파일 시스템의 블록 크기는 수 킬로바이트이고 디스크 블록의 크기는 기본적으로 512 바이트이다. HDFS Block HDFS 의 블록은 기본적으로 128MB 와 같이 매우 큰 단위이다. HDFS 의 파일은 단일 디스크를 위한 파일시스템처럼 특정 블록 크기의 청크로 쪼개지고 각 청크는 독립적으로 저장된다. 단일 디스크를 위한 파일시스템은 디스크 블록 크기보다 작은 데이터라도 한 블록 전체를 점유하지만 HDFS 파일은 블록 크기보다 작은 데이터일 경우 전체 블록 크기에 대한 하는 하위 디스크를 모두 점유하지 않는다. HDFS 블록이 큰 이유 HDFS 블록이 디스..
HDFS HA 구성 이해하기(2)
2023. 3. 29. 16:03
데이터 엔지니어링/Hadoop
이전 포스팅에 이어 계속해서 정리해보았다. Apache Hadoop 3.3.5 – HDFS High Availability
HDFS HA 구성 이해하기(1)
2023. 3. 29. 15:46
데이터 엔지니어링/Hadoop
아래의 문서를 참고해서 정리해봤다. 이 문서는 하둡 3.3.5 버전 을 기준으로 작성되어있다. 영어로 작성되어있어 공부할겸 열심히 해석해가며 정리해보았다. Apache Hadoop 3.3.5 – HDFS High Availability
백트래킹(Backtracking)
2023. 3. 18. 17:52
알고리즘/개념정리
백트래킹(Backtracking) 이란 백트래킹 이란 모든 경우의 수를 전부 고려하는 알고리즘 이다. 조금 더 자세하게 말하자면 현재 상태에서 가능한 모든 후보군을 따라가며 해결책에 대한 후보를 구축해 나아가다 가능성이 없다고 판단되면 즉시 후보를 포기하면서 정답을 찾아가는 범용적 알고리즘이라고 한다. 상태 공간을 트리로 나타낼 수 있을 때 적합한 방식이다. 일종의 트리 탐색 알고리즘이라고 봐도 된다. 백트래킹을 사용해 해결할 수 있는 문제는 주로 검색, 의사 결정, 최적화, 열거하기 등의 문제가 있다. 사실 백트래킹은 사용 가능한 경우가 많지만 시간복잡도가 보통 $2^n$ 이기 때문에 대부분의 문제는 동적 프로그래밍 또는 그리디 알고리즘 등으로 더 빠르게 해결할 수 있다. 그렇다고해서 백트래킹을 사용하..
피보나치 수 (Fibonacci numbers)
2023. 3. 17. 10:59
알고리즘/개념정리
피보나치 수 (Fibonacci numbers) 아마도 예전에 수학 시간에 배울 만큼 잘 알고 있는 수라서 모르는 사람이 많지 않을 것이라고 생각한다. 위키에서 정의한 피보나치 수는 다음과 같다. 첫 번째 숫자와 두 번째 숫자가 주어지고 세 번째 숫자 부터는 앞의 두 숫자의 합으로 구할 수 있다. 예를 들어, F(1) = 1 , F(2) = 1 일 때 F(3) = F(1) + F(2) 가 된다. 반복하게 되면 1, 1, 2, 3, 5, 8, ... 의 수열이 만들어진다. 참고 사이트 https://ko.wikipedia.org/wiki/%ED%94%BC%EB%B3%B4%EB%82%98%EC%B9%98_%EC%88%98 피보나치 수 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 피보..
유클리드 호제법 (Euclidean algorithm)
2023. 3. 17. 10:55
알고리즘/개념정리
유클리드 호제법 2개의 자연수 또는 정수의 최대공약수 를 구하는 알고리즘의 하나이다. 호제법 이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘이다. 2개의 자연수 a, b 가 있다고 했을 때 a 를 b 로 나눈 나머지 를 r 이라고 하면 (단, a>b ) a 와 b 의 최대공약수 는 b 와 r 의 최대공약수 와 같다. b 를 r 로 나눈 나머지 를 r’ → r 을 r’ 로 나눈 나머지 위의 과정을 반복해서 나머지가 0이 되었을 때의 수가 a 와 b 의 최대공약수 이다. 이런 과정을 거쳐 다음 정리를 이용해서 유클리드 호제법 이 성립하게 된다. 정리 a, b 는 정수, a 를 b 로 나눈 나머지가 r 이라고 하자. ( a ≥ b , r은 0 ≤ r < b 인 정수) a 와 b ..
Mysql - ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
2023. 3. 8. 12:44
데이터 엔지니어링/Database
mysql 을 유저와 패스워드 없이 접속할 때 다음과 같은 에러가 발생한다. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 하지만 다음과 같이 유저와 패스워드를 입력해서 접속하면 정상적으로 접속되는 것을 확인할 수 있다. 물론 접속할 수 있는 방법은 있다. 패스워드를 제거해주면 된다. 다만, 실제 서비스에서는 보안상 위험하기 때문에 유저를 별도로 생성해 유저와 패스워드를 입력해서 접속하는 것을 권장한다. 패스워드를 변경하는 방법은 다음과 같이 mysql document 에서 확인할 수 있다. https://dev.mysql.com/doc/refman/5.7/en/assigning-passwords.htm..
Docker Mysql 5.7 설치하기
2023. 3. 8. 12:27
DevOps/Docker
Docker 에서 mysql 을 설치하는 과정을 정리해봤다. 먼저 도커 에서 mysql 이미지를 확인해본다. docker search mysql 사진과 같이 mysql 의 이미지를 확인할 수 있다. 나는 mysql 5.7 버전을 사용할 예정이라 mysql 5.7 버전의 이미지를 가져왔다.(pull) 버전은 해당 이미지의 태그를 나타내는 콜론(:) 을 사용해 버전을 입력할 수 있다. docker pull mysql:5.7 그리고 설치된 이미지를 확인할 수 있다. 이제 mysql 이미지를 통해 도커 컨테이너를 실행해보자. 아래와 같이 실행할 경우 컨테이너 실행이 제대로 되지 않았다. docker run -d --name mysql-5.7 -p 3306:3306 mysql:5.7 그래서 로그를 확인해보니 다음..