morebo2ks / hadoop

5 stars 0 forks source link

2주차 hadoop 스터디 #4

Closed KilJaeeun closed 2 years ago

KilJaeeun commented 2 years ago

이전시간 키워드

(조사해오신게 있으시면 과제 제출할때 링크 남겨주시는것도 좋을 것 같습니다! 물론 이 이슈를 수정해서 키워드 더 넣으셔도돼요)

wookiist commented 2 years ago

오재욱 스터디 내역

내용정리

KilJaeeun commented 2 years ago

https://www.notion.so/2-hadoop-HDFS-MapReduce-1aa2c930c4ab4ddca8646e324c49acf7

hyunju-song commented 2 years ago

송현주 스터디 내역

jasonkang14 commented 2 years ago

자료 공유 드립니다~ https://www.notion.so/byeongjinkang/HDFS-6a9178132841450da6d346532866c8ae

JSYoo5B commented 2 years ago

유재상 스터디 내역

HDFS (Hadoop Distributed File System)

이전에 봤던 하둡 구성 요소 요약처럼, 분산 파일 시스템임. 목표: 파일을 분산 저장함으로서 노드(클러스터), 하드웨어 장애에 안정적으로 파일을 보관하기 위함 위는 분산 파일 시스템의 특징이지만, 특히 HDFS는 파일이 크다는 점이 주요 특징인 것으로 보임.

원리: Name Node, Data Node 등으로 역할이 분리됨

여기서 Data Node 간의 데이터는 복제가 되기 때문에 고장에 대한 안정성은 보장되지만 Name Node의 경우 고장시 파일 시스템 전체에 지장을 줄 수도 있음 (SPOF:Single Point of Failure)

Name Node의 실패로 인한 파일 시스템 실패를 막기 위한 접근법은 아래와 같음

실습

기본적인 파일 시스템 사용해보기와 비슷함. (Web UI, CLI로 실험) NFS나 HTTP/HDFS Proxy 실습이 있었으면 좋을듯

참고 자료

질문 사항

HDFS와 다른 분산 파일 시스템의 가장 큰 특징이 파일 크기가 크다는 것으로 보이는데, 내부 구현 원리가 궁금함. 큰 파일을 보관하는데 더 유리한 방법이 있다는 것인지, 아니면 Name Node의 설계 자체가 파일 목록을 많이 저장하지 않게 발전했다는 것인지

wookiist commented 2 years ago

HDFS 추가 사항

현재 저희 회사에서 사용중인 구조는 HDFS HA 입니다. 초반에 구축할 때는 secondary namenode로 배포가 되는데, 이걸 HA로 변경해서 사용하는 거 같아요. 참고로 강의에서 말한 내용과는 다르게 Standby NN을 Shutdown 해두지는 않는다고 합니다(ㅋㅋㅋ)

pn-sn

위 그림은 fsimage와 edit log가 어떻게 관리되는지 보여주는 구조도인데요.

여기서 fsimage와 edit log를 보관하는 노드를 journalnode라고 불러요. 강의에서 나왔던 edit log를 보관하는 Shared Volume이 바로 저널노드입니다. journalnode는 정족수를 맞춰야 하기 때문에 보통 홀수로 구성합니다.

만약, ACT 네임노드에서 장애가 발생하면, fsimage를 STB 네임노드의 memory에 load하고, edit log는 최신까지 있을테니, edit log 내에서 특정 시점 이후에 발생한 변경 내역을 메모리에 반영해서, 메타를 최신으로 복원할 수 있어요.

edit log가 변경되는 경우는 대부분 client가 hdfs에 파일 쓰기를 작업할 때예요. 네임노드는 fs metadata를 in-memory에서 관리하고 있구요. 파일 쓰기가 이뤄지면, edit log를 먼저 변경한 후에, memory에 떠 있는 metadata를 변경하는 순서라고 합니다. 반면에 읽기 요청이 왔을 때는 edit log를 읽는 것은 아니고, memory에 올려져있는 metadata만을 이용해서 읽어간다고 하네요.

개인적으론, 실제 Hadoop 관리자 입장에선 HDFS NN Failover 과정에 대해서 잘 알아야 할 거 같은데, 요건 저희 책으로 스터디할 때 좀 더 파볼게요


추가로 블록 크기가 128MB라고 해서, 작은 파일을 저장하는 데에도 128MB를 사용하는 건 아니라고 해요. 최대 블록 사이즈가 128MB일 뿐이고, 128MB를 넘어가는 큰 데이터는 블록 크기(128MB)를 기준으로 쪼갤 때 사용한다고 합니다. 당연히 이런 식으로 동작하는게 합리적이라고 생각은 들었지만, ‘하둡이라면 hoxy…?’하는 생각에 여쭤봤었네요 ㅋㅋ