전체 글 135

[Docker] Django + Gunicorn image build

개요 Django + Gunicorn에 대한 docker image를 생성할 것입니다. 실행 전 Django 및 Gunicorn 설치 후 UI 띄우는 것 까지 진행하고 오십시오. https://twodeveloper.tistory.com/105 [Django] Django Install 개요 Django를 설치하고 MariaDB와 연동 및 Gunicorn을 통해 bind 시켜 Web UI에 띄우는 것 까지 진행하도록 하겠습니다. 진행환경 OS : CentOS 7.6 Python : 3.6 Django : MariaDB : Django Install 1. Python In.. twodeveloper.tistory.com 1. requirement.txt을 생성합니다. (venv) pip freeze > r..

DevOps/Docker 2022.09.21

[Django] Django Install

개요 Django를 설치하고 MariaDB와 연동 및 Gunicorn을 통해 bind 시켜 Web UI에 띄우는 것 까지 진행하도록 하겠습니다. 진행환경 OS : CentOS 7.6 Python : 3.6 Django : MariaDB : Django Install 1. Python Install SCL 즉 소프트웨어 컬렉션 저장소에서 Python을 설치할 것입니다. SCL을 사용하면 최신 버전의 Python 3.x를 설치할 수 있습니다. CentOS 추가 저장소를 설치하고 SCL을 활성화 하고, Python 3.6을 설치합니다. $ sudo yum -y install centos-release-scl $ sudo yum -y install rh-python36 2. 가상 환경 생성 * Python 3...

Web &App/Django 2022.09.21

[Hive] Hive 란?

개요 Hive에 대한 개념 정리와 간단한 실습을 진행해보며 Hive의 구동원리 아키텍쳐에 대해 알아가 보도록 하겠습니다. Hive 란? Hive는 Hadoop에서 돌아가는 Data Warehousing Solution 입니다. MapReudce는 Java 기반이기 때문에 Java에 대한 역량이 부족한 데이터 엔지니어에게는 진입 장벽이 높습니다. 따라서 Hive를 통해 SQL문을 MapReduce로 변환 시켜주면서 진입 장벽을 낮추었습니다. 진행 과정은 Hive에서 SQL문을 MapReduce로 변환 시켜주고, 이를 Hadoop이 처리하는 순서로 진행됩니다. 즉, Hive는 단순히 SQL을 MapReduce로 변환 시켜주는 작업을 진행하고, Hadoop이 일을 처리하는 역할을 수행합니다. 따라서 엄밀히 이..

BigData/Hive 2022.09.20

[Airflow] Task 의존성 정의 방법

개요 작업 의존성을 Airflow에서 정의하는 방법과 이러한 기능을 사용하여 조건부 Task, 분기 및 조인을 비롯한 보다 복잡한 패턴을 구현하는 방법에 대해 알아보고, XCom을 이용한 Task 사이의 상태 공유 방법, Airflow 2의 새로운 API인 Taskflow API를 통해, 파이썬 작업과 XCom을 많이 사용하는 DAG를 단순화하는 방법에 대해서 알아보겠습니다. 기본 의존성 유형 1. 선형 의존성 유형 책에서 제공하는 로켓 사진 가져오기 DAG의 Task를 기반으로 선형 의존성 유형을 설명드리겠습니다. 1.1 로켓 사진 가져오기 Task Chain download_launches=BashOperator(...) get_pictures=PythonOperator(...) notify=Bash..

BigData/Airflow 2022.09.14

[BOJ] 1158번: 요세푸스 문제

■ 문제풀이 k 번째 사람을 pop 시켜 ans 리스트에 추가 시킵니다. 과정에서 num이 남아있는 josephus의 리스트 보다 작다면 num의 값에 josephus 리스트 개수를 빼주며 나머지 값들 또한 순서에 맞게 ans 리스트에 추가 시킵니다. ■ 문제해답 import sys input = sys.stdin.readline n, k = map(int, input().split()) josephus = [] for i in range(1, n + 1): josephus.append(i) ans = [] num = k - 1 while len(josephus): if num >= len(josephus): num = num - len(josephus) else: ans.append(str(joseph..

Algoritm/BOJ 2022.09.11

[Airflow] Airflow UI

개요 docker-compose를 통해 Airflow를 설치하고, Airflow Web UI를 띄우는 부분까지 성공하였습니다. 이번에는 Airflow Web UI를 둘러보며 무슨 기능이 존재하는지 확인해보도록 하겠습니다. * Airflow 설치를 진행하려면 다음 글을 참고하세요. https://twodeveloper.tistory.com/99 [Airflow] Airflow Install 개요 로컬 환경에서 Airflow를 설치해서 Airflow Web UI를 띄우는 과정까지 진행할 것입니다.Airflow는 파이썬 환경에서와 Docker Container에서 실행할 수 있는데 저는 Docker Container 환경에서 실행시키는 것. twodeveloper.tistory.com Airflow Web U..

BigData/Airflow 2022.09.08

[Hadoop] Hadoop Eco System 이란?

개요 Hadoop Eco System 에 대한 개념 정리를 목적으로 정리하겠습니다. Hadoop Eco System 1. Hadoop Eco System 이란? 먼저, Hadoop Eco System은 크게 말하면 "다양한 서브 프로젝트들의 모임"이라고 말할 수 있습니다. Hadoop의 Core Project는 HDFS, MapReduce 이지만 그 외에도 다양한 프로젝트들이 많은데 이러한 프로젝트들의 모임을 Hadoop Eco System이라 지칭합니다. 1.1 Hadoop Eco System Architecture Hadoop Eco System에 대한 Framework들의 구성도 입니다. 다음은 Hadoop Eco System의 구성도를 도식화한 것입니다. HDFS 2. HDFS 란? Hadoop ..

BigData/Hadoop 2022.09.07

[Airflow] Airflow Install

개요 로컬 환경에서 Airflow를 설치해서 Airflow Web UI를 띄우는 과정까지 진행할 것입니다.Airflow는 파이썬 환경에서와 Docker Container에서 실행할 수 있는데 저는 Docker Container 환경에서 실행시키는 것을 목적으로 진행할 것입니다. Docker Container로 진행하는 이유는 pyenv 등을 이용한 파이썬 환경 구성은 파이썬 실행 수준에서 실행 환경을 격리하지만, Docker Container는 OS 수준에서 격리된 환경을 제공하기 때문에 파이썬 패키지 뿐만이 아닌 DB Driver, GCC 컴파일러 등의 의존성을 포함하여 Docker Container를 생성할 수 있습니다. Airflow 설치 전 세팅 * VM : CentOS 7 (Core : 2 / ..

BigData/Airflow 2022.09.07

[BOJ] 10845번: 큐

■ 문제해설 다음 문제는 queue를 이용한 문제이고, python에서 제공하는 deque를 이용하여 문제를 해결하였습니다. 기본 리스트에서 값을 빼낼때 pop이 아닌 popleft를 사용합니다. queue는 FIFO 구조 입니다. 1) pop [1, 2, 3, 4] [1, 2, 3] [1, 2] [1] 2) popleft [1, 2, 3, 4] [2, 3, 4] [3, 4] [4] ■ 문제해답 from collections import deque import sys input = sys.stdin.readline n = int(input()) q = deque() for i in range(n): m = input().split() if m[0] == 'push': q.append(m[1]) elif ..

Algoritm/BOJ 2022.09.06

[BOJ] 1406번: 에디터

■ 문제해결 왼쪽으로 커서가 이동할 경우 ('L') string(입력 문자열) 값에서 cursor 리스트에 push 시켜줍니다. 또한 오른쪽으로 커서가 이동할 경우 ('R') cursor 리스트에서 string(입력 문자열) 로 push 시켜줍니다. 이 후 cursor 리스트 값들은 LIFO 구조로 인해 문자열이 뒤집어져 있어서 리스트 속성을 이용해 문자열을 뒤집어 줍니다. ■ 문제해답 import sys input = sys.stdin.readline string = list(input().rstrip()) n = int(input()) cursor = [] for i in range(n): m = input().split() if m[0] == 'L' and string != []: cursor.ap..

Algoritm/BOJ 2022.09.06