반응형

airflow설치 후 다양한 테스트 도중 아래와 같은 문구가 생겼습니다.

scheduler does not appear to be running 문구를 본다면 스케쥴러 데몬이 내려간 것처럼 보이지만 airflow 스케쥴을 정상적으로 작동하고 있는 상태였습니다.

 

이러한 문구가 보이는 이유는  Sequential Executor를 사용하기 때문입니다. 

 Sequential Executor란 기본 Executor로 sqlite와 함께 사용할 수 있으며, 한번에 하나의 task만 실행할 수 있어 병렬성을 가지지 않습니다.

 

따라서, 현재 task를 실행중인 상태에서는 heartbeat를 받을 수 없어 생성되는 문구라고 생각하면 됩니다.

반응형
반응형

airflow 설치 후 example dag를 삭제하고 싶으신 분들이 있을겁니다. 이번 포스팅은 example dag 삭제해보겠습니다.

 

airflow 스크립트 수정

conda activate test
cd airflow
#load_examples = True를 Fasle로 변경
vi airflow.cfg

vi로 airflow.cfg를 열어 load_examples=True를 load_examples=False로 변경해줍니다.

airflow db reset 및 webserver 재실행

# airflow 폴더에서 나옵니다.
cd

# airflow 프로세스가 살아있는지 확인 살아있을 경우 kill -9 프로세스아이디 를 통해 종료
ps -ef |grep 'air'
 
# db초기화
airflow db init

# webserver 및 scheduler 재실행
nohup airflow webserver -p 8080 &
nohup airflow scheduler &

airflow 확인

localhost:8080 접속하게 되면 example dag가 없어진걸 볼 수 있습니다.

 

반응형
반응형

아나콘다 설치

아나콘다 설치 후 airflow를 설치해보겠습니다. 아나콘다 설치가 안된분들은 아래 포스팅을 확인해주새요

https://taeguu.tistory.com/100

 

[Python] 리눅스 서버에 anaconda 설치

이번 포스팅은 리눅스 서버에 아나콘다를 설치하겠습니다. os는 우분투 18.04 lts에 설치해보도록 하겠습니다. 아나콘다 다운 https://www.anaconda.com/products/distribution#linux Anaconda | Anaconda Distrib..

taeguu.tistory.com

airflow 설치

# conda 가상환경 실행
# 가상환경이 없는경우 conda create -n test pip python=3.7 명령어 실행
conda activate test

# airflow 설치
pip install apache-airflow

# db init
airflow db init

# webserver 실행
airflow webserver -p 8080

airflow 웹서버 접속

웹서버를 실행하게 되면 아래와 같이 airflow 웹서버거 실행되며 localhost:8080을 url에 입력하여 접속합니다.

접속하면 아래 그림과 같이 로그인 창이 뜹니다. 이제 다시 커멘드창으로 이동하여 계정을 생성하겠습니다.

airflow 계정 생성

웹서버를 창은 그대로 두고 새로운 창을 열어 아래 명령어을 입력하게 되면 admin권한을 가지는 admin계정이 생성됩니다.

airflow users create  --username admin  --firstname admin  --lastname admin   --role Admin  --password admin  --email admin

airflow 계정접속

id / pw : admin / admin으로 접속하게 되면 sample dag가 보이며, 접속이 완료됐습니다.

airflow 둘러보기

특정 dag를 클릭하게 되면 dag안에 task들의 의존성 및 dag 코드를 확인할 수 있습니다.

 

task 의존성
dag 코드

반응형
반응형

도커  컨테이너 내부 접속

아래와 같이 명령어를 입력하면 도커 내부 컨테이너에 접속할 수 있습니다.

docker exec -it [컨테이너 ID] /bin/bash

 

반응형
반응형

도커  컨테이너 확인

도커 내부컨테이너의 ip를 확인하려고 합니다.

우선 현재 airflow 컨테이너를 띄어놓은 상태입니다.

 

도커  컨테이너 내부아이피 확인

아래 명령어를 입력하시게 되면 도커 컨테이너 내부 아이피를 확인할 수 있습니다.

docker inspect -f \
'{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' \
3f6d8e568bcf --컨테이너 ID--

 

반응형
반응형

터미널에서 pyspark 실행 시 제목과 같은 에러가 발생했습니다. 물론 원인은 다양할 수 있으나 저의 해결방법이 도움이 될까 하여 기록합니다. 전체 에러는 아래와 같습니다.

 

에러

22/07/10 13:22:24 ERROR SparkContext: Error initializing SparkContext.

java.net.BindException: Can't assign requested address: Service 'sparkDriver' failed after 16 retries (on a random free port)! Consider explicitly setting the appropriate binding address for the service 'sparkDriver' (for example spark.driver.bindAddress for SparkDriver) to the correct binding address.

at java.base/sun.nio.ch.Net.bind0(Native Method)

at java.base/sun.nio.ch.Net.bind(Net.java:555)

at java.base/sun.nio.ch.ServerSocketChannelImpl.netBind(ServerSocketChannelImpl.java:337)

at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:294)

at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:134)

at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:562)

at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1334)

at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:506)

at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:491)

at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:973)

at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:260)

at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:356)

at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)

at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469)

at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503)

at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)

at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)

at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)

at java.base/java.lang.Thread.run(Thread.java:833)

 

 

해결

우선 로컬 pc의 호스트 네임을 확인합니다.

확인 후 etc 아래에 있는 hosts 파일에 127.0.0.1 hostname을 추가 합니다.

wq!를 통해 저정 후 터미널에 pyspark를 실행하면 정상적으로 작동하는 것을 볼 수 있습니다.

추가

혹시 위와 같은 방법으로도 해결이 안된다면 jdk 등의 버전 호환을 확인해보시길 바랍니다.

 

 

반응형
반응형

개요

redash 공식 문서를 따라 설치하게 되면 version8로 설치 됩니다. 현재 redash v10에서는 trino연동을 지원하기 때문에 v10으로 업그레이드 하려고 합니다.

 

업그레이드

cd opt/redash

vi docker-compose.yml 을 통해 docker-compose.yml 파일을 수정해 줍니다.

수정 전 스크립트

version: "2"
x-redash-service: &redash-service
  image: redash/redash:8.0.0.b32245
  depends_on:
    - postgres
    - redis
  env_file: /opt/redash/env
  restart: always
services:
  server:
    <<: *redash-service
    command: server
    ports:
      - "5000:5000"
    environment:
      REDASH_WEB_WORKERS: 4
  scheduler:
    <<: *redash-service
    command: scheduler
    environment:
      QUEUES: "celery"
      WORKERS_COUNT: 1
  scheduled_worker:
    <<: *redash-service
    command: worker
    environment:
      QUEUES: "scheduled_queries,schemas"
      WORKERS_COUNT: 1
  adhoc_worker:
    <<: *redash-service
    command: worker
    environment:
      QUEUES: "queries"
      WORKERS_COUNT: 2
  redis:
    image: redis:5.0-alpine
    restart: always
  postgres:
    image: postgres:9.6-alpine
    env_file: /opt/redash/env
    volumes:
      - /opt/redash/postgres-data:/var/lib/postgresql/data
    restart: always
  nginx:
    image: redash/nginx:latest
    ports:
      - "80:80"
    depends_on:
      - server
    links:
      - server:redash
    restart: always

수정 후 스크립트

version: '2'
x-redash-service: &redash-service
  image: redash/redash:10.1.0.b50633
  depends_on:
    - postgres
    - redis
  env_file: /opt/redash/env
  restart: always
services:
  server:
    <<: *redash-service
    command: server
    ports:
      - "5000:5000"
    environment:
      REDASH_WEB_WORKERS: 4
  scheduler:
    <<: *redash-service
    command: scheduler
  scheduled_worker:
    <<: *redash-service
    command: worker
  adhoc_worker:
    <<: *redash-service
    command: worker
  redis:
    image: redis:6-alpine
    restart: always
  postgres:
    image: postgres:12-alpine
    env_file: /opt/redash/env
    volumes:
      - /opt/redash/postgres-data:/var/lib/postgresql/data
    restart: always
  nginx:
    image: redash/nginx:latest
    ports:
      - "80:80"
    depends_on:
      - server
    links:
      - server:redash
    restart: always
  worker:
    <<: *redash-service
    command: worker
    environment:
      QUEUES: "periodic emails default"
      WORKERS_COUNT: 1

스크립트 수정후 아래 명령어 입력

docker-compose up --force-recreate --build
docker-compose run --rm server manage db upgrade
docker-compose up -d

확인

V10업데이트를 확인할 수 있습니다.

반응형
반응형

mac m1에 brew 설치를 위해 아래 주소에 들어간 후 

 

https://brew.sh/

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

 

홈페이지에 나와있는 명령어를 입력하면됩니다.

 

설치 도중 아래와 같은 에러가 발생하였습니다.

Warning: /opt/homebrew/bin is not in your PATH

path에 brew가 없어 발생한 문제입니다.

 

 

터미널 홈에서 vim .zshrc 입력 후

export PATH=/opt/homebrew/bin:$PATH를 추가 후 wq!를 통해 저장 후 나옵니다.

저장 후 터미널 재시작 또는 source ~/.zshrc 입력하게 되면 brew명령어가 정상적으로 실행됩니다.

 

 

반응형

+ Recent posts