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 = TrueFalse

→ 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=TrueFalse

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

lscd ..lscd ..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 (붙여넣기)