HBase와 Hadoop / HDFS의 차이점


130

이것은 일종의 순진한 질문이지만 NoSQL 패러다임에 익숙하지 않으며 그것에 대해 많이 알지 못합니다. 누군가 누군가 HBase와 Hadoop의 차이점을 명확하게 이해하도록 도울 수 있거나 차이점을 이해하는 데 도움이되는 몇 가지 지침을 제시하십시오.

지금까지, 나는 약간의 연구와 acc. 내 이해 하둡은 HDFS에서 원시 데이터 청크 (파일)와 작업 할 수있는 프레임 워크를 제공하며 HBase는 기본적으로 원시 데이터 청크 대신 구조적 데이터와 함께 작동하는 하둡 위의 데이터베이스 엔진입니다. Hbase는 SQL과 마찬가지로 HDFS를 통한 논리적 계층을 제공합니다. 맞습니까?

pls는 저를 정정하게 자유롭게 느낍니다.

감사.


7
아마도 질문 제목은 "HBase와 HDFS의 차이점"이어야합니까?
매트 볼

답변:


248

하둡은 기본적으로 FS (Hadoop Distributed File System), 계산 프레임 워크 (MapReduce) 및 관리 브리지 (Yet Another Resource Negotiator)의 3 가지입니다. HDFS를 사용하면 대량의 데이터를 분산 (더 빠른 읽기 / 쓰기 액세스 제공) 및 중복 (더 나은 가용성 제공) 방식으로 저장할 수 있습니다. 또한 MapReduce를 사용하면이 거대한 데이터를 분산 및 병렬 방식으로 처리 할 수 ​​있습니다. 그러나 MapReduce는 HDFS에만 국한되지 않습니다. FS이므로 HDFS에는 임의 읽기 / 쓰기 기능이 없습니다. 순차적 데이터 액세스에 좋습니다. 그리고 이것이 HBase가 등장하는 곳입니다. Hadoop 클러스터에서 실행되며 데이터에 대한 임의의 실시간 읽기 / 쓰기 액세스를 제공하는 NoSQL 데이터베이스입니다.

구조화 된 데이터와 구조화되지 않은 데이터를 모두 Hadoop 및 HBase에 저장할 수 있습니다. 둘 다 셸 및 기타 API와 같이 데이터에 액세스하기위한 여러 메커니즘을 제공합니다. 또한 HBase는 데이터를 키 / 값 쌍으로 열 방식으로 저장하고 HDFS는 데이터를 플랫 파일로 저장합니다. 두 시스템의 두드러진 특징 중 일부는 다음과 같습니다.

하둡

  1. 대용량 파일의 스트리밍 액세스에 최적화되었습니다.
  2. 한 번만 쓰면 많은 이데올로기를 따릅니다.
  3. 무작위 읽기 / 쓰기를 지원하지 않습니다.

HBase

  1. 키 / 값 쌍을 열 방식으로 저장합니다 (열은 열 패밀리로 함께 클럽됩니다).
  2. 대규모 데이터 세트 내에서 소량의 데이터에 대한 짧은 대기 시간 액세스를 제공합니다.
  3. 유연한 데이터 모델을 제공합니다.

하둡은 오프라인 배치 처리에 가장 적합한 반면, 실시간 요구가있을 때는 HBase가 사용됩니다.

비슷한 비교는 MySQL과 Ext4 사이입니다.


대량의 데이터 (작은 파일)에 대해 hbase를 데이터 레이크로 사용하는 것은 어떻습니까? hdfs만큼 많은 데이터를 관리 할 수 ​​있습니까?
Mehdi TAZI

트윗 담아 가기 HBase는 HDFS에서 실행되므로 확장성에 대해 걱정할 필요가 없습니다. 최대 성능을 얻기 위해 사용해야하므로 HBase를 사용해야합니다.
Tariq

운영 문제는 어떻습니까?
Mehdi TAZI

나는 HBase가 ops 팀의 악몽이라고 말하지는 않지만 여전히 개선의 여지가있는 몇 가지 영역이 있으며 커뮤니티는 그 문제를 해결하기 위해 열심히 노력하고 있습니다. 그러나 그것은 모든 소프트웨어에 해당됩니다. 문제 증명 도구 / 기술 IMHO는 없습니다. 요구 사항에 맞는 경우 반드시 시도해보십시오. 임의의 실시간 읽기 / 쓰기 요구를 처리하는 도구입니다.
Tariq

22

Apache Hadoop 프로젝트에는 4 가지 주요 모듈이 포함됩니다.

  1. Hadoop Common : 다른 Hadoop 모듈을 지원하는 공통 유틸리티입니다.
  2. HDFS ™ (Hadoop Distributed File System) : 애플리케이션 데이터에 대한 높은 처리량 액세스를 제공하는 분산 파일 시스템.
  3. Hadoop YARN : 작업 예약 및 클러스터 리소스 관리를위한 프레임 워크입니다.
  4. Hadoop MapReduce : 대용량 데이터 세트의 병렬 처리를위한 YARN 기반 시스템.

HBase 는 대규모 테이블에 대한 구조화 된 데이터 스토리지를 지원하는 확장 가능한 분산 데이터베이스입니다. BigtableGoogle 파일 시스템에서 제공하는 분산 데이터 저장소 를 활용하는 것처럼 Apache HBase는 Hadoop 및 HDFS 위에 Bigtable과 유사한 기능을 제공합니다.

HBase를 사용하는 경우 :

  1. 애플리케이션에 각 행이 약간 다른 변수 스키마가있는 경우
  2. 데이터가 컬렉션에 저장되어 있으면 모두 동일한 값으로 입력됩니다
  3. 빅 데이터에 대한 임의의 실시간 읽기 / 쓰기 액세스가 필요한 경우.
  4. 저장하거나 검색 할 때 데이터에 대한 키 기반 액세스가 필요한 경우.
  5. 기존 Hadoop 클러스터에 많은 양의 데이터가있는 경우

그러나 HBase에는 몇 가지 제한이 있습니다.

  1. 고전적인 트랜잭션 응용 프로그램 또는 관계형 분석에는 사용할 수 없습니다.
  2. 또한 대량 배치 MapReduce를 수행 할 때 HDFS를 완전히 대체하지는 않습니다.
  3. 그것은 SQL을 말하지 않고, 옵티마이 저가 있으며, 레코드 간 트랜잭션 또는 조인을 지원합니다.
  4. 복잡한 액세스 패턴 (예 : 조인)과 함께 사용할 수 없습니다

요약:

키별로 데이터를로드하거나 키 (또는 범위)별로 데이터를 검색하거나 키별로 데이터를 제공하거나 키별로 데이터를 쿼리하거나 스키마에 맞지 않는 행별로 데이터를 저장할 때 HBase를 고려하십시오.

cloudera 블로그 에서 Do 's and Do n't of HBase를 살펴보십시오 .


대량의 데이터 (작은 파일)에 대해 hbase를 데이터 레이크로 사용하는 것은 어떻습니까? hdfs만큼 많은 데이터를 관리 할 수 ​​있습니까?
Mehdi TAZI

1
작은 파일을 많이 생성하는 경우 액세스 패턴에 따라 다른 스토리지 유형이 더 적합 할 수 있습니다 .HBase는 MapFiles (인덱싱 된 SequenceFiles)에 데이터를 저장하며 MapReduce 스타일 스트리밍을 수행해야하는 경우에 적합합니다. 최대 가끔 무작위 표정으로 분석
라빈 드라 BABU

4

Hadoop은 빅 데이터를 저장하기 위해 HDFS와 같은 분산 파일 시스템을 사용하지만 이러한 제한을 극복하기 위해 HDFS 및 Inorder의 제한이 있으므로 HBase, Cassandra 및 Mongodb와 같은 NoSQL 데이터베이스가 존재합니다.

하둡은 일괄 처리 만 수행 할 수 있으며 순차적 인 방식으로 만 데이터에 액세스합니다. 즉, 가장 간단한 작업이라도 전체 데이터 세트를 검색해야합니다. 이 시점에서 단일 시간 단위 (임의 액세스)로 모든 데이터 지점에 액세스하려면 새로운 솔루션이 필요합니다.

다른 모든 파일 시스템과 마찬가지로 HDFS는 스토리지를 제공하지만 처리량은 높고 데이터 손실 위험은 낮습니다 (복제 때문에). 내결함성이 있지만 파일 시스템이기 때문에 HDFS에는 임의 읽기 및 쓰기 액세스 권한이 없습니다. HBase가 등장하는 곳입니다. Google의 BigTable을 모델로 한 분산되고 확장 가능한 빅 데이터 저장소입니다. 카산드라는 hbase와 다소 비슷합니다.


4

하나의 그림에서 HBase와 HDFS 모두

하나의 그림에서 HBase와 HDFS 모두

노트 :

HBase 및 Hadoop HDFS가 모두있는 클러스터의 DataNode (collocated Region Servers) 및 NameNode와 같은 HDFS 악마 (녹색으로 강조 표시)를 확인하십시오.

HDFS 는 대용량 파일 저장에 적합한 분산 파일 시스템입니다. 파일에서 빠른 개별 레코드 조회를 제공하지 않습니다.

반면 HBase 는 HDFS를 기반으로 구축되었으며 대형 테이블에 대한 빠른 레코드 조회 (및 업데이트)를 제공합니다. 이것은 때때로 개념적 혼란의 지점이 될 수 있습니다. HBase는 내부적으로 고속 조회를 위해 HDFS에 존재하는 인덱스 된 "StoreFiles"에 데이터를 저장합니다.

이것은 어떻게 생겼습니까?

인프라 수준에서 클러스터의 각 구조 시스템에는 다음과 같은 악마가 있습니다.

  • 리젼 서버-HBase
  • 데이터 노드-HDFS

슬레이브 머신

조회가 얼마나 빠릅니까?

HBase는 다음 데이터 모델을 사용하여 HDFS (때로는 다른 분산 파일 시스템도)를 기본 스토리지로 빠르게 조회합니다.

    • HBase 테이블은 여러 행으로 구성됩니다.
    • HBase의 행은 행 키와 이와 연관된 값을 가진 하나 이상의 열로 구성됩니다. 행은 저장 될 때 행 키를 기준으로 사전 순으로 정렬됩니다. 이러한 이유로 행 키의 디자인이 매우 중요합니다. 목표는 관련 행이 서로 가까이있는 방식으로 데이터를 저장하는 것입니다. 일반적인 행 키 패턴은 웹 사이트 도메인입니다. 행 키가 도메인 인 경우에는 역으로 저장해야합니다 (org.apache.www, org.apache.mail, org.apache.jira). 이런 식으로, 모든 아파치 도메인은 서브 도메인의 첫 글자를 기반으로 확산되지 않고 테이블에서 서로 가까이 있습니다.
  • 기둥

    • HBase의 열은 열 패밀리와 열 한정자로 구성되며 :( 콜론) 문자로 구분됩니다.
  • 열 패밀리

    • 열 패밀리는 종종 성능상의 이유로 열 집합과 해당 값을 물리적으로 배치합니다. 각 열 제품군에는 값을 메모리에 캐시해야하는지 여부, 데이터 압축 방법 또는 행 키 인코딩 방법 등과 같은 저장소 속성 세트가 있습니다. 테이블의 각 행은 동일한 열 패밀리를 갖지만 주어진 행은 주어진 열 패밀리에 아무것도 저장하지 않을 수 있습니다.
  • 열 한정자

    • 주어진 데이터에 대한 인덱스를 제공하기 위해 열 한정자가 열 패밀리에 추가됩니다. 열 패밀리 컨텐츠가 제공되면 열 규정자는 content : html 일 수 있고 다른 열은 content : pdf 일 수 있습니다. 열 패밀리는 테이블 작성시 고정되어 있지만 열 규정자는 변경 가능하며 행마다 크게 다를 수 있습니다.
  • 세포

    • 셀은 행, 열 제품군 및 열 한정자의 조합이며 값의 버전을 나타내는 값과 타임 스탬프를 포함합니다.
  • 타임 스탬프

    • 타임 스탬프는 각 값과 함께 작성되며 지정된 버전의 값에 대한 식별자입니다. 기본적으로 타임 스탬프는 데이터가 기록 된 RegionServer의 시간을 나타내지 만 셀에 데이터를 넣을 때 다른 타임 스탬프 값을 지정할 수 있습니다.

클라이언트 읽기 요청 흐름 :

클라이언트 읽기 요청 흐름

위 그림에서 메타 테이블은 무엇입니까?

메타 테이블

모든 정보를 찾은 후 HBase 읽기 흐름은 조회를위한 것입니다.

  1. 먼저, 스캐너는 블록 캐시 ( 읽기 캐시) 에서 행 셀을 찾습니다 . 최근에 읽은 키 값이 여기에 캐시되며 메모리가 필요할 때 가장 최근에 사용한 키가 제거됩니다.
  2. 다음으로, 스캐너는 MemStore 에서 찾습니다 에서 가장 최근의 쓰기가 포함 된 메모리의 쓰기 캐시를 .
  3. 스캐너가 MemStore 및 Block Cache에서 모든 행 셀을 찾지 못하면 HBase는 블록 캐시 인덱스 및 블룸 필터를 사용하여 HFile 을 메모리 에로드 합니다. 여기에는 대상 행 셀이 포함될 수 있습니다.

출처 및 추가 정보 :

  1. HBase 데이터 모델
  2. HBase 아키텍처

1

참조 : http://www.quora.com/What-is-the-difference-between-HBASE-and-HDFS-in-Hadoop

하둡은 여러 하위 시스템의 일반적인 이름입니다. 1) HDFS. 이중화 등을 관리하는 시스템의 클러스터에 데이터를 분산시키는 분산 파일 시스템 2) Map Reduce. HDFS 위에 작업 관리 시스템-HDFS에 저장된 데이터를 처리하는 맵 감소 (및 기타 유형) 작업을 관리합니다.

기본적으로 오프라인 시스템을 의미합니다. HDFS에 데이터를 저장하고 작업을 실행하여 처리 할 수 ​​있습니다.

반면 HBase는 열 기반 데이터베이스입니다. HDFS를 스토리지로 사용합니다. 백업 / 이중화 \ 등은 관리하지만 "온라인 저장소"는 특정 행 / 행 등을 쿼리하여 즉시 값을 얻을 수 있음을 의미합니다.


0

HDFS는 Java 기반 분산 파일 시스템으로, Hadoop 클러스터의 여러 노드에 걸쳐 큰 데이터를 저장할 수 있습니다. HBase는 NTFS 및 MySQL과 유사한 NoSQL 데이터베이스입니다.

HDFS와 HBase는 모두 분산 환경에서 구조화, 반 구조화 및 비 구조화와 같은 모든 종류의 데이터를 저장합니다.

HDFS와 HBase의 차이점

  • HBase는 대용량 데이터 세트 내에서 소량의 데이터에 대한 짧은 대기 시간 액세스를 제공하는 반면 HDFS는 대기 시간이 긴 작업을 제공합니다.
  • HBase는 임의 읽기 및 쓰기를 지원하는 반면 HDFS는 WORM (한 번 읽기를 여러 번 또는 여러 번 쓰기)을 지원합니다.
  • HDFS는 기본적으로 또는 MapReduce 작업을 통해 주로 액세스하는 반면 HBase는 쉘 명령, Java API, REST, Avro 또는 Thrift API를 통해 액세스합니다.

HDFS는 분산 환경에 대용량 데이터 세트를 저장하고 해당 데이터에 대한 일괄 처리를 활용합니다.

HBase는 각 열이 함께 저장되는 열 지향 방식으로 데이터를 저장하지만 실시간 처리를 활용하여 읽기 속도가 빨라집니다.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.