개발log

hadoop hdfs fsimage 얻기 : fsimage 는 어디에?

!쪼렙조햄 2021. 12. 22. 20:28
반응형

목표 : hdfs의 fsimage 를 xml 형태로 얻기

시행착오 1. fsimage 가 어디에 있지?

구글링 결과 아래 코드를 써서 fsimage 를 얻을 수 있다고 했다

hdfs oiv -i fsimage

oiv : offline image viewer
oiv 는 hdfs 의 fsimage를 fuman-readable 한 상태로 만들어주는 툴이라고 한다.
장비에 hadoop은 실행중이기 때문에 당연히 되겠지..! 했지만

그러나 결과는 "fsimage : no such file or directory"..
그리고 무슨 namenode 를 찾을 수 없다고 했던가

시행착오 2. 그럼 namenode 있는 곳에 가야겠다..! namenode 가 어디에 있지?
hdfs getconf -namenodes

위 명령어를 통해 active/standby 상태의 namenode 목록을 얻을 수 있었다.
그런데 알고보니 namenode 는 현재 접속한 장비가 아닌,
다른 형제장비(..?)에 존재했다
하둡은 원래 이런건가..? 미래의 나는 잘 알았으면 좋겠다

시행착오 3. 그럼 namenode 있는 장비에서 fsimage 를 찾아야겠다!
hdfs oiv -i fsimage -addr {namenode 장비 ip}:5978

oiv 의 옵션들 중, addr 옵션이 있는것을 발견하고,
addr 옵션의  default 는 localhost:5978임을 알게되어,
요 자리에 namenode 장비의 ip를 넣어주면 되지 않을까? 하는 생각을 하게 되었다

그러나 지금 생각해보니, 해당 addr 옵션은 fsimage 를 가져올 주소가 아닌,
oiv 프로세스를 실행시키고, 해당 프로세스에 접근할때 사용할 주소였던 것 같다.
(doc. Users can specify the address to listen by -addr option (default by localhost:5978))

꺅 해결.

알고보니, 문제는 간단했다.
그냥 현재 상태에서 fsimage 를 따면 되는것

hdfs dfsadmin -fetchImage /tmp

위 명령어를 입력하자 /tmp 경로에 fsimage_{날짜?} 가 생성되었다

 

Reference

https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsImageViewer.html

https://sranka.wordpress.com/tag/hdfs-oiv/

 

반응형