주요 컨텐츠로 이동

Hadoop 분산 파일 시스템(HDFS)이란 무엇인가요?

클러스터 노드에 복제된 블록으로 파일을 분할하는 분산 스토리지로, 내결함성, 확장 가능한 용량 및 높은 처리량 액세스를 제공합니다.

작성자: Databricks 직원

  • Hadoop 분산 파일 시스템(HDFS)은 파일을 블록으로 분할하고 확장성과 내결함성을 위해 여러 머신에 분산하는 스토리지 시스템입니다.
  • HDFS는 상품용 하드웨어 클러스터에 매우 큰 데이터 세트를 저장하고 개별 노드가 실패하더라도 데이터를 계속 사용할 수 있도록 설계되었습니다.
  • 많은 조직이 현재 레이크하우스 아키텍처와 함께 클라우드 객체 스토리지를 사용하지만, HDFS를 이해하면 초기 빅데이터 시스템의 기반을 설명하는 데 도움이 됩니다.

HDFS

HDFS(Hadoop 분산 파일 시스템)는 Hadoop 애플리케이션에서 사용하는 기본 스토리지 시스템입니다. 이 오픈 소스 프레임워크는 노드 간에 데이터를 신속하게 전송하여 작동합니다. 빅데이터를 처리하고 저장해야 하는 기업에서 자주 사용됩니다. HDFS는 빅데이터를 관리하고 빅데이터 분석을 지원하는 수단을 제공하므로 많은 Hadoop 시스템의 핵심 구성 요소입니다.

전 세계적으로 HDFS를 사용하는 많은 기업이 있는데, HDFS는 정확히 무엇이며 왜 필요할까요? HDFS가 무엇인지, 그리고 비즈니스에 왜 유용할 수 있는지 자세히 알아보겠습니다.

HDFS란 무엇인가요?

HDFS는 Hadoop 분산 파일 시스템을 의미합니다. HDFS는 일반 하드웨어에서 실행되도록 설계된 분산 파일 시스템으로 작동합니다.

HDFS는 내결함성이 있으며 저렴한 일반 하드웨어에 배포되도록 설계되었습니다. HDFS는 애플리케이션 데이터에 대한 높은 처리량 데이터 액세스를 제공하며 대규모 데이터 세트를 가진 애플리케이션에 적합하고 Apache Hadoop에서 파일 시스템 데이터에 대한 스트리밍 액세스를 지원합니다.

그렇다면 Hadoop이란 무엇인가요? 그리고 HDFS와 어떻게 다른가요? Hadoop과 HDFS의 핵심 차이점은 Hadoop은 데이터를 저장, 처리 및 분석할 수 있는 오픈 소스 프레임워크인 반면 HDFS는 데이터 액세스를 제공하는 Hadoop의 파일 시스템이라는 것입니다. 이는 본질적으로 HDFS가 Hadoop의 모듈임을 의미합니다.

HDFS 아키텍처를 살펴보겠습니다.

hdsarchitecture image

보시다시피 NameNode와 DataNode에 중점을 둡니다. NameNode는 GNU/Linux 운영 체제와 소프트웨어를 포함하는 하드웨어입니다. Hadoop 분산 파일 시스템은 마스터 서버 역할을 하며 파일을 관리하고, 클라이언트의 파일 액세스를 제어하며, 파일 이름 바꾸기, 열기, 닫기와 같은 파일 운영 프로세스를 감독합니다.

DataNode는 GNU/Linux 운영 체제와 DataNode 소프트웨어를 갖춘 하드웨어입니다. HDFS 클러스터의 각 노드에서 DataNode를 찾을 수 있습니다. 이러한 노드는 클라이언트가 요청할 때 파일 시스템에 대한 작업을 수행하고 NameNode가 지시할 때 파일을 생성, 복제 및 차단할 수 있으므로 시스템의 데이터 스토리지를 제어하는 데 도움이 됩니다.

HDFS의 의미와 목적은 다음과 같은 목표를 달성하는 것입니다.

  • 대규모 데이터 세트 관리 - 데이터 세트를 구성하고 저장하는 것은 어려운 작업일 수 있습니다. HDFS는 방대한 데이터 세트를 처리해야 하는 애플리케이션을 관리하는 데 사용됩니다. 이를 위해 HDFS는 클러스터당 수백 개의 노드를 가져야 합니다.
  • 결함 감지 - HDFS에는 많은 일반 하드웨어가 포함되어 있으므로 신속하고 효과적으로 결함을 검색하고 감지하는 기술이 있어야 합니다. 구성 요소 실패는 일반적인 문제입니다.
  • 하드웨어 효율성 - 대규모 데이터 세트가 관련된 경우 네트워크 트래픽을 줄이고 처리 속도를 높일 수 있습니다.

HDFS의 역사

Hadoop의 기원은 무엇인가요? HDFS의 설계는 Google 파일 시스템을 기반으로 했습니다. 원래 Apache Nutch 웹 검색 엔진 프로젝트의 인프라로 구축되었지만 이후 Hadoop 생태계의 구성원이 되었습니다.

인터넷 초창기에는 웹 크롤러가 사람들이 웹 페이지에서 정보를 검색하는 방법으로 등장했습니다. 이는 Yahoo 및 Google과 같은 다양한 검색 엔진을 만들었습니다.

또한 데이터를 여러 컴퓨터에 동시에 분산하고 계산하려는 Nutch라는 또 다른 검색 엔진을 만들었습니다. Nutch는 Yahoo로 이전되었고 두 개로 분할되었습니다. Apache Spark와 Hadoop은 이제 별도의 개체입니다. Hadoop은 일괄 처리를 처리하도록 설계된 반면 Spark는 실시간 데이터를 효율적으로 처리하도록 만들어졌습니다.

오늘날 Hadoop의 구조와 프레임워크는 전 세계 소프트웨어 개발자 및 기여자 커뮤니티인 Apache 소프트웨어 재단에서 관리합니다.

HDFS는 여기서 탄생했으며 하드웨어 스토리지 솔루션을 더 좋고 효율적인 방법인 가상 파일 시스템으로 대체하도록 설계되었습니다. 처음 등장했을 때 MapReduce는 HDFS를 사용할 수 있는 유일한 분산 처리 엔진이었습니다. 최근에는 HBase 및 Solr와 같은 대체 Hadoop 데이터 서비스 구성 요소도 데이터를 저장하기 위해 HDFS를 활용합니다.

빅데이터 환경에서 HDFS란 무엇인가요?

그렇다면 빅데이터란 무엇이며 HDFS는 어떻게 관련될까요? "빅데이터"라는 용어는 저장, 처리 및 분석하기 어려운 모든 데이터를 의미합니다. HDFS 빅데이터는 HDFS 파일 시스템에 구성된 데이터입니다.

이제 알다시피 Hadoop은 병렬 처리와 분산 스토리지를 사용하여 작동하는 프레임워크입니다. 이는 기존 방식으로 저장할 수 없는 빅데이터를 정렬하고 저장하는 데 사용할 수 있습니다.

실제로 Netflix, Expedia, British Airways와 같은 회사가 데이터 스토리지에 대해 Hadoop과 긍정적인 관계를 유지하며 사용하는 가장 일반적인 소프트웨어입니다. HDFS는 많은 비즈니스가 데이터를 저장하기로 선택하는 방식이므로 빅데이터에서 중요합니다.

HDFS 서비스에서 구성된 빅데이터의 다섯 가지 핵심 요소는 다음과 같습니다.

  • 속도 - 데이터가 생성, 수집 및 분석되는 속도입니다.
  • - 생성되는 데이터의 양입니다.
  • 다양성 - 데이터 유형으로, 구조화되거나 비구조화될 수 있습니다.
  • 정확성 - 데이터의 품질과 정확성입니다.
  • 가치 - 이 데이터를 비즈니스 프로세스에 대한 통찰력을 제공하는 데 어떻게 사용할 수 있는지입니다.

Hadoop 분산 파일 시스템의 장점

Hadoop 내의 오픈 소스 하위 프로젝트로서 HDFS는 빅데이터를 처리할 때 다섯 가지 핵심 이점을 제공합니다.

  1. 내결함성. HDFS는 신속하게 복구하고 지속성과 안정성을 보장하도록 결함을 감지하고 자동으로 복구하도록 설계되었습니다.
  2. 속도, 클러스터 아키텍처 덕분에 초당 2GB의 데이터를 유지할 수 있습니다.
  3. 더 많은 유형의 데이터에 액세스, 특히 스트리밍 데이터. 일괄 처리를 위해 대량의 데이터를 처리하도록 설계되었기 때문에 높은 데이터 처리량을 허용하여 스트리밍 데이터를 지원하는 데 이상적입니다.
  4. 호환성 및 이식성. HDFS는 다양한 하드웨어 설정에서 이식 가능하고 여러 기본 운영 체제와 호환되도록 설계되어 사용자가 HDFS를 자체 맞춤 설정과 함께 사용할 수 있는 옵션을 제공합니다. 이러한 이점은 특히 빅데이터를 처리할 때 중요하며 HDFS가 데이터를 처리하는 특정 방식을 통해 가능해졌습니다.

    이 그래프는 로컬 파일 시스템과 HDFS의 차이점을 보여줍니다.

    hadoop hdfs

  5. 확장성. 파일 시스템 크기에 따라 리소스를 확장할 수 있습니다. HDFS에는 수직 및 수평 확장 메커니즘이 포함됩니다.
  6. 데이터 지역성. Hadoop 파일 시스템의 경우 데이터가 컴퓨팅 단위가 있는 곳으로 이동하는 것이 아니라 데이터 노드에 상주합니다. 데이터와 컴퓨팅 프로세스 간의 거리를 단축하여 네트워크 혼잡을 줄이고 시스템을 더 효과적이고 효율적으로 만듭니다.
  7. 비용 효율성. 처음에는 데이터를 생각할 때 값비싼 하드웨어와 많은 대역폭을 생각할 수 있습니다. 하드웨어 장애가 발생하면 수정하는 데 많은 비용이 들 수 있습니다. HDFS를 사용하면 데이터가 가상이기 때문에 저렴하게 저장되어 파일 시스템 메타데이터 및 파일 시스템 네임스페이스 데이터 스토리지 비용을 크게 줄일 수 있습니다. 또한 HDFS는 오픈 소스이므로 기업은 라이선스 비용을 지불할 필요가 없습니다.
  8. 대량의 데이터 저장. 데이터 스토리지는 HDFS의 핵심이며 모든 종류와 크기의 데이터를 의미하지만 특히 저장에 어려움을 겪는 기업의 대량 데이터를 의미합니다. 여기에는 구조화된 데이터와 비구조화된 데이터가 모두 포함됩니다.
  9. 유연성. 다른 기존 스토리지 데이터베이스와 달리 저장하기 전에 수집된 데이터를 처리할 필요가 없습니다. 원하는 만큼 데이터를 저장하고 나중에 사용할 방법을 정확히 결정할 수 있습니다. 여기에는 텍스트, 비디오, 이미지와 같은 비구조화된 데이터도 포함됩니다.

HDFS 사용 방법

그렇다면 HDFS는 어떻게 사용하나요? HDFS는 일반 하드웨어 클러스터에서 주 NameNode와 여러 다른 DataNode와 함께 작동합니다. 이러한 노드는 데이터 센터 내의 같은 위치에 구성됩니다. 다음으로, 여러 DataNode에 분산되어 저장되는 블록으로 나뉩니다. 데이터 손실 가능성을 줄이기 위해 블록은 종종 노드에 복제됩니다. 데이터가 손실될 경우 백업 시스템입니다.

NameNode에 대해 알아보겠습니다. NameNode는 클러스터 내에서 데이터가 무엇인지, 어떤 블록에 속하는지, 블록 크기는 얼마인지, 어디로 가야 하는지를 아는 노드입니다. NameNode는 또한 누군가가 데이터를 쓰고, 읽고, 생성하고, 제거하고, 복제할 수 있을 때를 포함하여 파일에 대한 액세스를 제어하는 데 사용됩니다.

서버 용량에 따라 필요한 경우 클러스터를 실시간으로 조정할 수도 있습니다. 이는 데이터 급증이 있을 때 유용할 수 있습니다. 필요한 경우 노드를 추가하거나 제거할 수 있습니다.

이제 DataNode에 대해 알아보겠습니다. DataNode는 작업을 시작하고 완료해야 하는지 확인하기 위해 NameNode와 지속적으로 통신합니다. 이러한 지속적인 협업 스트림은 NameNode가 각 DataNode의 상태를 정확히 알고 있음을 의미합니다.

DataNode가 제대로 작동하지 않는 것으로 확인되면 NameNode는 해당 작업을 동일한 데이터 블록의 다른 작동 노드에 자동으로 다시 할당할 수 있습니다. 마찬가지로 DataNode는 서로 통신할 수 있으므로 표준 파일 작업 중에 협업할 수 있습니다. NameNode는 DataNode와 해당 성능을 알고 있기 때문에 시스템을 유지하는 데 중요합니다.

데이터 블록은 여러 데이터 노드에 복제되며 NameNode에서 액세스합니다.

HDFS를 사용하려면 Hadoop 클러스터를 설치하고 설정해야 합니다. 처음 사용하는 사용자에게 더 적합한 단일 노드 설정이거나 대규모 분산 클러스터에 대한 클러스터 설정일 수 있습니다. 그런 다음 시스템을 운영하고 관리하기 위해 아래와 같은 HDFS 명령에 익숙해져야 합니다.

명령설명
-rm파일 또는 디렉토리를 제거합니다.
-ls권한 및 기타 세부 정보로 파일을 나열합니다.
-mkdirHDFS에 경로라는 디렉토리를 만듭니다.
-cat파일 내용을 표시합니다.
-rmdir디렉토리를 삭제합니다.
-put로컬 디스크에서 HDFS로 파일 또는 폴더를 업로드합니다.
-rmr경로로 식별된 파일 또는 폴더와 하위 폴더를 삭제합니다.
-getHDFS에서 로컬 파일로 파일 또는 폴더를 이동합니다.
-count파일 수, 디렉토리 수 및 파일 크기를 계산합니다.
-df사용 가능한 공간을 표시합니다.
-getmergeHDFS의 여러 파일을 병합합니다.
-chmod파일 권한을 변경합니다.
-copyToLocal파일을 로컬 시스템으로 복사합니다.
-Stat파일 또는 디렉토리에 대한 통계를 인쇄합니다.
-head파일의 첫 번째 킬로바이트를 표시합니다.
-usage개별 명령에 대한 도움말을 반환합니다.
-chown파일의 새 소유자와 그룹을 할당합니다.

HDFS는 어떻게 작동하나요?

앞서 언급했듯이 HDFS는 NameNode와 DataNode를 사용합니다. HDFS는 컴퓨팅 노드 간의 빠른 데이터 전송을 허용합니다. HDFS가 데이터를 받으면 정보를 블록으로 나누어 클러스터의 다른 노드에 분산할 수 있습니다.

데이터는 블록으로 분할되어 저장용 DataNode에 분산되며, 이러한 블록은 노드 전체에 복제되어 효율적인 병렬 처리를 허용할 수 있습니다. 다양한 명령을 통해 데이터에 액세스하고 이동하고 볼 수 있습니다. HDFS DFS 옵션인 "-get""-put"을 사용하면 필요한 대로 데이터를 검색하고 이동할 수 있습니다.

또한 HDFS는 매우 민감하도록 설계되었으며 오류를 신속하게 감지할 수 있습니다. 파일 시스템은 데이터 복제를 사용하여 모든 데이터 조각이 여러 번 저장되도록 하고 개별 노드에 할당하여 다른 복사본과 다른 랙에 최소한 하나의 복사본이 있도록 합니다.

이는 DataNode가 NameNode에 신호를 보내지 않으면 클러스터에서 해당 DataNode를 제거하고 해당 DataNode 없이 작동함을 의미합니다. 그런 다음 이 데이터 노드가 다시 오면 새 클러스터에 할당될 수 있습니다. 또한 데이터 블록이 여러 DataNode에 복제되므로 하나를 제거해도 파일 손상이 발생하지 않습니다.

HDFS 구성 요소

Hadoop에는 세 가지 주요 구성 요소가 있다는 것을 아는 것이 중요합니다. Hadoop HDFS, Hadoop MapReduce 및 Hadoop YARN입니다. 이러한 각 구성 요소가 Hadoop에 무엇을 제공하는지 살펴보겠습니다.

  • Hadoop HDFS - Hadoop Distributed File System(HDFS)은 Hadoop의 저장 장치입니다.
  • Hadoop MapReduce - Hadoop MapReduce는 Hadoop의 처리 장치입니다. 이 소프트웨어 프레임워크는 방대한 양의 데이터를 처리하는 애플리케이션을 작성하는 데 사용됩니다.
  • Hadoop YARN - Hadoop YARN은 Hadoop의 리소스 관리 구성 요소입니다. HDFS에 저장된 배치, 스트림, 대화형 및 그래프 처리를 위한 데이터를 처리하고 실행합니다.

HDFS 파일 시스템 만드는 방법

HDFS 파일 시스템을 만드는 방법을 알고 싶으신가요? 시스템을 만들고, 편집하고, 필요한 경우 제거하는 방법을 안내하는 아래 단계를 따르세요.

HDFS 나열

HDFS 목록은 /user/yourUserName이어야 합니다. HDFS 홈 디렉토리의 내용을 보려면 다음을 입력합니다.

이제 막 시작했으므로 이 단계에서는 아무것도 볼 수 없습니다. 비어 있지 않은 디렉토리의 내용을 보려면 다음을 입력합니다.

그런 다음 다른 모든 Hadoop 사용자의 홈 디렉토리 이름을 볼 수 있습니다.

HDFS에서 디렉토리 만들기

이제 테스트 디렉토리를 만들 수 있습니다. testHDFS라고 부르겠습니다. HDFS 내에 나타납니다. 다음을 입력하기만 하면 됩니다.

이제 HDFS를 나열할 때 입력한 명령을 사용하여 디렉토리가 있는지 확인해야 합니다. testHDFS 디렉토리가 나열된 것을 볼 수 있습니다.

HDFS의 전체 경로 이름을 사용하여 다시 확인합니다. 다음을 입력합니다.

다음 단계를 진행하기 전에 이것이 작동하는지 다시 확인하십시오.

파일 복사

로컬 파일 시스템에서 HDFS로 파일을 복사하려면 먼저 복사하려는 파일을 만듭니다. 이렇게 하려면 다음을 입력합니다.

그러면 HDFS 테스트 파일이라는 문자를 포함하여 testFile이라는 새 파일이 생성됩니다. 이를 확인하려면 다음을 입력합니다.

ls

그런 다음 파일이 생성되었는지 확인하려면 다음을 입력합니다.

그런 다음 파일을 HDFS로 복사해야 합니다. Linux에서 HDFS로 파일을 복사하려면 다음을 사용해야 합니다.

"-cp" 명령은 HDFS 내에서 파일을 복사하는 데 사용되므로 "-copyFromLocal" 명령을 사용해야 한다는 점에 유의하십시오.

이제 파일이 올바르게 복사되었는지 확인하기만 하면 됩니다. 다음을 입력하여 수행합니다.

파일 이동 및 복사

testfile을 복사할 때 기본 홈 디렉토리에 배치되었습니다. 이제 이미 만든 testHDFS 디렉토리로 이동할 수 있습니다. 다음을 사용합니다.

첫 번째 부분은 testFile을 HDFS 홈 디렉토리에서 만든 테스트 디렉토리로 이동했습니다. 이 명령의 두 번째 부분은 더 이상 HDFS 홈 디렉토리에 없음을 보여주고 세 번째 부분은 이제 테스트 HDFS 디렉토리로 이동했음을 확인합니다.

파일을 복사하려면 다음을 입력합니다.

디스크 사용량 확인

HDFS를 사용할 때는 디스크 공간을 확인하는 것이 유용합니다. 이렇게 하려면 다음 명령을 입력할 수 있습니다.

그러면 HDFS에서 사용 중인 공간을 볼 수 있습니다. 다음을 입력하여 클러스터 전체에서 HDFS에서 사용 가능한 공간을 볼 수도 있습니다.

파일/디렉토리 제거

HDFS에서 파일이나 디렉토리를 삭제해야 할 때가 올 수 있습니다. 이는 다음 명령으로 달성할 수 있습니다.

만든 testHDFS 디렉토리와 testFile2가 여전히 남아 있는 것을 볼 수 있습니다. 다음을 입력하여 디렉토리를 제거합니다.

그러면 오류 메시지가 표시되지만 당황하지 마십시오. "rmdir: testhdfs: Directory is not empty"와 같은 메시지가 표시됩니다. 디렉토리를 삭제하려면 비어 있어야 합니다. "rm" 명령을 사용하여 이를 우회하고 포함된 모든 파일이 있는 디렉토리를 제거할 수 있습니다. 다음을 입력합니다.

보고서

기업을 위한 에이전틱 AI 플레이북

HDFS 설치 방법

Hadoop을 설치하려면 단일 노드와 다중 노드가 있다는 것을 기억해야 합니다. 요구 사항에 따라 단일 노드 또는 다중 노드 클러스터를 사용할 수 있습니다.

단일 노드 클러스터는 하나의 DataNode만 실행됨을 의미합니다. 여기에는 단일 머신에서 NameNode, DataNode, 리소스 관리자 및 노드 관리자가 포함됩니다.

어떤 산업 분야에서는 이것만으로도 충분합니다. 예를 들어 의료 분야에서는 연구를 수행하고 데이터를 순차적으로 수집, 정렬 및 처리해야 하는 경우 단일 노드 클러스터를 사용할 수 있습니다. 이는 수백 대의 컴퓨터에 분산된 데이터에 비해 소규모 데이터 처리를 쉽게 처리할 수 있습니다. 단일 노드 클러스터를 설치하려면 다음 단계를 따르세요.

  1. Java 8 패키지를 다운로드합니다. 이 파일을 홈 디렉토리에 저장합니다.
  2. Java Tar 파일을 추출합니다.
  3. Hadoop 2.7.3 패키지를 다운로드합니다.
  4. Hadoop Tar 파일을 추출합니다.
  5. bash 파일(.bashrc)에 Hadoop 및 Java 경로를 추가합니다.
  6. Hadoop 구성 파일을 편집합니다.
  7. core-site.xml을 열고 속성을 편집합니다.
  8. hdfs-site.xml을 편집하고 속성을 편집합니다.
  9. mapred-site.xml 파일을 편집하고 속성을 편집합니다.
  10. yarn-site.xml을 편집하고 속성을 편집합니다.
  11. hadoop-env.sh를 편집하고 Java 경로를 추가합니다.
  12. Hadoop 홈 디렉토리로 이동하여 NameNode를 포맷합니다.
  13. hadoop-2.7.3/sbin 디렉토리로 이동하여 모든 데몬을 시작합니다.
  14. 모든 Hadoop 서비스가 실행 중인지 확인합니다.

이제 HDFS가 성공적으로 설치되었습니다.

HDFS 파일에 액세스하는 방법

데이터를 다루고 있다는 점을 감안할 때 HDFS의 보안은 매우 중요합니다. HDFS는 기술적으로 가상 스토리지이므로 클러스터 전체에 걸쳐 확장되므로 파일 시스템에서 메타데이터만 볼 수 있으며 실제 특정 데이터는 볼 수 없습니다.

HDFS 파일에 액세스하려면 HDFS에서 로컬 파일 시스템으로 "jar" 파일을 다운로드할 수 있습니다. 웹 사용자 인터페이스를 사용하여 HDFS에 액세스할 수도 있습니다. 브라우저를 열고 검색창에 "localhost:50070"을 입력하기만 하면 됩니다. 거기에서 HDFS의 웹 사용자 인터페이스를 보고 오른쪽의 유틸리티 탭으로 이동할 수 있습니다. 그런 다음 "파일 시스템 탐색"을 클릭하면 HDFS에 있는 모든 파일 목록이 표시됩니다.

HDFS DFS 예제

다음은 가장 일반적인 Hadoop 명령 예제입니다.

예제 A

디렉토리를 삭제하려면 다음을 적용해야 합니다(참고: 파일이 비어 있는 경우에만 수행할 수 있습니다).

또는

예제 B

HDFS에 여러 파일이 있는 경우 "-getmerge" 명령을 사용할 수 있습니다. 이 명령은 여러 파일을 단일 파일로 병합한 다음 로컬 파일 시스템으로 다운로드할 수 있습니다. 다음을 사용하여 수행할 수 있습니다.

또는

예제 C

HDFS에서 로컬로 파일을 업로드하려면 "-put" 명령을 사용할 수 있습니다. 복사할 위치와 HDFS에 복사할 파일을 지정합니다. 아래를 사용하세요.

또는

예제 D

count 명령은 HDFS의 디렉토리, 파일 및 파일 크기를 추적하는 데 사용됩니다. 다음을 사용할 수 있습니다.

또는

예제 E

"chown" 명령은 파일의 소유자 및 그룹을 변경하는 데 사용할 수 있습니다. 이를 활성화하려면 아래를 사용하세요.

또는

HDFS 스토리지란 무엇인가요?

이제 알다시피 HDFS 데이터는 블록이라는 것에 저장됩니다. 이 블록은 파일 시스템이 저장할 수 있는 가장 작은 데이터 단위입니다. 파일은 이러한 블록으로 처리 및 분할된 다음 클러스터 전체에 분산되고 안전을 위해 복제됩니다. 일반적으로 각 블록은 세 번 복제될 수 있습니다. 이 다이어그램은 빅데이터와 HDFS로 저장되는 방법을 보여줍니다.

main qimg

첫 번째는 DataNode에서 찾을 수 있고, 두 번째는 클러스터 내의 별도 DataNode에 저장되며, 세 번째는 다른 클러스터의 DataNode에 저장됩니다. 이것은 삼중 보호 보안 단계와 같습니다. 따라서 최악의 경우 복제본 하나가 실패하더라도 데이터가 완전히 사라지지는 않습니다.

NameNode는 블록 수와 복제본이 저장된 위치와 같은 중요한 정보를 유지합니다. 이에 비해 DataNode는 실제 데이터를 저장하며 명령에 따라 블록을 생성, 제거 및 복제할 수 있습니다. 다음과 같이 보입니다.

이것은 DataNode가 블록을 저장해야 하는 위치를 결정합니다.

HDFS는 데이터를 어떻게 저장하나요?

HDFS 파일 시스템은 마스터 서비스(NameNode, 보조 NameNode 및 DataNode) 세트로 구성됩니다. NameNode와 보조 NameNode는 HDFS 메타데이터를 관리합니다. DataNode는 기본 HDFS 데이터를 호스팅합니다.

NameNode는 HDFS의 특정 파일 내용을 포함하는 DataNode를 추적합니다. HDFS는 파일을 블록으로 나누고 각 블록을 DataNode에 저장합니다. 여러 DataNode가 클러스터에 연결됩니다. 그런 다음 NameNode는 이러한 데이터 블록의 복제본을 클러스터 전체에 분산합니다. 또한 사용자 또는 애플리케이션에 원하는 정보를 찾을 위치를 지시합니다.

Hadoop 분산 파일 시스템(HDFS)은 무엇을 처리하도록 설계되었나요?

간단히 말해서 "Hadoop 분산 파일 시스템은 무엇을 처리하도록 설계되었나요?"라고 물으면 답은 무엇보다도 빅데이터입니다. 이는 그렇지 않으면 비즈니스 및 고객의 데이터를 관리하고 저장하는 데 어려움을 겪을 대기업에게 매우 유용할 수 있습니다.

Hadoop을 사용하면 거래 데이터, 과학 데이터, 소셜 미디어 데이터, 광고 데이터 및 머신러닝 데이터를 저장하고 통합할 수 있습니다. 또한 이 데이터로 돌아가 비즈니스 성과 및 분석에 대한 귀중한 통찰력을 얻을 수 있습니다.

데이터를 저장하도록 설계되었으므로 HDFS는 과학자나 이러한 데이터를 분석하려는 의료 분야에서 일반적으로 사용되는 원시 데이터도 처리할 수 있습니다. 이를 데이터 레이크라고 합니다. 이를 통해 제약 없이 더 어려운 질문에 답할 수 있습니다.

또한 Hadoop은 다양한 방식으로 방대한 양의 데이터를 처리하도록 설계되었으므로 분석 목적으로 알고리즘을 실행하는 데에도 사용할 수 있습니다. 이는 기업이 데이터를 보다 효율적으로 처리하고 분석하여 새로운 추세와 이상 징후를 발견하는 데 도움이 된다는 것을 의미합니다. 일부 데이터 세트는 데이터 웨어하우스에서 제거되어 Hadoop으로 이동되고 있습니다. 모든 것을 하나의 쉽게 액세스할 수 있는 장소에 저장하는 것이 더 쉽습니다.

거래 데이터의 경우 Hadoop은 수백만 건의 거래를 처리할 수 있습니다. 스토리지 및 처리 기능을 통해 고객 데이터를 저장하고 분석하는 데 사용할 수 있습니다. 또한 데이터를 심층 분석하여 비즈니스 목표에 도움이 되는 새로운 추세와 패턴을 발견할 수 있습니다. Hadoop은 지속적으로 새로운 데이터로 업데이트되고 있으며, 새 데이터와 이전 데이터를 비교하여 변경된 내용과 그 이유를 확인할 수 있다는 점을 잊지 마세요.

HDFS 고려 사항

기본적으로 HDFS는 3배 복제본으로 구성되어 데이터 세트에 두 개의 추가 복사본이 있습니다. 이는 처리 중 지역 데이터의 가능성을 높이지만 오버헤드 스토리지 비용이 발생합니다.

  • HDFS는 로컬로 연결된 스토리지와 함께 구성할 때 가장 잘 작동합니다. 이는 파일 시스템의 최상의 성능을 보장합니다.
  • HDFS 용량을 늘리려면 스토리지 미디어뿐만 아니라 새 서버(컴퓨팅, 메모리, 디스크)를 추가해야 합니다.

HDFS 대 클라우드 객체 스토리지

앞서 언급했듯이 HDFS 용량은 컴퓨팅 리소스와 밀접하게 관련되어 있습니다. 스토리지 용량을 늘리려면 CPU 리소스를 늘려야 하지만 후자는 필요하지 않습니다. HDFS에 더 많은 데이터 노드를 추가할 때 기존 데이터를 새로 추가된 서버에 분산하기 위해 재균형 작업이 필요합니다.

이 작업은 시간이 걸릴 수 있습니다. 온프레미스 환경에서 Hadoop 클러스터를 확장하는 것은 비용 및 공간 측면에서도 어려울 수 있습니다. HDFS는 로컬로 연결된 스토리지를 사용하여 YARN이 처리할 데이터가 저장된 서버에 처리를 프로비저닝할 수 있다고 가정할 때 IO 성능 이점을 제공할 수 있습니다.

사용량이 많은 환경에서는 대부분의 데이터 읽기/쓰기 작업이 로컬이 아닌 네트워크를 통해 이루어질 수 있습니다. 클라우드 객체 스토리지에는 Azure Data Lake Storage, AWS S3 또는 Google Cloud Storage와 같은 기술이 포함됩니다. 이는 액세스하는 컴퓨팅 리소스와 독립적이므로 고객은 클라우드에 훨씬 더 많은 양의 데이터를 저장할 수 있습니다.

페타바이트 규모의 데이터를 저장하려는 고객은 클라우드 객체 스토리지에 쉽게 저장할 수 있습니다. 하지만 클라우드 스토리지에 대한 모든 읽기 및 쓰기 작업은 네트워크를 통해 이루어집니다. 따라서 데이터에 액세스할 애플리케이션은 가능한 경우 캐싱을 활용하거나 IO 작업을 최소화하는 로직을 포함하는 것이 중요합니다.

추가 리소스

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

최신 게시물을 이메일로 받아보세요

블로그를 구독하고 최신 게시물을 이메일로 받아보세요.