반응형

주키퍼 실행, 저널노드 실행했더니, 아래 에러가 발생하고 있었습니다. 아래 에러이며, 해당 저널 스토리지에 포멧이 되지 않았는다는 문구로, 하둡 HA구성 시 발생할 수 있습니다.

 

원인

 

해결

하둡 bin폴더에서 아래 명령어를 실행하게 되면, 관련 에러가 사라진 걸 볼 수 있습니다.

hdfs namenode -initializeSharedEdits  명령어를 실행하면 네임노드의 편집 로그를 초기화하고 공유된 편집 로그 시스템을 설정하는 작업을 수행합니다. 편집 로그의 초기화는 데이터를 삭제하지 않지만, 해당 네임노드의 편집 로그를 새로운 시작점으로 설정합니다.

./hdfs namenode -initializeSharedEdits

 

 

 

반응형
반응형

원인

하둡 서버 자체가 다운되었습니다. nn02에는 모든 데몬이 내려가 있었고 (주키퍼, 저널노드 포함), nn01에 hbase와 namenode가 내려갔습니다. 네임노드 재시작 시 아래와 같은 에러가 발생하며, 네임노드 데몬이 올라오지 못했습니다. 에러내용으로는 네임노드가 내려가면서, edit로그의 정합성이 깨진 것 같습니다.

 

 

해결1- (nn01,nn02 둘다 데몬 내려가서 안 올라올 때)

# edit_log 및 fsimage 백업 (nn01)
cd /data/dfs/nn/current/
cd -r current current_backup

# hadoop bin 폴더 이동 (nn01)
cd /hadoop/bin

# 네임노드 복구(nn01) Continue or Always 옵션 선택(nn01)
./hadoop namenode -recover

# 네임노드 시작(nn01)
/rnd/hadoop/default/bin/./hdfs --daemon start namenode

# 세이프 모드 진입 및 설정(nn01)
cd /hadoop/bin/
./hdfs dfsadmin -safemode enter
./hdfs dfsadmin -saveNamespace
./hdfs dfsadmin -safemode leave

# fsimage 파일 복사(nn02)
cd /hadoop/bin/
./hdfs namenode -bootstrapStandby -force

# 네임노드 재시작 (nn02)
/rnd/hadoop/default/bin/./hdfs --daemon start namenode

# 네임노드 상태 확인
/hadoop/bin/./hdfs haadmin -getServiceState nn01
/hadoop/bin/./hdfs haadmin -getServiceState nn02

 

 

해결2 - (nn02 데몬 내려가서 안 올라올 때)

# 세이프 모드 진입 및 설정(nn01)
cd /hadoop/bin/
./hdfs dfsadmin -safemode enter
./hdfs dfsadmin -saveNamespace
./hdfs dfsadmin -safemode leave

# fsimage 파일 복사(nn02)
cd /hadoop/bin/
./hdfs namenode -bootstrapStandby -force

# 네임노드 재시작 (nn02)
/hadoop/bin/./hdfs --daemon start namenode

# 네임노드 상태 확인
/hadoop/bin/./hdfs haadmin -getServiceState nn01
/hadoop/bin/./hdfs haadmin -getServiceState nn02

 

반응형
반응형

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)으로 변경하였습니다.

 

반응형
반응형

주키퍼 설치 진행하다 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을 사용하여 위의 에러를 해결했다고 합니다.

반응형
반응형

개요

hadoop을 배우게 되면 HDFS라는 개념을 가장먼저 배우게 되는데 데이터를 블록단위로 저장하는 분산저장시스템입니다. 그렇다면 하둡의 HDFS가 있는데 HBase를 사용하는 이유는 무엇일까요? 

 

다시 정리하자면, HDFS는 분산형 파일 시스템으로 대규모 데이터를 저장하기 위한 것이고, HBase는 분산형 NoSQL 데이터베이스로 대규모 데이터를 저장하고 실시간으로 읽고 쓰기 위한 것입니다.

 

여기서 HBase는 실시간으로 읽고 쓰기 위한 것에 초점을 맞췄습니다. HDFS는 데이터를 단순히 저장하기만 하지만, HBase는 데이터를 저장하는 동시에 실시간으로 조회하고 처리할 수 있습니다. 따라서 HBase는 Hadoop 기반의 분산 시스템에서 대규모 데이터를 저장하고 처리하는 데 사용됩니다.

 

 

HDFS / HBase 차이점

데이터 모델

  • HDFS  - HDFS는 분산형 파일 시스템으로 데이터를 파일 단위로 저장합니다. 파일은 블록으로 분할되고, 이 블록들은 클러스터의 여러 노드에 저장됩니다. 
  • HBase - HBase는 분산형 NoSQL 데이터베이스로, 데이터를 행 단위로 저장하며, 각 행은 키-값 쌍의 집합으로 구성됩니다.

데이터의 읽기 쓰기 방식

  • HDFS  - HDFS는 데이터를 일괄적으로 쓰고 읽는 데 특화되어 있습니다. 일관성이 중요하지 않은 대용량 파일의 저장과 처리에 적합합니다.
  • HBase - HBase는 실시간으로 읽고 쓰는 데 특화되어 있으며, 빠른 응답 속도와 일관성이 필요한 애플리케이션에 적합합니다.

데이터 처리

  • HDFS  - HDFS는 대규모 데이터 처리를 위해 MapReduce와 같은 분산 처리 프레임워크를 사용합니다. 
  • HBase - HBase는 Hadoop 에코시스템의 다른 도구와 함께 사용하여 데이터 처리를 할 수 있습니다.

 

 

반응형

+ Recent posts