mlljs1998의 등록된 링크

 mlljs1998로 등록된 네이버 블로그 포스트 수는 59건입니다.

Airflow CeleryExecutor 개념 및 Architecture 설명 [내부링크]

CeleryExecutor는 worker 수를 확장할 수 있는 방법 중 하나입니다. CeleryExecutor가 작동하려면 Celery backend(RabbitMQ, Redis 등)를 설치하고, airflow.cfg를 변경하여 executor를 CeleryExecutor로 설정해야 합니다. 자세한 Celery broker 설정 방법 https://docs.celeryq.dev/en/latest/getting-started/ 요구 사항 Airflow 설치 클러스터 전체에 airflow 구성 동일하게 설정 operator는 해당 context를 충족해야 함 HiveOperator를 사용하는 경우 해당 상자에 Hive CLI를 설치 MySqlOperator를 사용하는 경우 필요한 Python 라이브러리를 PYTHONPATH에서 사용할 수 있어야 함 worker는 DAGS_FOLDER에 대한 액세스 권한이 있어야 하고 파일 시스템을 동기화 일반적인 설정은 DAGS_FOLDER를 Git 리

Airflow KubernetesExecutor 개념 및 Architecture 설명 [내부링크]

Kubernetes executor는 Kubernetes 클러스터의 자체 pod에서 각 작업 인스턴스를 실행합니다. KubernetesExecutor는 Airflow Scheduler에서 프로세스로 실행됩니다. 스케줄러 자체는 반드시 Kubernetes에서 실행될 필요는 없지만 Kubernetes 클러스터에 대한 액세스는 필요합니다. KubernetesExecutor는 백엔드에 non-sqlite 데이터베이스가 필요합니다. DAG가 작업을 제출하면 KubernetesExecutor는 Kubernetes API에서 작업자 포드를 요청합니다. 그런 다음 작업자 포드는 작업을 실행하고 결과를 보고하고 종료합니다. https://airflow.apache.org/docs/apache-airflow/stable/_images/arch-diag-kubernetes.png Kubernetes 클러스터의 분산된 5개 노드 집합에서 실행되는 Airflow 배포의 한 예가 아래에 나와 있습니다. ht

Debian, Ubuntu에서 apt 명령어로 Rabbitmq 설치 [내부링크]

Debian, Ubuntu에서 RabbitMQ를 설치하는 방법을 다룹니다. RabbitMQ는 표준 Debian 및 Ubuntu 리포지토리에 포함되어 있습니다. 그러나 포함된 버전은 최신 RabbitMQ 릴리스 뒤에 있는 많은 릴리스이며 이미 지원되지 않는 RabbitMQ 버전을 제공할 수 있습니다. Rabbitmq 설치 확인 $ apt list --installed rabbitmq-server Install Erlang - Erlang 설치 RabbitMQ를 설치하기 전에 지원되는 Erlang/OTP 버전을 설치해야 합니다. 표준 Red Hat, Fedora, CentOS 리포지토리는 Erlang 버전을 제공합니다. RabbitMQ Erlang Version : https://www.rabbitmq.com/which-erlang.html 설치 단계에 대한 자세한 설명을 원하는 사용자는 다음을 참조하십시오. apt 및 Cloudsmith 저장소를 사용한 수동 설치 apt Package

Python pip Upgrade 방법 [내부링크]

개요 Python의 패키지 관리 시스템인 pip의 버전 확인 및 업그레이드 방법을 포스팅 합니다. pip를 업그레이드 하지 않으면 필요한 모듈에 문제가 생길 수 있습니다. 가급적 python, pip install 후 반드시 pip를 최신으로 업그레이드 하기를 권장합니다. pip version확인 다음 명령어를 사용하여 현재 설치되어 있는 pip 의 버전을 확인할 수 있습니다. pip -V pip upgrade 방법 Mac, Windows 환경 pip upgrade 방법 다음 명령어로 Mac, Windows 환경에서 pip upgrade 할 수 있습니다. $ python -m pip install --upgrade pip Linux 환경 pip up pip upgrade 방법 다음 명령어로 Linux 환경에서 pip upgrade 할 수 있습니다. $ pip install --upgrade pip Error & Solution Error Message Defaulting to use

[앱테크]메디패스 코인 소개, 매수 및 출금 방법 가이드/후기 [내부링크]

메디패스 소개 메디패스는 나의 의료 데이터를 디지털의 형태로 활용할 수 있는 의료 데이터 블록체인 플랫폼입니다. 제공하는 서비스 종류는 보험청구, 약알리미, 건강검진 조회 등이 있습니다. 추천인 코드(NYMC6S ) 부탁드립니다. 입력하면 3 MED를 받습니다. MED 코일 입금 방법 코인워크 메뉴에서 출석 체크(1MED)와 만보기(6MED) 하루에 총 7MED 코인을 받을 수 있습니다. 미션을 수행하는 방법도 있는데 복잡한거 싫어해서 저는 출석과 만보기만 수행 했습니다. 만보기 많이 걸을수록 보상이 커지며 최대 만보까지 측정됩니다. 하루 최대 6MED 코인을 받을 수 있습니다. 2000걸음 - 1MED 5000걸음 - 2MED 10000걸음 - 3MED 만보기 출석 체크 하루에 1 ~ 100MED 적립된다고 하지만 한달 동안 써본 결과 1MED만 받았습니다. 그래도 꽁짜니깐 감사합니다. 출석체크 미션 MED 코일 출금 방법 업비트로 출금하는 방법을 공유하겠습니다. 200 MED 이

파일 디스크립터 (FD, File Descriptor) [내부링크]

파일 디스크립터 (FD, File Descriptor) 개념 유닉스 시스템에서 일반적인 디렉토리, 네트워크 소켓, 파이프, 블록 디바이스, 케릭터 디바이스 등 모든 객체들을 파일로 관리한다. 프로세스가 이 파일들을 접근할 때 파일 디스크립터라는 개념을 이용한다. 프로세스가 실행 중에 파일을 Open하면 커널은 해당 프로세스의 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값을 할당해준다. 그 다음 프로세스가 열려있는 파일에 시스템 콜을 이용해서 접근할 때, 파일 디스크립터(FD)값을 이용해서 파일을 지칭할 수 있다. FD의 0번에서 2번까지는 고정되어 있다. (unistd.h 헤더파일에 명시) Integer value Name <unistd.h> symbolic constant <stdio.h> file stream 0 Standard input STDIN_FILENO stdin 1 Standard output STDOUT_FILENO stdout 2 Standard error

[Linux] ulimit 개념 및 설정방법 [내부링크]

ulimit 이란 ulimit이란 user limit를 줄인 단어로, 사용자가 실행시키는 프로세스의 자원을 제한하는 설정 입니다. 병렬 처리 프로그램이나 동시 접속자가 많은 서비스에서 설정합니다. 예로 내가 사용하는 자바 프로그램 등이 설정된 ulimit의 open file 수보다 더 많은 수의 소켓 통신을 하게되면 장애가 발생하게 됩니다. 또는 설정된 max user processes 보다 많은 쓰레드를 생성하더라도 장애가 발생하게 됩니다. ulimit는 프로세스의 자원 한도를 설정하는 명령, soft한도,hard한도 두가지로 나뉩니다. soft : 새로운 프로그램을 생성하면 기본으로 적용되는 한도 hard : 소프트한도에서 최대로 늘릴 수 있는 한도 ulimit 확인 방법 # soft 설정 확인 방법 (default) $ ulimit -a -S # hard 설정 방법 $ ulimit -a -H ulimit 설정 방법 ulimit 설정 방법은 1)명령어를 사용하는 방법과 2)lim

[앱테크]포게더 소개, 포인트 적립 및 출금 방법 가이드/후기 [내부링크]

포게더 소개 포게더는 포모코와 도모코 3종 앱테크로 광고 및 기사를 보고 포인트를 받는 앱입니다. 이번 포스팅은 포게더 앱에서 포인트를 받아 네이버 포인트로 출금하는 방법을 공유합니다. 회원가입 시 "추천인 코드(1186af6c)"를 입력하면 50,000포인트를 받습니다. 포인트 적립 방법 1. 출석체크 광고 시청하면 주어진 포 인트를 받습니다. 일 6개 출석체크 광고가 제공되며, 모두 시청하면 추가 포인트까지 총 1400포인트 + 응모권 30장을 받습니다. 응모권은 화성 로켓 발사에서 사용됩니다. 2. 포인트 생산소 광고 시청하면 주어진 포인트를 받습니다. 포인트 생산소 - 시간당 100포인트 이벤트 생산소 - 시간당 50포인트 3. 실시간 뉴스 기사 한편 당 50포인트를 받습니다. 50편을 보면 일일미션3을 완료되며, 100편을 보면 일일미션4를 완료됩니다. 미션3은 500포인트 미션4는 1000포인트 지급됩니다. 4. 포인트 뽑기 출석체크에서 받은 응모권을 이용해 번호를 받습니

[앱테크] 옵저버(Observer) 채굴기 소개, 매수 및 출금 방법 소개 [내부링크]

옵저버 앱 소개 옵저버는 기상관측 및 기상 관련 빅데이터 클라우드 소싱 플랫폼입니다. 앱을 통해 나의 현재 위치의 날씨를 제보하면, 보상으로 옵저버 토큰을 받습니다. 관측은 30분에 한번 씩 제보할 수 있으며, 1회 제보에 2OBSR 토큰을 받으며, 1000토큰 이상이면, 다음날 설정한 지갑에 자동으로 이체됩니다. 상장 거래소: 업비트, 빗썸 옵저버 코인 시세 분석 옵저버 주봉 차트입니다. 2021년 3월 4월에 최고점 찍은 후 계속 하락하다가 9월 다소 반등 이후 1년 넘게 동안 횡보 중입니다. 코인 상승 시기에 강한 상승이 올 수 있다고 생각됩니다. 옵저버 주 채굴 수량 주별 제보 건수 저는 일주일 동안 날씨 제보를 162건 하였습니다. 제보 한 건에 2토큰을 받아서 일주일 동안 324개 토큰을 받았습니다. 옵저버 입금 주소 설정 업비트 입금 주소 설정 옵저버는 1000개 토큰이면, 설정한 지갑 주소로 자동 입금됩니다. 회원 가입할때 또는 지갑등록 화면에서 등록할 수 있습니다.

Mac에서 RabbitMQ 설치 및 Sample Message [내부링크]

RabbitMQ는 가장 널리 배포/사용된 오픈 소스 메시지 브로커입니다. 이번 포스팅은 Mac의 homebrew를 이용해 rabbitmq 설치 방법을 설명합니다. RabbitMQ 설치 rabbitmq를 설치하기 전에 homebrew 최신화를 확인 후 rabbitmq를 설치합니다. $ brew update $ brew install rabbitmq .bash_profile 수정 RabbitMQ server scripts와 CLI tools이 설치된 sbin 디렉토리를 PATH에 추가합니다. RABBITMQ_HOME=/usr/local/opt/rabbitmq PATH=${PATH}:${RABBITMQ_HOME}/sbin rabbitmq-server 시작 rabbitmq-server으로 실행하면 foreground에서 시작되고, brew services start rabbitmq은 background로 시작됩니다. background로 실행하겠습니다. $ brew services star

Airflow CeleryExecutor 설치 및 DAG 실행 [내부링크]

Airflow Executor 종류 및 개념은 다음 포스팅을 참고 바랍니다. https://blog.naver.com/mlljs1998/222888599066 MySQL 설치, DB 및 Airflow계정 생성 airflow celeryexecutor는 rdb를 사용합니다. mysql 설치는 다음 포스팅을 참고 바랍니다. Linux환경: https://blog.naver.com/mlljs1998/222619603370 Mac환경: https://blog.naver.com/mlljs1998/222892659366 [airflow celery worker] 구성 airflow webserver - airflow UI - workflow 상태 표시하고 실행, 재시작, 수동 조작, 로그 확인 airflow scheduler - 작업 기준이 충족되는지 여부를 확인 - 종속 작업이 성공적으로 완료되었고, 예약 간격이 주어지면 실행할 수 있는 작업인지, 실행 조건이 충족되는지 등 - 위 충족 여부

PermissionError:[Errno 1] Operation not permitted: '/Users/id/airflow/logs/dag_processor_manager.log [내부링크]

배경 airflow 개발환경을 구축하면서 여러 executor를 적용하는 중 이었습니다. airflow.cfg의 exeuctor에 localExecutor를 테스트하고 celeryExecutor를 테스트 하려고 airflow scheduler를 실행하니 다음과 같은 에러가 발생 하였습니다. Error Message {logging_config.py:71} ERROR - Unable to load the config, contains a configuration error. Process SpawnProcess-1: Traceback (most recent call last): File "/usr/local/Cellar/[email protected]/3.10.7/Frameworks/Python.framework/Versions/3.10/lib/python3.10/logging/config.py", line 565, in configure handler = self.configure_handle

Airflow Architecture Overview [내부링크]

Airflow는 워크플로를 구축하고 실행할 수 있는 플랫폼입니다. 워크플로는 DAG(Directed Acyclic Graph)로 표시되며, 종속성과 데이터 흐름을 고려하여 정렬된 작업을 표시합니다. DAG는 Tasks 간의 종속성을 지정하고, 그것들을 실행하고 재시도를 실행하는 순서 지정합니다. Tasks은 데이터 가져오기, 분석 실행, 다른 시스템 트리거 등 수행할 작업을 설명합니다. Airflow는 다음 구성 요소로 구성됩니다. 스케줄러: 예약된 워크플로를 트리거하고 실행할 실행기에 작업을 제출 익스큐터: 실행 중인 작업을 처리. 기본 Airflow 설치에서 이것은 스케줄러 내부의 모든 것을 실행하지만 대부분의 프로덕션에 적합한 실행기는 실제로 작업 실행을 작업자에게 푸시함 웹서버: DAG 및 작업의 동작을 검사, 트리거 및 디버그할 수 있는 편리한 사용자 인터페이스를 제공함 DAG 파일의 폴더: 스케줄러와 실행자(그리고 실행자가 가지고 있는 모든 작업자)가 읽음 메타데이터 데이

[앱테크 추천]도모코(도지코인) 채굴기 소개, 매수 및 출금 방법 소개 [내부링크]

도모코 소개 도모코는 광고 및 기사를 보고 받은 포인트로 도지코인으로 교환해 주는 앱 입니다. 이번 포스팅은 도모코 앱에서 포인트를 받아 도지코인으로 교환하는 방법과 도지코인을 업비트로 출금하는 방법을 공유합니다. 상장 거래소: 업비트, 빗썸 회원가입 시 "추천인 코드(0db5c089)"를 입력하면 50,000포인트를 받습니다. 도지코인 시세 분석 및 전망 도지코인은 일론 머스크가 최애하는 코인입니다. 현재 머스크가 트위터 인수 호재로 많이 상승하고 있습니다. 트위터 인수 후 중국의 윗챗과 같이 여러 기능을 추가할 예정이며, 화폐로 도지코인을 사용할 거라 예상돼 많은 주목을 받고 있습니다. 도지코인 매수 방법 도모코는 일 2회 포인트를 회수합니다. (오전 9시, 오후 6시) 오전 9시 획득 포인트 오후 6시 획득 포인트 저는 일 별 13,000포인트 받았으며, 이는 약 1.2도지 이상으로 변환됩니다. 1. 출석체크 광고 시청하면 주어진 포인트를 받습니다. 일 6개 출석체크 광고가 제

Linux에서 Yum으로 Rabbitmq 설치 [내부링크]

Install 개요 패키지는 PackageCloud의 Yum 리포지토리를 통해 배포됩니다. Rabbitmq-server는 Fedora에 포함되어 있습니다. 그러나 포함된 버전은 종종 RabbitMQ 릴리스보다 뒤쳐집니다. PackageCloud의 Yum 리포지토리를 사용하는 것이 좋습니다. RabbitMQ를 설치하기 전에 지원되는 Erlang/OTP 버전을 설치해야 합니다. rpm binary 다운로드 $ wget https://github.com/rabbitmq/erlang-rpm/releases/download/v25.1.1/erlang-25.1.1-1.el8.x86_64.rpm $ wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.11.2/rabbitmq-server-3.11.2-1.el8.noarch.rpm 다른 버전의 binary 파일을 다운로드 하려면 다음 사이트에서 확인 가능합니다. erlang

ModuleNotFoundError: No module named 'MySQLdb' [내부링크]

No module named 'MySQLdb' Error 해결방법 $ pip install mysql-python (mix os/ python 2) $ pip install mysqlclient (mix os/ python 3) 저는 airflow webserver 시작할때 에러가 발생했으며, 전체 에러메시지는 다음과 같습니다. Traceback (most recent call last): File "/usr/local/bin/airflow", line 5, in <module> from airflow.__main__ import main File "/usr/local/lib/python3.9/site-packages/airflow/__init__.py", line 46, in <module> settings.initialize() File "/usr/local/lib/python3.9/site-packages/airflow/settings.py", line 573, in initi

Airflow Executor 종류 및 개념 설명 [내부링크]

DAG 프로세서 및 태스크 스케줄러는 Airflow 스케줄러를 시작할 때 한 가지 방법에 의해서만 실행할 수 있습니다. 설치 시점에 환경이 고정되기 때문에 태스크 익스큐터는 성능의 확보와 자원의 여유를 고려하여야 합니다. Airflow Executor 종류는 다음과 같습니다. 구 성 항 목 종 류 AIRFLOW__CORE__EXECUTOR SequentialExecutor(default) LocalExecutor CeleryExecutor KubernetesExecutor 익스큐터 분산환경 설치 난이도 사용에 적합한 환경 SequentialExecutor(기본) 불가능 매우 쉬움 테스트 LocalExecutor 불가능 쉬움 단일 호스트 환경 권장 CeleryExecutor 가능 보통 멀티 호스트 확장 고려시 KubernetesExecutor 불가능 어려움 쿠버네티스 기반 컨테이너 환경 구성 고려시 SequentialExecutor SequentialExecutor는 airflow를

[앱테크 추천]포모코(리플코인) 도모코(도지코인) 포게더(네이퍼페이포인트) 메디패스(메디블록) 밀크코인 페이코인 옵저버 [내부링크]

현재 거래소에서 거래가 가능한 코인을 대상으로 정리했습니다. 거래 코인, 상장 거래소, 일 회수 금액, 획득 방법 및 출금 방법을 설명했습니다. 개인적으로 출퇴근 또는 대중교통 이용할 때 많이하며, 적게나마 주머니에 도움이 되네요. 지루한 시간을 순삭 시켜줘서 좋네요 포모코 코인: 리플(XRP) 상장 거래소: 업비트, 빗썸 일 회수 코인: 약 0.2코인 코인 획득: 획득한 포인트를 자동으로 리플코인으로 변환됨 출금 방법 코인 출금 최소 수량 2XRP 2.0~4.9XRP(수수료 1XRP) 5.0~9.9XRP(수수료 0.8XRP) 10.0~14.9XRP(수수료 0.6XRP) 15.0XRP~(수수료 0.4XRP) 최초 송금시 20XRP 이상 송금해야 함 네이버 페이 문화상품권 포인트 회수 방법 출석체크: 1550p + 포인트 뽑기 응모권 35장 포일트 생산소: 하루에 약 2300p 획득 실시간 뉴스: 뉴스 하나 보면 40~50p 획득 포인트 뽑기: 포인트 뽑기 응모권으로 번호 획득 후 토

Mac에서 MySQL설치, DB 및 User 생성 [내부링크]

MySQL 설치 Homebrew를 이용해 Mac에 MySQL를 설치하는 방법을 설명합니다. 이전 버전 mysql 삭제 과거 버전이 설치돼 있을 경우 다음과 같은 에러를 발생합니다. 'The server quit without updating PID file' 'unsupported redo log format' brew services list 명령어로 설치된 애플리케이션 확인 후 mysql 및 데이터 삭제 후 설치 진행해야 합니다. /usr/local/var/mysql 디렉토리는 mysql 로그 파일들이 있는 디렉토리 입니다. $ brew uninstall mysql $ rm -rf /usr/local/var/mysql brew로 설치할 mysql 정보 $ brew info mysql ==> mysql: stable 8.0.30 (bottled) mysql 설치 $ brew install mysql ... We've installed your MySQL database withou

Mac에서 anaconda 삭제 [내부링크]

anaconda 폴더 직접 삭제 anaconda는 보통 "/Users/{user_name}/opt/anaconda3" 경로에 설치됩니다. 해당 경로를 삭제 후 "bash_profile 수정"을 수행합니다. $ rm -rf /Users/{user_name}/opt/anaconda3 anaconda-clean 으로 제거 anaconda-clean 설치 anaconda-clean으로 삭제 후 해당 경로를 삭제 후 "bash_profile 수정"을 수행합니다. $ conda install anaconda-clean ## anaconda-clean이 설치되면 다음 명령어로 삭제합니다. $ anaconda-clean --yes .bash_profile 수정 .bash_profile에서 conda setup 하는 부분을 모두 주석 또는 삭제합니다. ## >>> conda initialize >>> ## !! Contents within this block are managed by 'conda

Airflow SequentialExecutor & LocalExecutor 설치 및 DAG 실행 [내부링크]

Airflow Executor 종류 및 개념은 다음 포스팅을 참고 바랍니다. https://blog.naver.com/mlljs1998/222888599066 Airflow Executor 종류 및 개념 설명 DAG 프로세서 및 태스크 스케줄러는 Airflow 스케줄러를 시작할 때 한 가지 방법에 의해서만 실행할 수... blog.naver.com Airflow 설치환경은 다음과 같습니다. 설치 환경 OS: Ubuntu 22.04 python: 3.10.6 airflow: 2.4.2 (현재 최신 버전) 다음은 Airflow에서 권장하는 pip script 파일입니다. Airflow는 재 설치를 위해 제약 조건 파일을 사용하므로 pip 및 제약 조건 파일을 사용하는 것이 좋습니다. 참고 바랍니다. # Airflow needs a home. `~/airflow` is the default, but you can put it # somewhere else if you prefer (opt

[금테크/앱테크]시럽(Syrup) & OK캐쉬백 포인트 금투자 [내부링크]

이번 포스팅은 SK플래닛에서 제공하는 시럽 앱을 이용해 포인트로 금 투자 방법을 공유드리겠습니다. SK플래닛 Syrup 포인트 투자의 장점은 투자금 필요 없이 투자를 할 수 있는 점이라고 생각합니다. 하지만 무료인 만큼 작은 포인트로 투자를 하니, 다소 시간이 오래 걸리는 단점이 있습니다. 하지만 투자금이 들어가지 않으니 짜투리 시간을 이용해서 모으면 훗날 목돈(?)을 만들 수 있다고 생각합니다. 금시세 현황 과거 금채굴 기술이 발달해 금 시세를 낮추었지만, 채굴할 금이 거의 채굴되고 인플레이션이 심각한 상황에 금값이 천정 지부로 오르고 있습니다. 또한 역사적으로 디플레이션에도 금은 강한 모습을 보여줬습니다. 새로운 금채굴 기술이 개발되지 않는 이상 금은 꾸준히 상승할 거라 생각됩니다. 시럽(Syrup) 시럽은 센골드와 연계해서 금투자 서비스인 야금야금을 출시했습니다. 시럽의 야금야금 서비스는 OK캐쉬백 포인트를 이용해 금투자를(최소 1000P) 할 수 있습니다. 다음 이미지는 시럽

데이터 파이프라인 소개 [내부링크]

데이터 파이프라인 소개 데이터 파이프라인은 DAG에 태스크와 그에 대한 의존성을 정의합니다. 이 그래프는 의존성을 가지고 구성된 태스크를 병렬 처리하여 효율적으로 실행합니다. 데이터 파이프라인 그래프 태스크간의 의존성을 명확하게 확인하는 방법 그래프에서 태스크는 노드로 표시 태스크 간의 의존성은 태스크 노드 간의 방향으로 표시 화살표 끝점의 방향은 태스크 간의 의존성을 나타냄. 태스크 A에서 태스크 B를 가리키는 화살표 끝점에 대한 의미는 태스크 A를 먼저 실행해야 태스크 B가 활성화됨을 뜻함 이러한 형태의 그래프는 방향성을 가지기 때문에, 방향성 그래프(directed graph) 이런 형태의 그래프는 일반적으로 방향성 비순화 그래프(Directed Acyclic Graph, DAG(대그))라고 부름 그래프는 화살표 방향성의 끝점(directed edge)을 포함하되 반복이나 순환을 허용하지 않음(비순화 acycle) 첫번째 태스크는 업스트림(이전 태스크에 대한) 의존성이 없고,

Airflow 소개 [내부링크]

Airflow 소개 Airflow는 airbnb에서 만든 workflow 관리 플랫폼입니다. Airflow를 사용하면 파이프라인이나 워크플로 태스크를 방향성 비순환 그래프(DAG)로 정의할 수 있습니다. 그래프에서 태스크는 노드로 정의하고 의존성은 태스크 노드 사이에 화살표로 표현합니다. Airflow는 파이썬 스크립트로 DAG의 구조를 설명하고 구성합니다. Airflow 파이프라인은 DAG 파일에 파이썬 코드로 DAG를 정의합니다. Airflow 구성 요소 Airflow 구성 요소 이미지 Airflow 스케쥴러: DAG를 분석하고 현재 시점에서 DAG의 스케쥴이 지난 경우 Airflow 워커에 DAG의 태스크를 예약합니다. Airflow 워커: 예약된 태스크를 선택하고 실행합니다. Airflow 웹서버: 스케쥴러에서 분석한 DAG를 시각화하고 DAG 실행과 결과를 확인할 수 있는 주요 인터페이스를 제공합니다. Airflow 스케쥴러 사용자가 DAG 워크플로를 작성하면, 스케줄러는

Docker Engine 설치 Install on Ubuntu [내부링크]

참고: https://docs.docker.com/engine/install/ubuntu/ Install Docker Engine on Ubuntu Instructions for installing Docker Engine on Ubuntu docs.docker.com 레파지토리 사용하여 설치 레파지토리 설정 $ sudo apt-get update $ sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release Docker;s official GPG Key 추가 $ sudo mkdir -p /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg $ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/

Airflow 설치 및 Hello World DAG실행하기 [내부링크]

Airflow에서 Hello World 수행하는 방법을 설명합니다. 절차 airflow 설치 hello_world.py 구현 airflow에서 web에서 helle_world.py 실행 파이썬 환경에서 Airflow 설치 python package airflow 설치 pip install apache-airflow airflow binary 경로 $ which airflow {HOME}/.local/bin/airflow 명령어 순서 메타스토어 초기화 사용자 생성 hellow_world.py을 airflow dags 디렉토리에 저장 스케줄러와 웹 서버 시작 $ airflow db init $ airflow users create --username admin --password admin --firstname Anonymous --lastname Admin --role Admin --email [email protected] $ cp hello_world.py ~/airflow/dag

Airflow Schedule 정의 [내부링크]

Schdule 하지 않은 DAG 사용자 이벤트 데이터는 BashOperator를 이용해 가져오고, 통계 및 계산은 PythonOperator를 사용해 Pandas DataFrame에 데이터 로드한 후 groupby 및 aggregation을 사용해 이벤트 개수를 확인합니다. import datetime as dt from pathlib import Path import pandas as pd from airflow import DAG from airflow.operator.bash import BashOperator from airflow.operator.python import PythonOperator dag=DAG( dag_id="schdule_id", start_date=dt.datetime(2022, 1, 1), # DAG의 시작 날짜를 정의 schedule_interval=None # 스케쥴되지 않는 DAG로 지정 ) fetch_events=BashOperator( tas

Airflow Scheduler & Executor [내부링크]

Scheduler에서는 여러 가지 역할을 수행합니다. DAG파일을 구문 분석하고 추출된 정보를 DB에 저장 실행할 준비가 된 태스크를 결정하고 이를 대기 상태로 전환 대기 상태에서 태스크 가져오기 및 실행 스케줄러, 일반 태스크 및 백필 태스크는 Airflow의 Job클래스에서 실행됩니다. CLI로 백필(backfilling)된 태스크는 BackfillJob에서 실행됩니다. DAG의 오퍼레이터는 LocalTaskJob에서 실행합니다. SchedulerJob: DAG 파일을 파싱하고 추출된 정보를 DB에 저장하는 역할을 합니다. DAG프로세서 Airflow스케줄러는 DAG디렉터리의 파이썬 파일을 주기적으로 처리합니다. 새롭게 추가된 DAG가 있으면 Airflow 메타스토어에 등록하는 역할을 수행합니다. 구성항목 설명 AIRFLOW__CORE__DAGS_FOLDER DAG 디렉터리 위치 설정를 설정합니다. DAG 처리 각격 시간 설정 DAG 파일이 변경되지 않는 경우에도 주기적으로 각

[Maven]transfer failed for http://repo1.maven.org/maven2/....pom, status: 501 HTTPS Required [내부링크]

Error Message transfer failed for http://repo1.maven.org/maven2/....pom, status: 501 HTTPS Required Solution repository protocol을 http에서 https로 변경해 줘야한다. <repositories> <repository> <id>central</id> <url>https://repo1.maven.org/maven2</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> .... </repositories>

JDK8: self-closing element not allowed [내부링크]

JDK8 has issues with HTML tags in javadoc : <br /> and <p /> [ERROR] Exit code: 1 - /Users/devwebcl/development/workspace-java/ehcache-jcache/ehcache-jcache/src/main/java/org/ehcache/jcache/JCacheCachingProvider.java:39: error: self-closing element not allowed 38: * A JSR107 adapter for EHCache. 39: * <br /> More details at: http://stackoverflow.com/questions/26049329/javadoc-in-jdk-8-invalid-self-closing-element-not-allowed This workaround can be applied to Maven as well (pom.xml): <plugin> <gr

[centos]rsync 명령어(옵션) [내부링크]

rsync (Remote Sync)는 site간의 파일 또는 디렉토리의 동기화를 위한 유틸리티입니다. 서버파일 명령어인 scp는 모든 파일을 전송하는 반면, rsync는 변경된 파일만 전송을 함으로써 더 빠르고 효율적인 전송이 가능합니다. 백업으로도 많이 사용되고, 소스등을 동기화 하는 식으로도 많이 사용됩니다. 델타 전송 알고리즘: 변경 사항만 동기화(복사)해 네트워크를 트래픽량이 줄어듬 rsync 설치 # yum install rsync rsync는 873 포트를 사용합니다. 때문에 방화벽을 사용하신다면 873포트를 허용해야 합니다. firewall-cmd 명령어로 추가 할수도 있지만 저는 vi에서 직접 추가하도록 하겠습니다. 참고로 방화벽을 vi로 직접 추가, 수정을 해주는데 그 이유는 주석등 관리를 위해서 직접하고 있습니다. # vi /etc/firewalld/zones/public.xml <!-- rsync --> <port protocol="tcp" port="873"/>

[HIVE] HQL파일 실행할 때 변수(Param) 넘기는 방법 [내부링크]

개요 hive 실행하면서 변수(parameter)를 넘기는 방법은 -hiveconf, -hivevar 옵션을 사용하는 두 가지 방법이 있습니다. 사용 방법은 둘이 동일하지만, hive 3.0부터는 hiveconf 사용이 안돼서 hivevar를 사용하길 권장합니다. hivevar 사용 방법 hive와 beeline에서 사용이 가능하며 같은 -hivevar 옵션을 사용합니다. hive -f test.hql -hivevar dt=20190923 beeline -f test.hql -hivevar dt=20190923 test.hql 파일에서 변수 받는 방법(조건으로 날짜를 받는 예제) select * from admin.test where crt_dt='${hivevar:dt}';

gzip을 사용하여 효과를 볼 수 있는 최소 데이터 사이즈 [내부링크]

gzip을 사용하여 효과를 볼 수 있는 최소 데이터 사이즈 범위는 150 ~1000 바이트라고 하며, 150바이트 미만의 파일은 더 커질 수 있다고 한다. 아래는 원문이다. Enable compressionOverview Compressing resources with gzip or deflatecan reduce the number of bytes sent over the network. Details Most modern browsers support data compression for HTML, CSS, and JavaScript files. This allows content to be sent over the network in more compact form and can result in a dramatic reduction in download time. Many web servers can compress files in gzip format before sendi

2&gt;&1 의미 [내부링크]

2>&1 는 표준에러를 표준출력으로 redirection 하라는 의미입니다. 0 :표준입력 1 :표준출력 2 : 표준에러처음 "> /dev/null" 은 표준출력을 /dev/null로 보내고 (즉, 버린다는 뜻)이고 두번째 부분인 "2>&1"은 표준에러를 표준출력이 보내진 곳과 동일한 곳으로 보낸다는 뜻이다. < filename 입력 방향을 바꾼다. > filename 출력 방향을 바꾼다. >> filename 출력에 덧붙인다. 2> filename 오류의 방향을 바꾼다. 2>> filename 오류의 방향을 바꾸고 덧붙인다. &> filename 출력과 오류를 리다이렉션 한다. >& filename 오류와 출력을 리다이렉션 한다. 1>&2 출력을 오류로 내보낸다. 2>&1 오류를 출력으로 내보낸다. >| 출력을 리다이렉션 할 때 NOCLOBBER 설정을 무시한다 <> filename 장치 파일(/dev)이면, 표준 출력, 표준 입력 등에 모두 사용한다.

[Linux]CPU 정보 & OS 정보 확인 [내부링크]

리눅스의 cpu 정보에 대해 알아보겠습니다. 리눅스는 각종 정보들을 파일로 관리하고 있습며, cpuinfo파일에 cpu정보들이 담겨져 있습니다. 명령어를 통해서 cpu 정보에 대해 알아보겠습니다. CPU 정보 확인 명령어 CPU 정보 확인 # cat /proc/cpuinfo CPU 코어 전체 개수 확인 # grep -c processor /proc/cpuinfo 물리 CPU 수 확인 # grep "physical id" /proc/cpuinfo | sort -u | wc -l CPU당 물리 코어 수 확인 # grep "cpu cores" /proc/cpuinfo | tail -1 Hyper Threading 여부 # cat /proc/cpuinfo | egrep 'siblings|cpu cores' | head -2 siblings의 값이 cpu cores 값의 2배 라면 Hyper Threading이 활성화 된 것이다. Hyper Threading이 활성화 되면, 물리코어 1개를

Shell Script substring 문자열 조작 [내부링크]

Shell Script 문자열 조작에 대해서 확인해 보도록 하겠습니다. 1. 특정 문자에 대해서 필요한 부분만 추출 ${String:Position} 문자:인덱스 형식: 숫자부터 끝까지 출력합니다. #!/bin/bash str1=abc012 str2=abcd0123 # 인덱스는 0부터 시작합니다. echo "${str1:1}" # 문자 1에서 끝까지 출력 echo "${str2:1}" # 문자 1에서 끝까지 출력 # 실행 결과 bc012 bcd0123 2. 특정 문자에 대해서 필요한 문자 길이까지 추출 ${String:Position:length} 문자:인덱스:길이 형식으로 사용합니다. #!/bin/bash str1=abc012 str2=abcd0123 echo "${str1:2:3}" # 문자 2부터 3길이 문자 출력 echo "${str2:2:3}" # 문자 2부터 3길이 문자 출력 # 실행 결과 c01 cd0 3. 정규식 표현을 이용한 추출 정규식 표현 방법 * : n개 반복

MariaDB/MySQL DDL(CREATE, ALTER, DROP) Query [내부링크]

데이터베이스 생성 CREATE DATABASE CREATE DATABASE 문은 새로운 데이터베이스를 생성해 줍니다. CREATE DATABASE 데이터베이스이름 User 생성 CREATE USER CREATE USER 문은 새로운 사용자를 생성해 줍니다. create user oozie@localhost identified by 'user'; grant all privileges on user.* to user@localhost; grant all privileges on user.* to user@'%'; grant all privileges on airflow.* to user@localhost; grant all privileges on airflow.* to user@'%'; ## 권한 삭제 revoke all on dbname.table from userid@host ## 권한 조회 show grants for userid@host 테이블 생성 CREATE TABLE 데이

Bash에서 while 루프를 사용하는 방법 [내부링크]

목 차 구문 : Bash의while 루프 예 : Bash의while 루프 예 : Bash의 무한while 루프 예 :break 문이있는 Bash의while 루프 예 :continue 문이있는 Bash의while 루프 while 루프는 거의 모든 프로그래밍 언어에서 가장 널리 사용되는 루프 구조 중 하나입니다. 루프를 실행해야하는 횟수를 모르는 경우에 사용됩니다. while 루프에 대한 조건을 지정할 수 있으며 조건이 거짓이 될 때까지 루프의 명령문이 실행됩니다. 구문 : Bash의while 루프 while [condition] do command-1 command-2 ... ... command-n done 여기서 condition은 루프에서 명령을 실행하기 전에 매번 확인해야하는 조건을 나타냅니다. ‘조건’이 참이면 루프에서 문을 실행합니다. ‘조건’이 거짓이면 루프를 종료합니다. command-1에서command-n까지의 문장은condition이 거짓이 될 때까지 루프에서 실행되

bash shell에서 exec와 eval 기능 설명 [내부링크]

eval과 exec는 둘다 bash의 내장 명령어 입니다. evec $ help exec exec: exec [-cl] [-a name] [command [arguments ...]] [redirection ...] Replace the shell with the given command. exec cmd가 하는 일은, 그냥 cmd를 실행 했을때와 완전히 동일합니다. 다만, 다른 프로세스를 띄워서 명령어를 실행하는것이 아닌, 현재의 쉘을 명령어로 대체하게 됩니다. 내부적으로는, 예를들어 /bin/ls를 실행 할 경우 fork()를 호출하여서 자식 프로세스를 만든 후에 생성된 자식 프로세스 내에서 exec()를 재호출해서 /bin/ls를 실행하게 됩니다. exec /bin/ls는 이 과정(fork() 호출)을 거치지 않고 명령어를 실행하게 됩니다. 아래의 두 예제를 봅시다. $ bash -c 'echo $$ ; ls -l /proc/self ; echo foo' 7218 lrwxrwx

Mac에서 Hadoop 설치 [내부링크]

Hadoop 설치 1. homebrew를 통해 hadoop package 설치 $ brew install hadoop 2. hadoop이 설치된 경로는 아래와 같이 명령하여 확인할 수 있다. $ brew info hadoop hadoop: stable 3.3.0 Framework for distributed processing.. 3. 다음 경로에 hadoop이 설치됩니다. hadoop home directory: /usr/local/Cellar/hadoop/3.3.0 Hadoop 설정 파일 core-site.xml 설정 <configuration> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/Cellar/hadoop/hdfs/tmp</value> <description>A base for other temporary directories.</description> </property> <property> <name>fs.de

union error missing all at 'select' near [내부링크]

If you are on a Hive version prior to 1.2, only union all is supported. So you'll have to use union all, and wrap an outer query around it for the distinct: select distinct user from (select user from product1 union all select user from product2...) t https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Union LanguageManual Union - Apache Hive - Apache Software Foundation cwiki.apache.org

Oozie Hello World 예제 [내부링크]

HelloWord Class 구현 및 jar 생성 public class HelloWorld { public static void main(String[] args) { // write your code here System.out.println("Hello World"); } } jar cvf HelloWorld.jar HelloWorld.class Oozie 설정 파일 생성 job.properties 작성 nameNode=hdfs://localhost:9000 jobTracker=localhost:8032 queueName=default oozie.wf.application.path=${nameNode}/user/oozie-test workflow.xml 작성 <?xml version="1.0" encoding="UTF-8"?> <workflow-app xmlns="uri:oozie:workflow:0.4" name="hello-world-wf"> <start to="java-n

Error: E0803 : Coord Job update Error: [Frequency can't be changed. Old frequency new frequency] [내부링크]

http://www.java2s.com/example/java-src/pkg/org/apache/oozie/command/coord/coordupdatexcommand-94f58.html org.apache.oozie.command.coord.CoordUpdateXCommand.java Source code Introduction Here is the source code for org.apache.oozie.command.coord.CoordUpdateXCommand.java Source /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regard... www.java2s.com Check. Freque

Oozie 설치 [내부링크]

https://riptutorial.com/oozie bin/mkdistro.sh -DskipTests cp /usr/local/lib/oozie/server/target/dependency/* /usr/local/lib/oozie/distro/target/oozie-5.2.1-distro/oozie-5.2.1/libext/ cp /usr/local/lib/hive/lib/mysql* /usr/local/lib/oozie/distro/target/oozie-5.2.1-distro/oozie-5.2.1/libext/ 권한 변경 - chmod -R 777 /usr/local/lib/oozie/distro/target/oozie-5.2.1-distro/oozie-5.2.1/ /usr/local/lib/oozie/distro/target/oozie-5.2.1-distro/oozie-5.2.1 위에서 - mkdir libext - ./bin/oozie-setup.sh sharelib crea

Hadoop2 특징 [내부링크]

Hadoop1 약점 Hadoop1 - 2계층(HDFS계층과 MR계층)으로 구성 - 맵리듀스 처리와 자원관리 기능 수행 Hadoop1 약점 배치에 최적화되어 있음(리얼타임에 약함) MapReduce만 지원함. 잡트래커가 하나가 MapReduce을 관리와 시스템 자원 관리를 같이하여 무리가 있었음. 맵/리듀스 작업의 자원활용에 문제점이 있음 Hadoop2 HDFS 계층과 MR 계층 중간에 자원관리 를 담당하는 YARN (Yet Another Resource Negotiator) 계층 추가 Yarn (Yet Another Resource Negotiator) - HDFS 계층과 MR 계층 중간에 YARN 을 구성해 리소스(자원)관리 수행 (MapReduce - YARN - HDFS) - MapReduce이외의 데이터 처리 모듈이 하위의 HDFS를 공유할 수 있음 즉, 여러 Data Processing 지원 - 자원을 다양한 응용 프로그램에 효율적으로 할당하고 사용자 응용 프로그램을 효율적

pyspark csv read separator bug [내부링크]

개발환경 IDE: Intelli-J Python: 3.9 Gradle: group: 'org.apache.spark', name: 'spark-core_2.13', version: '3.2.1' 배경 회사에서 HDFS에 저장된 원본 데이터를 가공해서 HDFS에 재 적재하는 업무를 수행 했습니다. pyspark을 사용해 HDFS 데이터를 읽어 특정 컬럼으로 필터링해 HDFS에 데이터를 재적하는 프로그램을 구현했습니다. 데이터 결과를 검증하니 이상한 점이 발결돼 내용을 공유합니다. 소스는 다음과 같습니다. Pyspark Source from pyspark.sql import SparkSession spark = SparkSession.builder.appName('IntelliJ').master('local').getOrCreate() spark.read.format('csv').csv('/data/inputData.txt').show(10, False) 문제점 확인 다음 이미지에서 위

네이버 블로그 네이버/구글/다음 검색기 등록 [내부링크]

네이버 네이버 검색엔진에는 자동으로 등록됩니다. Goole 구글의 검색기에 등록하려면 사이트가 html 변환되는 사이트여야 합니다. 그래서 티스토리는 구글에 등록이 가능하지만, 네이버 블로그는 안된다. 따라서 네이버 블로그는 구글 웹마스텉도구를 이용하지 못하지만, 우회적으로 키자드 프로그램을 이용해 구글 검색기에 등록할 수 있습니다. Google search console with Keyzard keyzard 사이트에 회원 가입 및 네이버 ID 연동이 필요합니다. 네이버 ID연동은 마이페이지에서 수행할 수 있습니다. 이후 등록할 블로그 주소를 넣습니다. 블로그 전체를 등록할 수 있지만, 포인트가 필요합니다. https://keyzard.org/ 키자드 - keyzard 블로그 운영에 유용한 키워드와 분석 정보 및 실시간 검색어와 검색어 정보도 제공합니다. Google 검색 지원 및 SEO 최적화에 필요한 백링크 등록도 지원합니다. keyzard.org 구글 검색 등록 - 검색 등록은

Yarn (Yet Another Resource Negotiator) [내부링크]

Yarn - HDFS 계층과 MR 계층 중간에 YARN 을 구성해 리소스(자원)관리 수행 (MapReduce - YARN - HDFS) - MapReduce이외의 데이터 처리 모듈이 하위의 HDFS를 공유할 수 있음 즉, 여러 Data Processing 지원 - 자원을 다양한 응용 프로그램에 효율적으로 할당하고 사용자 응용 프로그램을 효율적으로 스케줄링 함 - 애플리케이션마스터 (AM-Application Master)가 애플리케이션 별로 리소스를 관리함 작업을 관리 - 잡트래커 하나가 전체 시스템을 관리하는 형태에서 애프리케이션 별로 관리함 - 잡트래커+태스트트래커 -> 리소스매니저+노드매니저 - 시스템 리소스 관리와 잡 관리를 분리 - 클러스터의 자원을 컨테이너(Container)로 분할 - 컨테이너는 할당되는 CPU 코어 수와 메모리 용량으로 정의됨 - 실행 중인 컨테이너들을 모니터링 함 - 컨테이너가 자원(CPU, 메모리, 디스크, 네트워크 등)의 최대 할당량을 초과하지 않

HDFS(Hadoop Distributed File System) [내부링크]

하둡 분산 파일 시스템 - 대용량 파일 읽기 및 쓰기 작업에 최적화된 파일 시스템 - 파일의 메타정보는 네임노드(마스터노드)가 관리하고 실제 블록 데이터는 데이터노드(작업노드)에서 분산 저장됨 - 분산 파일 시스템은 유져 입장에서는 하나로 보이지만 물리적으로 분산/쪼개져 있고 네임노드가 데이터 노드를 관리함 - 파일시스템 관점에서는 하나의 클러스터의 파일 시스템 네임노드 - 메타정보를 보관 - SPOF(single point of failure) - Active-standby 형태로 운영 - Fsimage, Edit Log(변경로그) 메타정보 - HDFS에 있는 각 블록의 파일위치, 사용자, 권한 등에 대한 정보 Fsimage - 데이터노드에 저장된 블록들에 대한 정보 EditLog - 블록정보에 대한 변경 사항 보조네임노드(Secondary Namenode) - 최신이 메타정보를 유지하기 위해서 주기적으로 체크포이트를 만듦 즉, 최신의 fsimage를 생성하는 역할 - 네임노드의

MapReduce 시작하기 [내부링크]

MapReduce 개념 MapReduce 프로그래밍 모델은 Map과 Reduce 두 단계로 데이터를 처리합니다. Map은 입력 파일을 한 줄씩 읽어서 데이터를 변형(transformation)하고, Reduce는 Map의 결과 데이터를 집계(aggregation)합니다. MapReduce 처리 과정 Map(k1, v1) -> list(k2, v2) Reduce(k2, list(v2)) -> (k3, list(v3)) Map은 key(k1)와 value(v1)으로 구성된 데이터를 입력받아 이를 가공하고 분류한 후, 새로운 key(k2)와 value(v2)으로 구성된 목목을 출력합니다. 이 Map 메서드가 반복 수행되므로 여러개의 데이터가 만들어집니다. Reduce는 새로운 key(k2)로 그룹핑된 값의 list(v2)을 일겨 데이터로 전달 받습니다. 그리고 값의 목록(list(v2))에 대한 집계 연산을 실행해 새로운 key(k3)로 그룹핑된 새로운 value(v3)의 목록을 생성합니

Windows 기반 hadoop 설치 및 WordCount 예제 시행 - IntelliJ [내부링크]

Hadoop은 Linux 기반으로 운영되지만, 국내 많은 개발자들은 Windows 환경에서 개발을 합니다. 이번에는 Windows 운영체제에서 Hadoop Single Node 모드를 설치하는 방법을 알아보겠습니다. 또한 Hadoop에서 제공하는 WordCount 예제를 실행하겠습니다. 설치 환경 OS: Windows10 Hadoop: hadoop.2.8.5 Java: jdk8 IDE: IntelliJ Hadoop Binary Download https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz 시스템 환경 변수 설정 하둡 스타트 하는 데는 환경 변수 설정이 필요합니다. Windows 검색에서 "시스템 환경 변수 편집 - 고급 - 환경 변수"에서 다음 값을 설정합니다 환경 변수 설명 값 JAVA_HOME Java Home Directory C:\Java\jdk1.8.0_202 HADOO

Hadoop java.io.IOException: Mkdirs failed to create /var/X/y6/folder/T/hadoop-unjar/META-INF/license [내부링크]

개발배경 Mac에서 Hadoop 기능 테스트를 수행하기 위해서 Test.jar를 생성 후 Terminal에서 수행한다. 에러 메세지 hadoop 명령어로 Test.jar를 수행하면 다음과 같은 에러가 발생하였다. Exception in thread "main" java.io.IOException: Mkdirs failed to create /var/folders/y6/469lts8s0s57hjwf8fvjs0jsrrhs6g/T/hadoop-unjar871930537071292913/META-INF/license at org.apache.hadoop.util.RunJar.ensureDirectory(RunJar.java:128) at org.apache.hadoop.util.RunJar.unJar(RunJar.java:104) at org.apache.hadoop.util.RunJar.unJar(RunJar.java:81) at org.apache.hadoop.util.RunJar.ru

[Hive]HDFS/LOCAL File System에 데이터 쓰기 - INSERT OVERWRITE DIRECTORY [내부링크]

Description INSERT OVERWRITE DIRECTORY with Hive 형식은 Hive SerDe를 사용하여 디렉터리의 기존 데이터를 새 값으로 덮어씁니다. Query Syntax INSERT OVERWRITE [ LOCAL ] DIRECTORY directory_path [ ROW FORMAT row_format ] [ STORED AS file_format ] { { VALUES ( { value | NULL } [ , ... ] ) [ , ( ... ) ] } | query } Parameters directory_path 대상 디렉토리를 정의합니다. LOCAL 키워드는 대상 디렉토리가 로컬 파일시스템 일 때 사용합니다. row_format INSERT 명령의 row_format(행 형식)을 정의합니다. Option은 SERDE clause 와 DELIMITED clause 있습니다. - SERDE: SERDE 절을 사용하여 이 삽입에 대한 사용자 지정 SerD

빅데이터 시스템 개념 [내부링크]

빅데이터 시스템 개념 빅데이터 시스템이란 단순히 파일 크기가 크다 파일을 처리한다는 의미가 아니다. 빅데이터 시스템이란 파일의 크기와 그 파일을 처리방식 모두 만족해야 한다. 즉 데이터 저장에 필요한 HDFS 와 같은 분산파일시스템 과 이 데이터를 처리하는 MapReduce 와 같은 분산병렬처리프레임워크 를 가지고 있어야 빅데이터 처리 시스템이라고 할 수 있다. 보통 수십 테라 이상의 크기의 테이터로 일반적인 DBMS로 처리하지 못하며, 서버 한 대로 처리할 수 없는 규모의 데이터를 말한다. 대표적인 시스템으로는 하둡(Hadoop)이 있다. RDBMS와 NoSQL의 비교 및 Bigdata 필요성 보통 일반적인 DBMS는 빠른 읽기에 최적화(R»CUD)되어있어 CUD가 일어나면 인덱스 수정해야 하는 작업이 있다. 이는 데이터가 빈번히 생성/주정/삭제되는 시스템에 적합하지 않다. 반면 NoSQL(Not Only SQL)은 빠른 쓰기에 최적화면 DB이다. 데이터의 사이즈가 수십 테라로 커

Hadoop Architecture [내부링크]

하둡 아키텍처 하둡은 분산파일시스템 HDFS(Hadoop Distributed File System)과 분산처리 기술인 MapReduce 기술이 결합된 기술이다. 하둡(Hadoop) = HDFS(Big file system) + MapReduce(분산처리 시스템) 하둡 클러스터 동작 방식 독립 모드(Standalone Mode) - 데몬 프로세스 없이 모든 프로그램이 하나의 JVM에서 동작하는 모드 - 맵리듀스 프로그램을 동작시키고 개발 테스트하는 동안에 사용 - HDFS를 사용하지 않고 로컬 파일 시스템을 사용 Single Node 의사분산 모드(Pesudo-distributed Mode) - 1대의 컴퓨터에 하둡 데몬 프로세스가 여러 개 분리되어 동작하는 모드 - 클러스터를 테스트, 디버깅, 프로토 타이핑하는 경우에 사용 - HDFS 사용 Pesudo-Distributed Mode 완전분사 모드(Fully distributed Mode) - 하둡 데몬 프로세스가 클러스터로 구성된

MapReduce WordCount 예제 [내부링크]

개발 환경 OS: Windows10 Mapper 구현 클래스는 키가 라인 번호이고 값이 문장인 입력 파라미터를 받아 키가 글자이고, 값이 글자 수인 목록을 출력합니다. WordCount Mapper 역할 1. 입력 파라미터의 값인 문장을 공백 단위로 구분해 글자 수를 계산합니다. 2. 구분된 글자는 즉시 출력 파라미터에 추가합니다. 이때 글자는 하나이므로 글자 수를 1로 설정합니다. 매퍼 클래스는 다음과 같은 제네릭 파라미터를 선언합니다. 제네릭 파라미터는 <입력 키 타입, 입력 값 타입, 출력 키 타입, 출력 값 타입> 입니다. Mapper<LongWritable, Text, Text, IntWritable> 입력 데이터를 분석하기 위해서 매퍼 클래스의 맵 메서드를 재정의 합니다. 제네릭 파라미터는 <입력 키 타입, 입력 값 타입, Context 객체> 입니다. public void map(LongWritable key, Text value, Context context) 입력/출

Hadoop3 Full Distributed Mode(완전 분산 모드) 설치 [내부링크]

목적 완전 분산 모드 환경에서 Hadoop MapReduce와 HDFS를 사용하기 위해서 완전 분산 모드 설치와 설정 방법을 설명합니다. 설치환경 OS: ubuntu-18.04.4-desktop-amd64 Java: java-8-openjdk Hadoop: hadoop-3.3.1 다운로드 Hadoop3: https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz 전제조건(prerequisite) 1. Unbuntu update and upgrade sudo apt-get update sudo spt-get upgrade 2. 소프트웨어 설치 open-8-openjdk: Hadoop 3은 JDK8 이상에서 운영됨 ssh 및 ssh server: ssh 프로토콜을 사용해 NameNode와 DataNode 통신함 net-tools 설치: ifconfig 명령어 수행을 위한 library sudo apt-get insta

Linux에서 MariaDB 설치 및 사용법 [내부링크]

설치환경 OS: Ubuntu MariaDB 설치 및 접속 MariaDB 설치는 root 권한으로 실행해야 한다. mariaDB를 설치하면, mysql user가 자동 생성된다. MariaDB 설치 sudo apt-get install -y mariadb-server mysql 사용자 확인 cat /etc/passwd | grep mysql MariaDB 접속 Unix Socket 방식으로 DB에 접속한다. Unix Socket의 설명은 하단에 있다. sudo mysql MariaDB 시작 service mysql start systemctl start mysql.service MariaDB 재시작 service mysql restart /etc/init.d/mysql restart mysql.server restart systemctl restart mysql.service MariaDB 서비스 확인 sudo service –status-all |grep mysql utf8mb4 인

Mac Big Sur or Monterey read-only file system [내부링크]

My company requires to read/write environment informations under /data/webapps/appenv. Therefore, this workaround shared by a colleague of mine might not answer this question directly, but it is super useful if you want to write something under your root path! Create a file: sudo vim /etc/synthetic.conf. Write content: <dir>/System/Volumes/Data/<dir>. Notice: the is a tab! In my case, it looks like this: data/System/Volumes/Data/data Go to /System/Volumes/Data and do sudo mkdir <dir>. Then do s