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

브레인스토밍 회의 중인 사업가들

작성자

Jim Holdsworth

Staff Writer

IBM Think

HDFS란 무엇인가요?

Hadoop 분산 파일 시스템(HDFS)은 상용 하드웨어에서 실행할 수 있는 대규모 데이터 세트를 관리하는 파일 시스템입니다. HDFS는 가장 널리 사용되는 Hadoop용 데이터 스토리지 시스템으로, 단일 Apache Hadoop 클러스터를 수백, 심지어 수천 개의 노드로 확장하는 데 사용할 수 있습니다. HDFS는 높은 처리량으로 빅 데이터를 효율적으로 관리하기 때문에 데이터 파이프라인으로 사용할 수 있으며 복잡한 데이터 분석을 지원하는 데 이상적입니다.

HDFS는 오픈 소스 프레임워크를 기반으로 구축되었으며 Apache Hadoop의 주요 구성 요소 중 하나입니다. 나머지 구성 요소로는 MapReduceYARN이 있습니다. HDFS를 Apache HBase와 혼동하거나 대체해서는 안 됩니다. Apache HBase는 HDFS 위에 있는 열 중심의 비관계형 데이터베이스 관리 시스템이며 인메모리 처리 엔진으로 실시간 데이터 요구 사항을 더 잘 지원합니다.

트랙에서 굴러가는 공의 3D 디자인

최신 AI 뉴스+인사이트


주간 Think 뉴스레터에서 전문가들이 선별한 AI, 클라우드 등에 관한 인사이트와 소식을 살펴보세요. 

HDFS의 이점

내결함성 및 하드웨어 장애로부터의 빠른 복구

하나의 HDFS 인스턴스는 수천 대의 서버로 구성될 수 있으므로 적어도 한 대의 서버에 장애가 발생할 가능성은 항상 존재합니다. HDFS는 결함을 감지하고 신속하게 자동으로 복구하도록 구축되었습니다. 여러 노드에 걸쳐 여러 복제본을 생성하는 데이터 복제는 데이터 손실을 방지하는 데 도움이 됩니다. HDFS는 다른 모든 복제본과 다른 랙에 하나 이상의 사본을 보관합니다. 이 데이터 스토리지를 노드 전체에 걸쳐 대규모 클러스터로 사용하면 안정성이 향상됩니다. 또한 HDFS는 스토리지 스냅숏을 생성해 특정 시점(PIT) 정보를 저장할 수 있습니다.

스트리밍 데이터에 액세스

HDFS는 대화형 사용보다는 일괄 처리를 위한 것이므로 높은 데이터 처리 속도에 중점을 두고 설계되어 데이터 세트에 대한 스트리밍 액세스를 지원할 수 있습니다.

대규모 데이터 세트 수용

HDFS는 일반적으로 기가바이트에서 테라바이트 크기의 데이터 세트를 사용하는 애플리케이션을 지원합니다. HDFS는 높은 총 데이터 대역폭을 제공하고, 단일 클러스터에서 수백 개의 노드로 확장할 수 있으며,고성능 컴퓨팅(HPC) 시스템을 구동하는 데 도움이 됩니다. 데이터 레이크는 대개 HDFS에 저장됩니다.데이터 웨어하우스도 HDFS를 사용했지만, 운영이 복잡하다는 이유로 사용 빈도가 줄어들고 있습니다.

비용 효율성

데이터가 가상으로 저장되므로 파일 시스템 메타데이터 및 파일 시스템 네임스페이스 데이터 스토리지에 대한 비용을 줄일 수 있습니다.

이동성

HDFS는 더 많은 도입을 도모하기 위해 여러 하드웨어 플랫폼에 이식 가능하고 Linux, macOS 및 Windows를 비롯한 다양한 기본 운영 체제와 호환되도록 설계되었습니다. 또한 Hadoop 데이터 레이크는 비정형, 반정형 및 정형 데이터베이스를 지원하여 유연성을 극대화할 수 있습니다. Hadoop은 Java로 코딩되어 있지만 C++, Perl, Python, Ruby 등의 다른 언어를 통해서도 데이터 과학에 사용할 수 있습니다.

처리 속도

HDFS는 클러스터 아키텍처를 사용하여 높은 처리량을 제공합니다. Hadoop 파일 시스템은 네트워크 트래픽을 줄이기 위해 데이터를 다른 위치로 이동해 계산을 실행하는 대신, 계산이 이루어지는 DataNode에 바로 데이터를 저장합니다.

확장성

수평적 및 수직적 확장성 기능을 모두 갖춘 HDFS는 조직의 데이터 요구 사항에 맞게 신속하게 조정할 수 있습니다. 클러스터에는 수백 또는 수천 개의 노드가 포함될 수 있습니다.

AI 아카데미

데이터 관리가 생성형 AI 구현의 비결일까요?

생성형 AI를 성공적으로 사용하기 위해 고품질 데이터가 필수적인 이유를 알아보세요.

HDFS 아키텍처 및 작동 방식

HDFS는 디렉터/워커 아키텍처를 가지고 있습니다.

  • HDFS 클러스터에는 디렉터 서버인 NameNode가 하나 포함됩니다. NameNode는 모든 파일의 상태, 파일 권한 및 모든 블록의 위치를 추적합니다. NameNode 소프트웨어는 파일 시스템 네임스페이스를 관리하여 파일에 대한 클라이언트 액세스를 추적 및 제어하고 파일 열기, 닫기, 디렉터리 및 파일 이름 바꾸기 등의 작업을 수행합니다.

    또한 파일 시스템 네임스페이스는 파일을 블록으로 나누고 시스템의 워커 부분인 DataNodes에 블록을 매핑합니다. 시스템 아키텍처는 클러스터당 하나의 NameNode만 구성하여 HDFS 메타데이터의 데이터 관리 및 저장을 간소화합니다. 또한 사용자 데이터가 NameNode를 통해 전달되지 않도록 하여 강화된 보안을 제공합니다.

  • 클러스터의 각 노드에는 데이터 저장소를 관리하는 DataNode가 하나씩 있는 경우가 많습니다. DataNode 소프트웨어는 블록 생성, 삭제 및 복제, 읽기 및 쓰기 요청을 관리합니다. 각 DataNode는 각 블록을 별도의 파일로 사용하여 HDFS 데이터를 로컬 파일 시스템에 별도로 저장합니다. DataNode는 워커 노드(또는 백그라운드에서 프로세스를 실행하는 Hadoop 데몬)로, 경제성을 원하는 조직에서는 이를 상용 하드웨어에서 실행할 수 있습니다.

NameNode와 DataNode는 모두 다양한 운영 체제(OS)에서 실행되도록 작성된 소프트웨어이며, 주로 GNU/Linux OS에서 실행됩니다. HDFS는 Java 언어로 구축되었으므로 Java를 지원하는 모든 시스템에서 NameNode 또는 DataNode 소프트웨어를 사용할 수 있습니다.

배포에는 NameNode 소프트웨어를 실행하는 단일 전용 머신이 있는 경우가 많습니다. 그런 다음 클러스터의 다른 모든 시스템이 DataNode 소프트웨어의 단일 인스턴스를 실행합니다. 드물게 사용되기는 하지만, 필요한 경우 단일 시스템에서 둘 이상의 DataNode를 구성할 수도 있습니다.

데이터를 HDFS로 가져오면 블록으로 나뉘어 클러스터의 다른 노드로 분산됩니다. 여러 DataNodes에 저장된 데이터를 사용해 블록을 다른 노드로 복제하면 병렬 처리가 가능해집니다. 분산 파일 시스템(DFS)에는 데이터에 빠르게 액세스하고, 데이터를 검색하고, 이동하고, 볼 수 있는 명령이 포함되어 있습니다. 여러 DataNode에 걸쳐 데이터 블록의 복제본을 사용하면 다른 복제본 파일이 손상될 위험 없이 하나의 복제본을 제거할 수 있습니다. 기본 HDFS 블록 크기는 128MB(Hadoop 2.x)이며, 크다면 클 수도 있는 크기이지만 검색 시간을 최소화하고 필요한 메타데이터를 줄이기 위해 해당 블록 크기가 선택되었습니다.

위험을 최소화하고 처리 속도를 높이기 위해 DataNode가 NameNode 신호를 중지하면 해당 DataNode는 클러스터에서 제거되고 해당 DataNode 없이 작업이 계속됩니다. 해당 DataNode가 나중에 작동하게 되면 새 클러스터에 할당됩니다.

HDFS는 다양한 인터페이스를 통해 유연한 데이터 접근 파일을 제공합니다. 즉, 네이티브 Java API는 HDFS와 함께 제공되며, Java API에는 C 언어 래퍼를 사용할 수 있고, HTTP 브라우저를 사용해 HDFS 인스턴스의 파일을 찾아볼 수 있습니다.

파일 시스템 네임스페이스

HDFS는 사용자가 여러 파일이 포함된 디렉터리를 만들 수 있는 전통적인 파일 계층 구조로 구성됩니다. 파일 시스템 네임스페이스의 계층 구조는 사용자가 파일을 생성 및 제거하고, 디렉터리 간에 파일을 이동하고, 파일 이름을 바꿀 수 있는 기존 파일 시스템과 유사합니다.

파일 시스템 네임스페이스는 파일 시스템 네임스페이스의 변경 기록을 유지하는 NameNode가 유지 관리합니다. 애플리케이션에 저장할 복제본의 총 수를 여기에서 지정할 수 있습니다. 이 숫자는 해당 파일의 복제 계수입니다. 복제 계수는 파일을 만들 때 설정하고 나중에 필요에 따라 수정할 수 있습니다.

데이터 복제

HDFS는 안정적인 스토리지를 제공하기 위해 대규모 클러스터의 여러 위치에 대용량 파일을 저장하고 각 파일을 블록 시퀀스로 저장합니다. 각 블록은 동일한 크기의 파일에 저장되고, 데이터가 추가될 때마다 채워지는 최종 블록만 파일 크기가 다릅니다.

추가적인 보호를 위해 HDFS 파일은 언제나 한 명의 작성자가 한 번만 쓸 수 있습니다. 모든 데이터가 지침에 따라 복제되고 있는지 확인하려는 목적입니다. NameNode는 클러스터에 연결된 모든 DataNode로부터 하트비트(정기적 상태 보고서) 및 블록 보고서(블록 ID, 생성 스탬프 및 모든 블록 복제본의 길이)를 수신합니다. 하트비트를 수신하면 DataNode가 제대로 작동하고 있다는 뜻입니다.

NameNode는 전체 랙에 장애가 발생할 경우 데이터 손실을 방지하기 위해 Hadoop Rack Awareness이라는 프로세스를 사용하여 각 DataNode의 랙 ID를 선택합니다. 또한 데이터를 읽을 때 여러 랙의 대역폭을 사용할 수 있습니다.

HDFS 예시 및 사용 사례

전체 국가의 전화번호가 포함된 파일이 있다고 가정해보겠습니다. 성이 ㄱ으로 시작하는 사람들의 번호는 서버 1에 저장되고 ㄴ은 서버 2에 저장될 수 있습니다. Hadoop을 사용하면 이 전화번호부의 일부분이 하나의 클러스터에 저장되며, 전체 전화번호부를 재구성하려면 애플리케이션이 클러스터에 있는 모든 서버의 블록을 사용할 수 있어야 합니다.

서버에 장애가 발생했을 때 고가용성을 보장하기 위해 HDFS는 기본적으로 이러한 작은 부분을 두 대의 추가 서버에 복제합니다. (이 중복성은 파일 단위로 또는 전체 환경에 대해 늘리거나 줄일 수 있습니다. 예를 들어, 개발용 Hadoop 클러스터는 일반적으로 데이터 중복성이 필요하지 않습니다.)

이러한 중복성을 통해 Hadoop 클러스터는 작업을 더 작은 단위로 나누고 클러스터 내의 모든 서버에서 해당 작업을 실행하여 확장성을 높일 수 있습니다. 마지막으로, 조직은 대규모 데이터 세트로 작업할 때 중요한 데이터 지역성의 이점을 얻을 수 있습니다.

또한 HDFS는 효과적인 확장을 통해 인공 지능(AI)머신 러닝(ML) 을 지원할 수 있습니다. 먼저 ML 모델 을 학습시키는 데 필요한 충분한 양의 데이터를 저장한 다음 이방대한 데이터 세트에 액세스해야 합니다.

최대 페타바이트에 이르는 대규모 데이터 세트를 캡처, 저장 및 사용하는 모든 조직에서는 HDFS 사용을 고려할 수 있습니다. 몇 가지 업계 기반 사용 사례는 HDFS를 구현하는 방법을 보여줍니다.

  • 에너지: 전력 회사는 위상 측정 장치(PMU)를 사용하여 송전 네트워크에서 스마트 그리드의 성능을 모니터링할 때 초당 수천 개에 이르는 기록으로 막대한 양의 데이터를 축적할 수 있습니다. 이런 경우 신뢰할 수 있는 비용 효율적이고 가용성이 높은 파일 시스템으로 HDFS가 필요할 수 있습니다.

  • 헬스케어: 의료 기록의 양은 매일 증가하고 있습니다. 의료 장비와 환자 센서 데이터를 효율적으로 수집하고 저장하여 치료와 연구를 더 신속히 진행할 수 있습니다.

  • 마케팅: 고객 관계 관리(CRM) 시스템, 판매 시점 관리(PoS) 시스템, 캠페인 응답 및 대부분 비정형 데이터인 소셜 미디어의 데이터를 수집하여 분석하고 향후 마케팅 활동을 끌어가야 합니다. HDFS 클러스터는 생성되는 대량의 데이터를 저장하고 분석하면서 예산을 절감하는 데 도움이 될 솔루션을 제공합니다.

  • 석유 및 가스:  HDFS 클러스터는 다양한 형식으로 도착하는 모든 데이터를 통합하여 빅 데이터 분석에 사용할 수 있도록 지원합니다. 3D 지구 모델부터 동영상, 고객 구매 또는 장비 센서 데이터까지 모든 것이 여기에 포함될 수 있습니다.

  • 소매업: 소매업체는 고객을 더 잘 이해하기 위해 여러 소스에서 데이터를 수집하고 분석할 수 있습니다. 여기에는 판매 기록, 고객 서비스 상호 작용, 소셜 미디어 등 비정형 데이터와 정형 데이터를 모두 포함되며 이를 통해 새로운 참여 전략을 개발할 수 있습니다.

  • 통신: HDFS는 통신 기업이 강력한 네트워크 경로를 구축하고, 예측 유지 관리를 수행하고, 유망한 네트워크 확장 옵션을 표시하고, 고객 행동을 분석하는 데 도움이 될 수 있습니다.

HDFS의 역사

Hadoop 공동 창립자인 마이크 카파렐라(Mike Cafarella)와 더그 커팅(Doug Cutting)에 따르면 Hadoop의 기원은 2003년에 발표된 Google File System 논문이었습니다. 이어서 두 번째 논문인 "MapReduce: Simplified Data Processing on Large Clusters"가 발표되었습니다. 아파치 너치(Apache Nutch)라는 이름의 초기 검색 엔진이 개발되기 시작했지만, 2006년 더그 커팅이 야후(Yahoo)로 이직하면서 업무가 함께 옮겨갔습니다.

Hadoop은 커팅의 아들이 소유했던 장난감 코끼리의 이름을 따서 명명되었습니다. (그래서 코끼리 로고를 씁니다.) 초기 Hadoop 코드는 대부분 Nutch를 기반으로 했지만 확장성 제한을 극복하고 HDFS와 MapReduce의 초기 버전을 모두 포함했습니다.

Hadoop 에코시스템의 프로그램 제품군은 계속 성장하고 있습니다. HDFS 외에도 다음이 있습니다. HBase(NoSQL 데이터베이스), Mahout, Spark MLLib(머신 러닝용 알고리즘 라이브러리), MapReduce(프로그래밍 기반 데이터 처리), Oozie(작업 스케줄러), PIG 및 HIVE(쿼리 기반 데이터 처리 서비스), Solar 및 Lucene(검색 및 인덱싱용), Spark(데이터 처리, 인메모리), YARN(Yet Another Resource Negotiator), Zookeeper(클러스터 조정).

Hadoop 에코시스템 내의 오픈 소스 소프트웨어는 이제 소프트웨어 개발자 및 소프트웨어 기여자를 위한 전 세계 커뮤니티인 Apache Software Foundation1에서 관리합니다.

관련 솔루션
데이터 관리 소프트웨어 및 솔루션

탁월한 고객 및 직원 경험을 제공하기 위해 데이터 사일로를 제거하고, 복잡성을 줄이며, 데이터 품질을 개선하는 데이터 전략을 구축하세요.

데이터 관리 솔루션 살펴보기
IBM watsonx.data™

watsonx.data를 사용하면 오픈, 하이브리드 및 관리형 데이터 저장소를 통해 데이터의 위치와 관계없이 모든 데이터로 분석과 AI를 확장할 수 있습니다.

watsonx.data 알아보기
데이터 및 분석 컨설팅 서비스

IBM Consulting을 통해 엔터프라이즈 데이터의 가치를 실현하여 비즈니스 이점을 제공하는 인사이트 중심의 조직을 구축하세요.

분석 서비스 알아보기
다음 단계 안내

탁월한 고객 및 직원 경험을 제공하기 위해 데이터 사일로를 제거하고, 복잡성을 줄이며, 데이터 품질을 개선하는 데이터 전략을 구축하세요.

데이터 관리 솔루션 살펴보기 watsonx.data 알아보기