Airflow 재설치 및 데이터 파이프라인 구축

Setting up Apache-Airflow in Windows using WSL2 - Data Science | DSChloe

Airflow 데이터 파이프라인 구축 예제 - Data Science | DSChloe

  • 체크포인트
  1. 가상환경을 만들 수 있는냐 (virtualenv 라이브러리)

  2. 경로 이동이 자유로운가? cd 사용

  3. 환경 변수를 이해하고 잡을 수 있는가?

    vi 편집기를 자유자재로 쓸 수 있는가?

  4. 파이썬 라이브러리를 가상환경에 자유자재로 설치 할 수 있는가?

  5. 가상 환경에 자유롭게 출입할 수 있는가?

  • 사전 준비

VSCord 의 airflow.cfg 에서 진행

→ 내용 변경 : load_examples = True ⇒ False

→ c드라이브 → airflow_test → dags와 chapter03, chapter04 를 배경화면에 빼둔다.

Untitled

  • airflow-test 내용물 삭제

Ubuntu 의 airflow 경로에서 진행

→deactivate

→sudo rm -rf *

  • 다시 가상환경 생성

→virtualenv venv

→ls

  • 필요한 내용이 작성되어 있는지 확인

→ vi ~/.bashrc

→ 내용 확인 : export AIRFLOW_HOME=/mnt/c/airflow-test

→ source ~/.bashrc

→ echo $AIRFLOW_HOME

→pwd

  • 가상환경 on

→ source venv/bin/activate

  • 라이브러리 설치

→ pip3 install 'apache-airflow[postgres, slack, celery]'

  • db 설정

→ airflow db init

  • 계정 등록
  • firstname이 실행 결과에 영향을 주는가

→ airflow users create --username airflow --password airflow --firstname evan --lastname airflow --role Admin --email your_email@some.com

  • VSCord 에서 진행

→ 폴더 생성 : ( file → open folder → airflow-test )

→ airflow.cfg 파일

→ 내용 변경 : load_examples=True ⇒ False

Untitled

  • Ubuntu 에서 진행

→ airflow db reset

→ 가상 환경 상태에서 다음 코드 실행

→ airflow webserver -p 8080

Untitled

→ ctrl + c 로 빠져나온다.

데이터 파이프라인 구축

개요

  • 이번에는 CSV-JSON으로 데이터를 변환하는 파이프라인을 구축하도록 한다.

Step 01. Dags 폴더 생성

  • 프로젝트 Root 하단에 Dags 폴더를 만든다.

    • dags 폴더를 확인한다.
  • dags 파일 생성

→mkdir dags

→ls

Step 02. 가상의 데이터 생성

  • 라이브러리 설치

→ 가상 환경에서 진행

→ pip3 install faker pandas

  • 폴더, 파일 생성

→ mkdir data

→ cd data

→ vi step01_writecsv.py

→ 코드 작성.

+ 앞으로는 이런 방식으로 코드를 작성한다.

+실무에서 필요한 습관이다.
  • faker 라이브러리를 활용하여 가상의 데이터를 생성한다. (파일 경로 : data/step01_writecsv.py)

Untitled

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from faker import Faker
import csv
output=open('data.csv','w')
fake=Faker()
header=['name','age','street','city','state','zip','lng','lat']
mywriter=csv.writer(output)
mywriter.writerow(header)
for r in range(1000):
mywriter.writerow([fake.name(),
fake.random_int(min=18, max=80, step=1),
fake.street_address(),
fake.city(),
fake.state(),
fake.zipcode(),
fake.longitude(),
fake.latitude()])
output.close()
  • 코드를 실행한다.
  • VSCord에서 data.csv 파일이 생성되어야 한다.

→ python3 step01_writecsv.py

→ ls

→ cat data.csv

Step 03. csv2json 파일 구축

  • 이번에는 CSV와 JSON 변환 파일을 구축하는 코드를 작성한다. (파일 경로 : dags/csv2json.py)\
  • 주요 목적 함수 csvToJson()의 역할은 data/data.csv 파일을 불러와서 fromAirflow.json 파일로 변경하는 것이다.
  • DAG는 csvToJson 함수를 하나의 작업으로 등록하는 과정을 담는다. 작업의 소유자, 시작일시, 실패 시 재시도 횟수, 재시도 지연시 시간을 지정한다.
  • print_starting >> csvJson 에서 >> 는 하류 설정 연산자라고 부른다. (동의어 비트 자리이동 연산자)

→cd ..

→cd dags

→vi csv2json.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import datetime as dt
from datetime import timedelta

from airflow import DAG
from airflow.operators.bash import BashOperator
from airflow.operators.python import PythonOperator

import pandas as pd

def csvToJson():
df=pd.read_csv('data/data.csv')
for i,r in df.iterrows():
print(r['name'])
df.to_json('fromAirflow.json',orient='records')

default_args = {
'owner': 'human',
'start_date': dt.datetime(2020, 3, 18),
'retries': 1,
'retry_delay': dt.timedelta(minutes=5),
}

with DAG('MyCSVDAG',
default_args=default_args,
schedule_interval=timedelta(minutes=5), # '0 * * * *',
) as dag:

print_starting = BashOperator(task_id='starting',
bash_command='echo "I am reading the CSV now....."')

csvJson = PythonOperator(task_id='convertCSVtoJson',
python_callable=csvToJson)

print_starting >> csvJson
  • 코드를 실행한다.
  • VSCord에서 json 파일이 생성되어야 한다.

→python3 csv2json.py

Step 04. Airflow Webserver 및 Scheduler 동시 실행

  • 이제 웹서버와 스케쥴러를 동시에 실행한다. (터미널을 2개 열어야 함에 주의한다.)

VSCord 에서 WSL 터미널을 2개 띄운다.

→ airflow webserver -p 8080

→airflow scheduler

Untitled

  • error 발생할 경우 대처

airflow.cfg의 endproint_url = 8080 체크

→airflow db reset

→airflow webserver -p 8080

→airflow scheduler

→ 이 과정을 반복

→ 그래도 안 되면 airflow 지우고 다시 시작

이제 WebUI를 확인하면 정상적으로 작동하는 것을 확인할 수 있다

Step 05. 작업 결과물 확인

  • 최초 목적인 fromAirflow.json 로 정상적으로 변환되었는지 확인하도록 한다.

    • fromAirflow.json 파일이 확인된다면, 정상적으로 작업이 끝난 것이다.

    → ls

    → 다음 내용이 출력되면 성공

    → airflow-webserver.pid airflow.cfg airflow.db dags data fromAirflow.json logs venv webserver_config.py

    • 팁

    human@DESKTOP-V24TVMS:/mnt/c/airflow$ export AIRFLOW_HOME="$(pwd)"

    human@DESKTOP-V24TVMS:/mnt/c/airflow$ echo $AIRFLOW_HOME

  • Reference : 실무 예제로 배우는 데이터 공학

VSCord Install

VSCode Remote WSL

VSCode Remote WLS 연동 - Data Science | DSChloe

  • eclipse 보다 가볍다

VSCode 설치

Untitled

  • 설치 시, 환경 변수 체크란 잘 확인한다.

Untitled

  • 설치가 다 끝난 후에는 재부팅을 실시한다.
  • 관리자 권한으로 실행 : visual studio

Remote WSL 연동

  • 좌측 탭에서 Extension 버튼을 클릭한다.

Untitled

  • 검색 창에서 Remote WSL을 검색 후, 설치를 진행한다.

Untitled

  • 모두 클릭 후, Mark Done을 선택한다.

Untitled

  • Open Folder를 클릭한다.

Untitled

  • WSL에서 설치했던 airflow-test 폴더를 선택한다.

file → Open Folder → c 드라이브 → airflow_test 열기

Untitled

  • 메뉴 바에 Terminal 선택 후, 화면 하단에서 WSL이 있는지 확인한다.
  • Terminal 열어서 Ubuntu 실행한다.

Terminal

→ new terminal

→ 우측의 + 버튼으로 Ubuntu(WSL) 열기

Untitled

사용법

  • 해당 메뉴를 클릭하면 아래와 같이 터미널이 변경된 것을 확인할 수 있다.
  • 이번엔 서버를 가동해본다.

→ source venv/bin/activate

→ airflow webserver -p 8081

  • 사용해본다.

→ which python3

라이브러리 설치

  • 앞으로 ubuntu를 키지 않고 VScode에서 사용한다.
  • 라이브러리를 설치한다.

→pip3 install faker

→pip3 install pandas

실습

  • 파이썬 사용

폴더 생성 : 폴더 그림+ 버튼

→ chapter03 폴더 생성

→ 파일 생성 : 파일 그림+ 버튼

→ hello.py 파일 생성

→ 내용 작성 : print(”Hello World!”)

→ save ( ctrl + s)

Untitled

wsl Terminal 에서 다음 내용 작성

→ cd chapter 03/

→ python3 hello.py

→ hello.py 실행되면 성공

Untitled

  • 가상파일 만들기

파일 생성 : step01_writecsv.py

→ 코드 작성 : 실무 예제로 배우는 데이터 공학 44p

from faker import Faker import csv output=open('data.csv','w') fake=Faker() header=['name','age','street','city','state','zip','lng','lat'] mywriter=csv.writer(output) mywriter.writerow(header) for r in range(1000): mywriter.writerow([[fake.name](http://fake.name/)(),fake.random_int(min=18, max=80, step=1), fake.street_address(), fake.city(),fake.state(),fake.zipcode(),fake.longitude(),fake.latitude()]) output.close()

→ 저장 후 실행 : python3 step1_writecsv.py

→ data.csv 파일이 생성된다.

파일 생성 : step02_readcsv.py

→ 코드 작성 : 실무 예제로 배우는 데이터 공학 44 ~ 45p

import csv

with open('data.csv') as f:

myreader = csv.DictReader(f)

headers = next(myreader)

for row in myreader:

print(row['name'])

→ 저장 후 실행 : python3 step2_readcsv.py

→ 여러 사람의 이름이 출력되면 성공

파일 생성 : step03_pandas.py

→ 코드 작성 : 실무 예제로 배우는 데이터 공학 p

import pandas as pd

df = pd.read_csv('data.csv')

df.head(10)

df.to_csv('fromdf.csv', index=False)

→ 저장 후 실행

→ data.csv 파일 내용과 동일한 fromdf.csv 파일이 생성된다.

파일 생성 : step04_writejson.py

→ 코드 작성 : 실무 예제로 배우는 데이터 공학 48p

from faker import Faker

import json

output = open('data.json', 'w')

fake = Faker()

alldata = {}

alldata['records'] = []

for x in range(1000):

data = {

"name"   : fake.name(),

"age"    : fake.random_int(min=18, max=80, step=1),

"street" : fake.street_address(),

"city"   : fake.city(),

"state"  : fake.state(),

"zip"    : fake.zipcode(),

"lng"    : float(fake.longitude()),

"lat"    : float(fake.latitude())}

alldata['records'].append(data)

json.dump(alldata, output)

→ 저장 후 실행

→ data.json 이 생성된다.

데이터 불러오기

파일 생성 : step05_readjson.py

→ 코드 작성 : 실무 예제로 배우는 데이터 공학 49p

import json

with open('data.json', 'r') as f:

data = json.load(f)

print("Data Type is ", type(data))

print(data['records'][0]['name'])

→ 저장 후 실행

→ 사람 이름이 출력된다.

파일 생성 : step06_pandas.py

→ 코드 작성 : 실무 예제로 배우는 데이터 공학 49p

import pandas.io.json as pd_JSON

import pandas as pd

f = open('data.json', 'r')

data = pd_JSON.loads(f.read())

df = pd.json_normalize(data, record_path='records')

print(df.head(2))

print(df.head(2).to_json())

print(df.head(2).to_json(orient='records'))

→ 저장 후 실행

→이름, 거리, 도시 등이 출력된다.

전처리 순서

CSV —> 데이터 프레임 변환 —> 오라클 or PostgreSQL

비정형 데이터

-이미지 / 텍스트

JSON —> Pandas 데이터 프레임 변환 —> 전처리

—> JSON(NoSQL) —> ElasticSearch —> 시각화(Kibana)

파일 생성 : step07_airflowcsv.py

→ 코드 작성 : 실무 예제로 배우는 데이터 공학 51 ~ 54 p

→ 저장 후 실행

톱니바퀴 모양의 ‘airflow’를 연다

→ 다음 그림과 같이 경로가 잡혀있다.

Untitled

이 부분은 일단 넘어간다.

폴더 생성 : airflowcsv.py

→ 파일 복사 붙여넣기 : data.csv

  • Apache-Airflow 세팅 참고하여 진행

-Setting up Apache-Airflow in Windows using WSL2 - Data Science | DSChloe

→airflow dbinit

→airflow users create --username airflow --password airflow --firstname evan --lastname airflow --role Admin --email your_email@some.com

→airflow webserver -p 8081

→source venv/bin/acivate

→airflow scheduler

로그인

아이디 :airflow

비번 :

cd dags

airflow dbinit

aiflow us,,,,

airflow webserber -p 8081

PSQL Install

PostgreSQL Installation on WSL2 and Windows

PostgreSQL Installation on WSL2 and Windows - Data Science | DSChloe

(password : 2016*****)

( 서버 password : postgres )

개요

  • WSL2에서 PostgreSQL을 설치한다.
  • pgAdmin은 Windows에 설치한다.

터미널 업그레이드

  • 먼저 WSL 터미널을 열고, Ubuntu 패키지를 모두 업데이트 및 업그레이드를 한다.

Windows Terminal → wsl bash

또는

Ubuntu → ..cd → ..cd

→sudo apt update

→sudo apt-get upgrade

PostgreSQL Installation in WSL2

  • 이번에는 WSL2에서 PostgreSQL을 설치한다. 설치가 종료되면, 반드시 버전을 확인한다.

→sudo apt install postgresql postgresql-contrib

→psql --version

  • 설치 이후에는 Database를 접근 가능하도록 활성화해야 한다.
    • 포트가 활성화 되어 있지 않다면 아래와 같은 메시지가 나타날 것이다.

→sudo service postgresql status

  • 이번에는 활성화를 해보도록 한다. 온라인이라는 메시지가 나타난다면 활성화가 되었다는 것을 의미한다.

→sudo service postgresql start

→sudo service postgresql status

이번에는 활성화된 데이터베이스를 종료시킨다

→sudo service postgresql stop

→sudo service postgresql status

사용자 계정 Password 설정

  • 기본적으로 admin 사용자로 등록이 되어 있다. 보통 DB 초기 세팅 시에는 패스워드를 입력받아야 한다. ( password : 2016***** )

→sudo passwd postgres

• 여기까지 했다면, WSL2에서 추가로 설정할 것은 더 없다.

pgAdmin Installation on Windows

  • 이번에는 pgAdmin을 설치한다. (최신버전 설치, pgAdmin 4 v6.8)웹사이트 : https://www.pgadmin.org/download/pgadmin-4-windows/
  • 설치 할 때는 관리자로 실행하며, 아래 그림과 나타난다면, install for all users를 선택한다.

Untitled

  • 설치가 완료된 뒤에는 pgAdmin 이 검색되는지를 확인한다.
  • WSL2 에서 PostgreSQL 서비스를 활성화 해야 한다.
  • 처음 실행 시 나타나는 화면에 나오는 Password 설정
  • WSL2에서 설정한 Password를 입력한다. (password : 2016*****)
    • 이번에는 서버를 설정하도록 한다 ( 서버 password : postgres )

Untitled

server 우 클릭

→ register → server

→ 내용 작성

→ General Tab 의 Name에 입력 : test

Untitled

  • connection tab 에서 작성

→ host 에 입력 : 127.0.0.1

→ Password는 WSL2에서 입력했던 Password를 입력한다.

Untitled

서비스를 활성화한다.

sudo service postgresql start

다음과 같이 Password를 설정하도록 한다

sudo -u postgres psql -c "ALTER USER postgres PASSWORD '<new-password>';"

sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

  • 위 설정이 끝난 후, 재 접속하면 정상적으로 접근이 되는 것을 확인할 수 있다.
  • 비밀번호가 postgres 로 변경되었다.

DB 생성 및 확인

  • test 서버에 접속을 했다면, 이제 DB생성을 해본 후, pgAdmin과 WSL2에서 각각 확인을 한다.
  • 먼저, Database에서 마우스 우클릭 후, 아래와 같이 순차적으로 클릭한다.

Databases 우클릭

→ create → database..

→ 새로운 데이터베이스명은 dataengineering으로 명명한다.

Untitled

  • 이번에는 아래 그림과 같이 dataengineering 데이터베이스의 노드 중 shemas를 확장하고 다시 public을 확장한다.

Untitled

dataengineering

→ shemas

→ public

→ tables 우클릭

→ Create → Table

→ General 탭 Name 입력 : users

→ Column 탭에서는 아래와 같이 테이블 열을 추가한다

→ 우측의 + 버튼을 이용한다.

Untitled

wsl2 가상환경 : postgresql 서버 & DB

윈도우 : GUI - pgAdmin

  • 이번에는 psql에 접속 후 dataengineering DB와 생성된 테이블을 조회하는 쿼리를 실행한다.

    • dataengineering 테이블이 조회되는지 확인한다.

    Untitled

    → sudo -u postgres psql (psql 접속 명령)

    → postgres=# 형태의 프롬프트가 출력된다.

    → 그림 맨 밑줄처럼 \l 을 입력하고 enter

    → dataengineering 이 출력되면 성공

이번에는 생성된 dataengineering DB에 연결 후, 테이블을 조회한다

→ sudo -u postgres psql ( psql에 접속)

→ postgres=# 형태의 프롬프트가 출력된다.

→ \c dataengineering

→ (dataengineering DB에 연결되어

dataengineering=# 형태로 바뀐다. )

→ \dt

→ users 테이블이 출력 되면 성공

→ \q 하여 빠져나온다.

→ sudo service postgresql stop 하여 DB 종료

→ 반드시 종료하자

Refefence

SQLAlchemy : 반드시 사용하자.

나중에라도 파이썬에 연결하여 사용한다.

https://www.sqlalchemy.org/

postgreSQL 실습

postgreSQL 실습_2

Elasticsearch Install

ElasticSearch & Kibana 설치 in WSL2

ElasticSearch & Kibana 설치 in WSL2 - Data Science | DSChloe

Step 1. 사전 필수 패키지 설치

0.우선 시스템 패키지를 업데이트 하고, HTTPS와 관련된 패키지를 설치한다.

Windows Terminal → wsl bash

또는

Ubuntu → ..cd → ..cd

→sudo apt-get update && sudo apt-get upgrade

→ sudo apt update

→ sudo apt install apt-transport-https

  1. 자바를 설치한다.
  • 이미 설치가 되어 있다면 버전만 확인한다.

→ sudo apt install openjdk-11-jdk

→ java -version

  1. 자바 환경 변수를 설정하기 위해 아래와 같이 에디터를 입력한다.

→ sudo vi /etc/environment

→ (그리고 다음내용을 추가한다.)

→ 인서트 모드에서 JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

→ esc → :wq 하여 저장하고 나간다.

• 환경변수를 업데이트 한다.

• 그리고 실제 경로가 나오는지 확인한다.

→ source /etc/environment

→ echo $JAVA_HOME

→ /usr/lib/jvm/java-11-openjdk-amd64 가 출력되면 성공.

Step 2. ElasticSearch 설치

• GPG Keys를 확인하여 설치를 진행한다.

→ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

• 라이브러리를 아래와 같이 추가한다.

→ sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

• 이제 elasticsearch를 설치한다.

→ sudo apt-get update

→ sudo apt-get install elasticsearch

Step 3. Elasticsearch 서비스 시작

• 이번에는 elasticsearch 서비스를 시작한다.

→sudo systemctl start elasticsearch

에러 발생 :

System has not been booted with systemd as init system (PID 1). Can’t operate.
Failed to connect to bus: Host is down

에러 해결 :

boot - 시스템이 init system(PID 1)으로 systemd로 부팅되지 않았습니다. 작동 할 수 없음 - 우분투에게 물어보십시오. (askubuntu.com)

→ sudo -b unshare --pid --fork --mount-proc /lib/systemd/systemd --system-unit=basic.target

→ sudo -E nsenter --all -t $(pgrep -xo systemd) runuser -P -l $USER -c "exec $SHELL"

• 서비스가 가능하도록 한다.

• 그리고 서비스를 시작한다.

→ sudo systemctl enable elasticsearch

→ sudo systemctl start elasticsearch

• 실제 서비스가 작동하는지 확인한다.

→ curl -X GET "localhost:9200/"

→ 주소창에 입력 : localhost:9200/

→ windows Terminal과 같은 내용이 출력되면 성공

Step 4. Kibana 설치 및 서비스 시작

• 우선 kibana를 설치한다.

• 그리고 서비스를 활성화한다.

→ sudo apt-get install kibana

→ sudo systemctl enable kibana

• 서비스를 시작하고, 확인해본다

→ sudo systemctl start kibana

→ sudo systemctl status kibana

Step 5. Kibana WebUI 확인

• http://localhost:5601/ 에서 확인해본다.

[Reference]

Apache Nifi Install

Apache airflow

Apache-Airflow in windows 설치

• Windows WSL2에서 airflow를 설치한다.

Step 1. Install pip on WSL

• c드라이브에 들어간다.

관리자 권한으로 실행 : Ubuntu

→ cd..

→ cd..

→cd mnt/c

• 폴더를 만든다

→ mkdir airflow-test

→ ls

→ cd airflow-test/

• pip를 설치한다.

→ sudo apt-get update && sudo apt-get upgrade

→ sudo apt install python3-pip

Step 2. Install virtualenv package

• virtualenv 라이브러리를 설치한다.

→ sudo pip3 install virtualenv

Step 3. Create a virtual environment

• 이제 가상환경을 생성한다.

→ virtualenv venv

• 가상환경에 접속을 한다.

→ airflowtest 경로에서 해야 한다.

→ source venv/bin/activate

→ 경로 확인

→ pwd

• 이번에는 .bashrc 파일을 수정한다.

• 파일을 열고, 맨 밑줄에 다음과 같은 코드를 추가한다.

→ vi ~/.bashrc

→ 내용 추가 : export AIRFLOW_HOME=/mnt/c/airflow-test

→ ESC → :wq 하여 저장

• 수정된 코드를 업데이트 하기 위해서는 아래와 같이 반영한다.

→ source ~/.bashrc

• 실제로 코드가 반영되었는지 확인하기 위해서는 다음과 같이 확인해본다.

• 다시 가상환경에 접속하고 수행

→source venv/bin/activate

→ echo $AIRFLOW_HOME

→ /mnt/c/airflow-test 출력되면 성공.

Step 4. Apache Airflow 설치

• PostgreSQL, Slack, Celery 패키지를 동시에 설치하는 코드를 작성한다.

→ sudo apt-get update && sudo apt-get upgrade

→ pip3 install 'apache-airflow[postgres, slack, celery]'

• airflow 실행을 위해 DB 초기화를 해줘야 한다.

→ airflow db init

• 실제로 잘 구현이 되었는지 확인하기 위해 webserver를 실행한다

→ airflow webserver -p 8081

→ port 번호 8081을 뜻한다.

• 그리고, 해당 링크 http://localhost:8081/login/ 에 접속하면 아래와 같은 화면이 나타난다.

Untitled

• 그런데, 여기에서 문제는 username을 생성하지 않았다. 따라서, username을 추가하도록 한다

→ ctrl + c 로 빠져나온다.

→ airflow users create --username airflow --password airflow --firstname evan --lastname airflow --role Admin --email your_email@some.com

• 다시 웹서버 실행

→ airflow webserver -p 8081

• 해당 링크 http://localhost:8081/login/ 에 접속

• 다음 정보로 로그인한다

→ id : airflow

password : airflow

→ 다음 화면이 나오면 성공.

Untitled

설정완료 후에 가상환경 키는 법

ubuntu

→ cd .. → cd .. → cd mnt/c → cd airflow-test

→ source venv/bin/activate

Airflow 재설치 및 데이터 파이프라인 구축

Apache Nifi Install

Apache NiFi

Apache NiFi 설치와 설정 in WSL2 - Data Science | DSChloe

설치

  • wsl2에서 JAVA 설치 한다.

관리자 권한으로 실행 : Ubuntu

→ ls → cd .. → ls → cd .. → ls // ls 하여 파일 출력 될 때까지

→ java --version

→ 설치 안 되어 있을 시 : sudo apt-get update && sudo apt-get upgrade

→ 설치 안 되어 있을 시 : sudo apt install openjdk-11-jdk

→ vi ~/.bash_profile

→ vi 편집기로 이동된다.

→ 내용 추가 : export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

→ esc + :wq 하여 저장

  • source 사용하여 상태 저장

→ source ~/.bash_profile

→ echo $JAVA_HOME

→ 다음 내용 출력 시 성공 : /usr/lib/jvm/java-11-openjdk-amd64

  • curl을 이용해서 NiFi를 현재 경로에 내려받는다. 오래 걸린다.

→ sudo wget https://downloads.apache.org/nifi/1.16.0/nifi-1.16.0-bin.tar.gz

→ ls

→ 현재 있는 기본 경로에 nifi 가 출력 됨을 알 수 있다.

Untitled

→cp nifi-1.16.0-bin.tar.gz mnt/c/nifi-1.16.0-bin.tar.gz

→ cd mnt

→ cd c

→ ls

→ /mnt/c 경로에 nifi 가 생겼다.

Untitled

  • .tar.gz 파일의 압축을 푼다

→ sudo tar xvaf nifi 까지 타이핑하고 Tab 하여 다음 코드 작성

→ sudo tar xvzf nifi-1.16.0-bin.tar.gz

  • 압축파일을 푼 다음에는 cd nifi-1.16.0 폴더에 접속을 한다.

→ Tab 이용하여 다음 코드 작성하고 실행

→ cd nifi-1.16.0/bin

  • ls를 실행해서 nifi-env.sh 파일이 있는지 확인하고 있다면, vi 에디터로 연다.
  • bash_profile에서 한 것처럼 동일하게 자바 환경변수를 잡아준다

→ sudo vi nifi-env.sh

→ 내용 추가 : export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

→ esc + :wq 하여 저장하고 나온다.

→ sudo ./nifi.sh start

→ 몇 분간 새로고침한다. ( 계속 안될 경우 : stop하고 기록을 지운 다음 다시 start)

→ 비공개 화면 … 이라는 문구가 출력된다.

→ ‘고급’ 선택

→ 나타나는 주소를 클릭하여 들어간다.

→ 다음 화면이 출력된다.

Untitled

  • 종료

/mnt/c/nifi-1.16.0$ 상태에서 다음 명령 실행해야 한다.

→ cd ..

→ sudo ./bin/nifi.sh stop

  • 로그인 준비.
  • 아이디와 비밀번호를 설정한다. ( *비밀번호는 최소 13자리)

→ sudo ./bin/nifi.sh set-single-user-credentials human 1234567890123

  • 그리고, nifi-env.sh 파일을 실행
  • 단, /bin 경로에서 한다.

→ cd bin/

→ sudo ./nifi.sh start

→ 몇 분간 새로고침한다.

→ 다음 정보로 로그인

id : human

password : 1234567890123

→ 다음 화면이 출력되면 성공.

Untitled

  • 세팅은 끝났으니 일단 종료시켜놓자.
  • 종료
  • /mnt/c/nifi-1.16.0$ 상태에서 다음 명령 실행해야 한다.

→ cd ..

→ sudo ./bin/nifi.sh stop

기록 지우는 법

ubuntu에서 다음 명령 실행

cd..

cd..

cd mnt/c

ls

cd nifi-1/16/0/

ls

cd logs

ls

sudo rm -rf *

ls

→ 삭제 되어 아무것도 출력되지 않는다.

NiFi 사용법

  • Nifi 사용법을 익혀보자
  • 실무 예제로 배우는 데이터 공학 19p 부터 따라해본다.

메뉴바에서 process를 드래그하여 캔버스에 놓는다.

→ 다음 그림의 우측 상단에서 검색한다.

→ 검색 : GenerateFlowFile

→ ADD 버튼 클릭

Untitled

→ 같은 방법으로 검색

→ 검색 : putfile

→ ADD

나타난 박스를 우클릭 → configure

→ properties

→ field 를 설정할 수 있다.

설정 후에는 박스끼리 연결할 수 있다.

→ 박스 하나의 중앙을 드래그하여 다른 박스에 놓는다.

→ 연결된다.

→ 이 상태에서 GenerateFlowFile에서 파일을 생성하여 PutFile에 옮길 수 있다.

Untitled

  • Reference : 실무 예제로 배우는 데이터 공학

WSL2 install

WSL2 and Linux

다음 링크 참고 :

Microsoft Store → windows terminal 설치

→ windows powershell 관리자 권한으로 설치

→ [Windows 10] WSL2 설치 및 사용법 - LainyZine 내용 참고하여 명령.

→ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

→ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

→ 재부팅

→ wsl2 Linux 커널 업데이트 패키지 설치 ( 위 링크 참고)

설치 실패 : ( This update only applies to machines with the windows subsystem for Linux)

   ㄴ [https://goaloflife.tistory.com/192](https://goaloflife.tistory.com/192) 로 해결해본다.

→ windows Terminal

→ wsl --set-default-version 2

→ Microsoft Store → Ubuntu 설치

→ Ubuntu → 설치되기까지 기다린다

→ 이름 / 패스워드 입력

( 이름 : kmk3593 / password : 2016***** )

→ windows terminal

→ wsl -l -v

→ Ubuntu Running 2 가 출력되면 성공.

Linux Shell 프롬프트

windows terminal

→ wsl bash

→ Bash 셸이 실행됨. 프롬프트 형태가 바뀌면 성공

저자 주: 여기서부터 WSL2 리눅스 셸 프롬프트

→ 즉, Windows 10 메인 디스크가 리눅스와 연결되어있으며,

WSL2 Linux에서 Windows의 파일을 사용하는 것도 가능한 상태.

setting 순서

  • Nifi → Airflow → Elasticsearch → postgreSQL → VSCord 순으로 세팅을 진행했다.
  1. Apache NiFi 설치와 설정 in WSL2 - Data Science | DSChloe
  2. Setting up Apache-Airflow in Windows using WSL2 - Data Science | DSChloe
  3. ElasticSearch & Kibana 설치 in WSL2 - Data Science | DSChloe
  4. PostgreSQL Installation on WSL2 and Windows - Data Science | DSChloe
  5. VSCode Remote WLS 연동 - Data Science | DSChloe

Anaconda install

Anaconda

아나콘다 설치

  • 주소 : Anaconda | Individual Edition

    → download → 관리자 권한으로 실행

    → install직전에 Add Anaconda 3 to the system path…에 체크 → install

    → anaconda individual edition tutorial 을 체크 해제 → finish

  • anaconda navigator 열기

    → JupyterLab

    → 왼쪽 목록에서 ‘Desktop’으로 이동 → 폴더 생성 ‘AI’ → ‘AI’로 이동

    → Notebook 클릭 → 파이썬 편집기 사용하면 됨.

pycharm 설치

  • 구글링 : pycharm

    → ‘Community’ 버전 다운로드

    → 관리자 권한으로 실행 → 옵션의 체크 박스를 전부 체크 → install

    → finish

  • 시스템 환경 변수 편집 → 환경 변수 → 시스템 변수 : path → 편집

    → anaconda3\library, anaconda3\script 등이 있는지 확인

    Untitled

    → 설정 완료

팁

  • /code 단축키로 코드 입력 창 생성
1
$ git clone 주소
  • 캡처 단축키 : window + shift + s → 캡쳐 → ctrl+v (붙여넣기)