보통은 데이터를 pull 해오는 케이스가 많은데, 어짜다보니 데이터를 각 서버로 push 해줘야하는 상황이 생겼다. 쉽게 생각해서 1개의 서버에서 다른 서버에 데이터를 쏴주는 상황을 생각하면 된다. 인터넷에 보면 Xinetd 패키지가 필요하다고 설명되어있는데 내가 테스트해본 결과 이 패키지는 필요없었고, rsyncd 데몬만 서비스로 띄우면 잘 동작했다. 내가 이게 필요했던 이유는, airflow 의 DAG 를 여러 서버에 동기화 해주는 과정이 필요했기 때문이다. 설정방법 모든 서버에 /etc/rsyncd.conf 설정파일과 rsyncd 데몬이 떠있는지 체크해야한다. rsync 를 통해 업로드를 하는것이므로, read only 는 no 가 되어야한다. 그리고 업로드할 경로를 path 에 지정하고, hos..
RabbitMQ 최신버전을 설치하기위해 Erlang 부터 설치해야 하는 상황인데 yum 기본버전의 erlang 을 설치하면 버전이 낮아서 설치가 안되는 문제가 발생된었다. 그래서 어쩔수 없이 직접 rpm 패키지를 다운로드 받아서 설치하는데 다음과 같은 오류가 발생했다. 결과적으로 이 오류가 나는 이유는 unixODBC 관련 라이브러리와 의존성이 존재하기 때문이다. warning: esl-erlang_23.3.4.5-1centos7_amd64.rpm: Header V4 RSA/SHA512 Signature, key ID a14f4fca: NOKEY error: Failed dependencies: libodbc.so.2()(64bit) is needed by esl-erlang-23.3.4.5-1.x86_..
MySQL 은 별도로 세팅되서 운영중이더라도, 연결이 가능한지 여부를 테스트하기위한 client 세팅을 해야할때가 있다. 이때 가장 쉬운편에 속하는게 mysql 패키지를 설치하고 원격접속해서 테스트해보는것이다. 보통은 DBMS 서버에 직접 붙어서 연결하기 때문에 파라미터를 잘 모를때가 많은데 원격 접속할때는 다음과 같이 접근하면 된다. 디폴트 포트가 3306인데, 디폴트 포트라면 --port 인자는 생략가능하다 % mysql -h 도메인주소 --port 포트번호 -u 아이디 -p 설치하기 단순히 MySQL 에 접근하더라도 mysql 패키지가 필요하다. 다음과 같은 명령어로 설치가 가능하다. sudo yum install mysql -y 연결해보기 설치가 되었으면 mysql 명령어 사용이 가능하며 다음과 ..
airflow.cfg 의 dbms 연결설정의 경우 아래와 같은 패턴으로 입력을 해야하는데, 문제는 암호에 @ 가 존재해서 도메인을 잘못 판단하는 문제가 발생했다. 구글링 해보면 python 코드를 통해 해결하거나, "@" 를 "%40" 형태로 치환하면 된다고 하는데, 그렇게 해결이 안되었다. 그 문제는 configparser 에서 "%" 가 또 영향을 받기 때문이었다. sql_alchemy_conn = mysql+mysqldb://:@:/airflow_db?charset=utf8 해결방법 결론부터 말하면 @ 는 %%40 으로 대체해야 설정이 정상적으로 인지된다. urllib 의 quote 로 변환한 결과가 %40 인데, configparser 에서는 또 % 를 추가로 이스케입해줘야 하는 문제가 있기 때문..
내 mac pro 에서 airflow 2.x 버전대를 빌드하면서 compile assets 를 이용한 ui 빌드를 시도하는데 다음과 같은 오류가 발생했다. 결론부터 말하면 mac 에 md5sum 바이너리가 없어서 실패난 현상이었다. (airflow) user@AL0000001 airflow % python setup.py compile_assets gitpython not found: Cannot compute the git version. /Users/user/.virtualenvs/airflow/lib/python3.8/site-packages/setuptools/installer.py:27: SetuptoolsDeprecationWarning: setuptools.installer is deprec..
Airflow 2.x 버전을 띄우려고 했는데 아래와 같은오류가 발생했다. 결론부터 말하면 sqlite 의 의존성이 3.15 보다 버전이 더 커야 작동된다는말인데, centos 의 yum 을 통해 설치 가능한 버전은 sqlite는 3.7.17 버전이 가장 최신이다. 그래서 더 상위버전으로 업데이트해야 동작한다는 말이다. 해결방법은 소스를 다운로드 받아서 빌드하면 쉽게 해결된다. $ airflow standalone Traceback (most recent call last): File "/home/airflow/py3/bin/airflow", line 5, in from airflow.__main__ import main File "/home/airflow/py3/lib/python3.9/site-pack..
DAG 를 만들었는데, 로직이 로딩되지 않았고, 로그를 뒤져보니 아래와 같은 오류가 발생했다. 오류가 나는 현상을 역추적해보니 dag 를 구성한 python 로직에 한글주석이 존재할 경우 아래와 같은 오류가 발생함을 발견했다. UnicodeEncodeError: 'charmap' codec can't encode characters in position 217-220: character maps to [2023-02-01 18:23:52,445] {logging_mixin.py:115} INFO - [2023-02-01 18:23:52,445] {dag.py:2439} INFO - Creating ORM DAG for my_test_dag [2023-02-01 18:23:52,459] {logging_m..
커버로스 기반으로 하둡 클러스터를 관리하고 유저권한을 keytab 으로 관리하다보면, 별도의 유저별로 바꿔서 실행해야 하는 경우가 종종 있다. 그런데 이상하게 아래와 같은 오류가 발생할 때가 있는데, 원인은 HADOOP_PROXY_USER 를 사용하지 않는 상황인데, 해당 값이 지정된 경우 발생된다. % hadoop fs -ls ls: User: flink@MY.HOME.SERVER.COM is not allowed to impersonate sample 해결방법 권한관리를 하다보면, 여러케이스의 유저권한이 존재할 수 있는데, 유저 여러개의 권한을 하나에 부여하고, HADOOP_PROXY_USER 를 지정해서 유저를 지정해서 해당 권한으로 사용하는게 가능하다. 일종의 슈퍼키(?) 처럼 큰 권한을 받은 녀..