반응형

최근에 airflow 웹상에 dag들이 올라오지 않아 고생한 부분을 정리하고자 합니다. 결론적으로 아래 발생한 현상은 모두 인코딩 문제로 간단하게? 해결할 수 있었습니다.

 

 

dag가 웹에 안보이는 케이스

1. 한글주석

아래와 같이 dag 파일 내에 한글 주석을 넣으면 dag가 웹상에 올라오지 않았습니다.

 

2. 스케쥴링

분과 시를 설정할 경우에는 dag들이 웹상에 잘 나왔지만 년월일 스케쥴링시 dag가 웹상에 올라오지 않았습니다.

특히 @daily는 가능하나 @monthly 및 @hourly등은 dag가 올라오지 않았습니다.

 

스케쥴링 에러를 확인하니 아래와 같은 에러가 계속해서 발생했습니다.

airflow unicodeencodeerror: 'charmap' codec can't encode characters in position 7-8: character maps to <undefined>

 

 

해결방법

아마 위의 에러는 mysql등 다른 디비와 연결하며 발생했을거라고 생각됩니다.

airflow.cfg 파일 sql_alchemy_conn에서 airflow뒤에 ?charset=utf8 추가 후 airflow 재시작하게 되면 위에 두가지 케이스일 때 dag가 정상적으로 올라오는 것을 볼 수 있습니다.

 

sql_alchemy_conn = mysql://root:password@127.0.0.1:3306/airflow?charset=utf8

 

 

반응형
반응형

hdfs 및 hbase 는 기본적으로 데이터노드 및 리전서버와 22번 포트를 통해 ssh통신을 사용합니다. 만약 서버 셋팅이 22번 포트가 아니라면 아래와 같이 설정이 필요합니다.

 

 

1.hadoop-env.sh(hdfs)

### 2023 port를 이용하여 ssh통신을 원할경우
export HADOOP_SSH_OPTS="-p 2023"

 

2. 1.hbase-env.sh(hbase)

### 2023 port를 이용하여 ssh통신을 원할경우
export HBASE_SSH_OPTS="-p 2022"

 

반응형
반응형

nn01이 네트워크 이슈로 다운되면서, nn02가 active로 변경되었습니다. 

 

특이점으로는 nn02 네임노드는 정상이었지만 DFSZKFailoverController가 꺼진 상태였습니다.

 

이러한 상태에서 nn01 네임노드를 활성화 하니 자동으로 nn01이 active nn02가 standby로 변경되네요. 관련하여 네임노드를 재실행시 자동으로 변경되는 것을 원하지 않을 경우 nn02에 DFSZKFailoverController가 실행되어 있는지 확인이 필요해 보입니다.

 

반응형
반응형

[hdfs] ha 중 org.apache.hadoop.ha.SshFenceByTcpPort: Unable 에러

 

[hdfs] ha 중 org.apache.hadoop.ha.SshFenceByTcpPort: Unable 에러

에러 ha테스트 중 active namenode를 kill하고 standby 네임노드가 active가 되기를 기다렸지만 여전히 standby 상태였습니다. tail -f zkfc.log를 확인하니 아래와 같은 에러메세지가 발생했습니다. WARN org.apache.

taeguu.tistory.com

에러

위의 에러를 해결 후에도 ha가 제대로 동작을 안합니다. 에러 내용확인 하니 아래와 같은 경고를 발생합니다.

 WARN org.apache.hadoop.ha.SshFenceByTcpPort: PATH=$PATH:/sbin:/usr/sbin fuser -v -k -n tcp 8020 via ssh: bash: fuser: command not found

원인

fuser 는 파일이나 소켓을 어떤 프로세스가 사용하는 지 알려주는 명령어인데, 그렇다면 이 부분 때문에 ha가 진행되지 않을 수 있다 생각하였습니다.

 

 

해결방법

yum install psmisc설치 후 ha가 제대로 동작하는 것을 확인하였습니다.

반응형
반응형

에러

ha테스트 중 active namenode를 kill하고 standby 네임노드가 active가 되기를 기다렸지만 여전히 standby 상태였습니다. 

 

tail -f zkfc.log를 확인하니 아래와 같은 에러메세지가 발생했습니다.

 

 

WARN org.apache.hadoop.ha.SshFenceByTcpPort: Unable to connect to [ip] as user [user]
com.jcraft.jsch.JSchException: java.net.ConnectException: Connection refused (Connection refused)

 

원인

sshfence 통신이 안되는 문제였습니다. 확인해보니 현재 22포트가 아닌 다른 포트를 사용하여 발생한 에러였습니다.

 

해결방법

해결방법으로는 hdfs-site.xml에서 아래 사진과 같이 유저와 포트를 지정해줄 수 있습니다 저는 sshfence(user:0000)으로 변경하였습니다.

 

반응형
반응형

원인

카프카 매니저 설치 중 에러를 기록합니다.

 

카프카 매니저 2.0.0.2설치 중 ./sbt clean dist 명령어 입력후 설치가 진행되다가 위의 에러가 수십개 발생하였습니다.

원인을 알아보니 80즉 http로 다운로드를 진행하지만 현재 관련 파일들은 https에 있어 그런 것으로 확인되었습니다. 

 

 

해결

해결방법은 간단합니다.

CMAK-2.0.0.2/project/plugins.sbt 파일 내용에서 

http://repo.typesafe.com/typesafe/releases/  >https://repo.typesafe.com/typesafe/releases/로 변경해주면 됩니다.

 

 

반응형
반응형

카프카 매니저  설치 전 sbt 설치 방법에 대해 기록하고자 한다.

sudo rm -f /etc/yum.repos.d/bintray-rpm.repo
sudo rm -f /etc/yum.repos.d/bintray-sbt-rpm.repo

curl -L https://www.scala-sbt.org/sbt-rpm.repo > sbt-rpm.repo
sudo mv sbt-rpm.repo /etc/yum.repos.d/
sudo yum install sbt

 

반응형
반응형

주키퍼 설치 진행하다 log에 아래와 같은 메세지를 뱉으며 리더 선출이 안되며, 구성이 안됐습니다. 기본적으로 포트도 허용하였고 myid 또한 정확하게 셋팅하였습니다.

 

WARN [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Follower@129] - Exception when following the leader java.lang.IllegalArgumentException

 

결론적으로 제가 주키퍼 3.6.0버전을 쓰고 있는데 구글서치를 하니 3.6.0버전에서 발생하는 오류라고 합니다. 저는 3.7.1로 변경하여 구성 완료하였고

 

다른분들은 3.6.1을 사용하여 위의 에러를 해결했다고 합니다.

반응형

+ Recent posts