HBase 자습서 : HBase 소개 및 Facebook 사례 연구



이 HBase 튜토리얼 블로그는 HBase 및 그 기능에 대해 소개합니다. 또한 HBase의 이점을 이해하기위한 Facebook Messenger 사례 연구도 다룹니다.

우리가 언급했듯이 블로그, HBase는 Hadoop 에코 시스템의 필수 부분입니다. 이제 HBase 자습서를 통해 Apache HBase를 소개하고 Facebook Messenger 사례 연구를 살펴 보겠습니다. 이 HBase 튜토리얼 블로그에서 다음 주제를 다룰 것입니다.

Apache HBase 자습서 : 역사

HBase의 역사부터 시작하여 HBase가 일정 기간 동안 어떻게 진화했는지 알아 보겠습니다.





HBase의 역사-HBase 튜토리얼-Edureka

  • Apache HBase는 데이터를 수집하고 Maps, Finance, Earth 등과 같은 다양한 Google 서비스에 대한 요청을 처리하는 데 사용되는 Google의 BigTable을 모델로합니다.
  • Apache HBase는 방대하고 희소 한 데이터 세트를 처리하는 자연어 검색을위한 Powerset 회사의 프로젝트로 시작되었습니다.
  • Apache HBase는 2007 년 2 월에 처음 출시되었습니다. 나중에 2008 년 1 월에 HBase는 Apache Hadoop의 하위 프로젝트가되었습니다.
  • 2010 년에 HBase는 Apache의 최상위 프로젝트가되었습니다.

HBase 튜토리얼 | NoSQL 데이터베이스 | Edureka



Apache HBase의 역사를 알고 나면 Apache HBase가 무엇인지 궁금 할 것입니다. 더 나아가서 살펴 보겠습니다.

Apache HBase 자습서 : HBase 소개

HBase는 오픈 소스, 다차원, 분산, 확장 가능 및 NoSQL 데이터베이스 Java로 작성되었습니다. HBase는 HDFS (Hadoop 분산 파일 시스템) 및 Hadoop에 BigTable과 같은 기능을 제공합니다. 이는 스파 스 데이터 세트의 대규모 콜렉션을 저장하는 내결함성 방법을 제공하도록 설계되었습니다.

이후 HBase는 방대한 데이터 세트에 대해 더 빠른 읽기 / 쓰기 액세스를 제공하여 높은 처리량과 짧은 대기 시간을 달성합니다. 따라서 HBase는 대량의 데이터에 대한 빠르고 임의의 액세스가 필요한 애플리케이션을위한 선택입니다.



압축, 메모리 내 작업 및 Bloom 필터 (값이 세트에 있는지 여부를 알려주는 데이터 구조)를 제공하여 빠르고 임의의 읽기-쓰기 요구 사항을 충족합니다.

예를 통해 이해해 보겠습니다. 제트 엔진은 압력 센서, 온도 센서, 속도 센서 등과 같은 다양한 센서에서 다양한 유형의 데이터를 생성하여 엔진의 상태를 나타냅니다. 이것은 비행의 문제와 상태를 이해하는 데 매우 유용합니다. Continuous Engine Operations는 비행 당 500GB의 데이터를 생성하며 하루에 약 300,000 회의 비행이 있습니다. 따라서 거의 실시간으로 이러한 데이터에 적용된 Engine Analytics를 사용하여 문제를 사전에 진단하고 계획되지 않은 다운 타임을 줄일 수 있습니다. 이를 위해서는 많은 양의 데이터를 저장할 수있는 분산 환경이 필요합니다. 빠른 임의 읽기 및 쓰기 실시간 처리를 위해. 여기에서 HBase가 구조를 위해 왔습니다. 다음 블로그에서 HBase 읽기 및 쓰기에 대해 자세히 설명하겠습니다. HBase 아키텍처 .

아시다시피 HBase는 NoSQL 데이터베이스입니다. 따라서 HBase에 대해 더 많이 이해하기 전에 먼저 NoSQL 데이터베이스와 그 유형에 대해 논의하겠습니다.

Apache HBase 자습서 : NoSQL 데이터베이스

NoSQL은 SQL뿐만 아니라 . NoSQL 데이터베이스는 테이블 형식 이외의 데이터를 표현할 수있는 잘못된 관계형 데이터베이스로 모델링됩니다. 데이터베이스의 데이터를 표현하기 위해 서로 다른 형식을 사용하므로 표현 형식에 따라 다양한 유형의 NoSQL 데이터베이스가 있습니다. 대부분의 NoSQL 데이터베이스는 일관성보다 가용성과 속도를 활용합니다. 이제 다양한 유형의 NoSQL 데이터베이스와 그 표현 형식에 대해 알아 보겠습니다.

키-값 저장소 :

키와 값을 포함하는 스키마없는 데이터베이스입니다. 각 키는 바이트 배열 인 값을 가리키며 문자열, BLOB, XML 등이 될 수 있습니다. Lamborghini는 핵심이며 Gallardo, Aventador, Murciélago, Reventón, Diablo, Huracán, Veneno, Centenario 등의 가치를 가리킬 수 있습니다.

Key-Value는 데이터베이스를 저장합니다 : Aerospike, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, MemcacheDB, MUMPS, Oracle NoSQL 데이터베이스, OrientDB, Redis, Riak, Berkeley DB.

사용 사례

키-값 저장소는 크기를 잘 처리하고 짧은 지연 시간으로 일정한 읽기 / 쓰기 작업 스트림을 처리하는 데 능숙합니다. 이것은 그들을 위해 완벽합니다사용자 기본 설정 및 프로필 저장소,향후 고객 제품 추천을 유도하기 위해 소매 업체 웹 사이트에서 본 제품 추천 최신 항목,광고 서비스 고객의 쇼핑 습관은 실시간으로 고객 별 맞춤형 광고, 쿠폰 등을 제공합니다.

문서 지향 :

동일한 키 값 쌍을 따르지만 XML, JSON, BSON과 같은 반 구조입니다. 이러한 구조는 문서로 간주됩니다.

문서 기반 데이터베이스 : Apache CouchDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB.

사용 사례

문서는 유연한 스키마를 지원하기 때문에 빠른 읽기 쓰기 및 파티셔닝으로 트위터, 전자 상거래 웹 사이트 등 다양한 서비스에서 사용자 데이터베이스를 생성하는 데 적합합니다.

기둥 지향 :

이 데이터베이스에서 데이터는 행이 아닌 열로 그룹화 된 셀에 저장됩니다. 열은 스키마 정의 중에 또는 런타임에 생성 될 수있는 column family로 논리적으로 그룹화됩니다.

이러한 유형의 데이터베이스는 열에 해당하는 모든 셀을 연속 디스크 항목으로 저장하므로 액세스 및 검색이 훨씬 빨라집니다.

컬럼 기반 데이터베이스 : HBase, Accumulo, Cassandra, Druid, Vertica.

사용 사례

대용량 스토리지를 지원하고 더 빠른 읽기 쓰기 액세스를 허용합니다. 따라서 열 지향 데이터베이스는 전자 상거래 웹 사이트, Google Finance 및 주식 시장 데이터와 같은 금융 시스템, Google지도 등에서 고객 행동을 저장하는 데 적합합니다.

그래프 지향 :

SQL과 달리 사용되는 완벽하고 유연한 그래픽 표현입니다. 이러한 유형의 데이터베이스에는 요구 사항에 따라 확장 할 수있는 에지와 노드가 포함되어있어 주소 확장 성 문제를 쉽게 해결합니다.

그래프 기반 데이터베이스 : AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog.

사용 사례

이것은 기본적으로 사기 탐지, 실시간 추천 엔진 (대부분의 경우 전자 상거래), 마스터 데이터 관리 (MDM), 네트워크 및 IT 운영, ID 및 액세스 관리 (IAM) 등에 사용됩니다.

HBase와 Cassandra는 두 개의 유명한 열 지향 데이터베이스입니다. 이제 더 높은 수준으로 이야기하면서 HBase와 Cassandra의 아키텍처 및 작업 차이점을 비교하고 이해하겠습니다.

HBase 튜토리얼 : HBase VS Cassandra

  • HBase는 BigTable (Google)을 기반으로하고 Cassandra는 처음에 Facebook에서 개발 한 DynamoDB (Amazon)를 기반으로합니다.
  • HBase는 Hadoop 인프라 (HDFS, ZooKeeper)를 활용하는 반면 Cassandra는 별도로 발전했지만 필요에 따라 Hadoop과 Cassandra를 결합 할 수 있습니다.
  • HBase에는 HBase HMaster, ZooKeeper, NameNode, Region Severs와 같이 함께 통신하는 여러 구성 요소가 있습니다. Cassandra는 모든 노드가 동일하고 모든 기능을 수행하는 단일 노드 유형입니다. 모든 노드가 코디네이터가 될 수 있으므로 단일 장애 지점이 제거됩니다.
  • HBase는 읽기에 최적화되어 있으며 단일 쓰기를 지원하므로 엄격한 일관성이 있습니다. HBase는 범위 기반 스캔을 지원하므로 스캔 프로세스가 더 빨라집니다. Cassandra는 최종 일관성을 유지하는 단일 행 읽기를 지원합니다.
  • Cassandra는 범위 기반 행 스캔을 지원하지 않으므로 HBase에 비해 스캔 프로세스가 느려집니다.
  • HBase는 Column Family의 행이 RowKey 순서로 저장되는 순서 분할을 지원하는 반면 Casandra 순서 분할은 도전입니다. RowKey 파티셔닝으로 인해 Cassandra에 비해 HBase에서 스캔 프로세스가 더 빠릅니다.
  • HBase는 읽기로드 밸런싱을 지원하지 않으며 하나의 리젼 서버가 읽기 요청을 제공하며 복제본은 실패시에만 사용됩니다. Cassandra는 읽기 부하 분산을 지원하고 다양한 노드에서 동일한 데이터를 읽을 수 있습니다. 이로 인해 일관성이 손상 될 수 있습니다.
  • CAP (Consistency, Availability & Partition -Tolerance) 정리에서 HBase는 일관성과 가용성을 유지하고 Cassandra는 가용성과 파티션 허용에 중점을 둡니다.


이제 Apache HBase의 인기를 높이는 기능을 자세히 살펴보고 이해해 보겠습니다.

Apache HBase 자습서 : HBase의 기능

  • 원자 읽기 및 쓰기 : 행 수준에서 HBase는 원자 적 읽기 및 쓰기를 제공합니다. 하나의 읽기 또는 쓰기 프로세스 중에 다른 모든 프로세스가 읽기 또는 쓰기 작업을 수행하지 못하도록하는 것으로 설명 할 수 있습니다.
  • 일관된 읽기 및 쓰기 : HBase는 위의 기능으로 인해 일관된 읽기 및 쓰기를 제공합니다.
  • 선형 및 모듈 식 확장 성 : 데이터 세트는 HDFS를 통해 분산되므로 다양한 노드에 걸쳐 선형 적으로 확장 가능할뿐만 아니라 모듈 식으로 확장 가능합니다.
  • 자동 및 구성 가능한 테이블 분할 : HBase 테이블은 클러스터에 분산되고 이러한 클러스터는 지역에 분산됩니다. 이러한 지역과 클러스터는 분할되고 데이터가 증가함에 따라 재분배됩니다.
  • 클라이언트 액세스를 위해 사용하기 쉬운 Java API : 프로그래밍 방식 액세스를 위해 사용하기 쉬운 Java API를 제공합니다.
  • Thrift 게이트웨이 및 REST-ful 웹 서비스 : 또한 비 Java 프런트 엔드를위한 Thrift 및 REST API를 지원합니다.
  • 블록 캐시 및 블룸 필터 : HBase는 대용량 쿼리 최적화를 위해 블록 캐시 및 블룸 필터를 지원합니다.
  • 자동 실패 지원 : HDFS가 포함 된 HBase는 클러스터 전반에 걸쳐 자동 실패 지원을 제공하는 WAL (Write Ahead Log)을 제공합니다.
  • 정렬 된 rowkey : 행 범위에서 검색이 수행되므로 HBase는 사전 순으로 rowkey를 저장합니다. 이러한 정렬 된 rowkey와 타임 스탬프를 사용하여 최적화 된 요청을 작성할 수 있습니다.

이제이 HBase 튜토리얼에서 HBase를 사용할 수있는 사용 사례와 시나리오를 설명하고 HDFS와 HBase를 비교해 보겠습니다.

HBase가 가장 적합한 시나리오에 관심을 기울이고 싶습니다.

HBase 튜토리얼 : 어디에서 HBase를 사용할 수 있습니까?

  • 대규모 데이터 세트 (수백만 또는 수십억 또는 행과 열)가 있고 데이터에 대한 빠르고 임의의 실시간 읽기 및 쓰기 액세스가 필요한 경우 HBase를 사용해야합니다.
  • 데이터 세트는 다양한 클러스터에 분산되어 있으며 데이터를 처리하려면 높은 확장 성이 필요합니다.
  • 데이터는 다양한 데이터 소스에서 수집되며 반 구조적 또는 비 구조적 데이터 또는 모두의 조합입니다. HBase로 쉽게 처리 할 수 ​​있습니다.
  • 열 지향 데이터를 저장하려고합니다.
  • 많은 버전의 데이터 세트가 있으며 모두 저장해야합니다.

Facebook 메신저 사례 연구로 이동하기 전에HBase와 HDFS의 차이점이 무엇인지 말씀 드리겠습니다.

HBase 튜토리얼 : HBase VS HDFS

HDFS는 Java 기반 분산 파일 시스템으로 Hadoop 클러스터의 여러 노드에 대용량 데이터를 저장할 수 있습니다. 따라서 HDFS는 분산 환경에 데이터를 저장하기위한 기본 스토리지 시스템입니다. HDFS는 파일 시스템 인 반면 HBase는 데이터베이스입니다 (NTFS 및 MySQL과 유사).

HDFS와 HBase는 모두 분산 환경에 모든 종류의 데이터 (예 : 구조화, 반 구조화 및 비 구조화)를 저장하므로 HDFS 파일 시스템과 NoSQL 데이터베이스 인 HBase의 차이점을 살펴 보겠습니다.

  • HBase는 대형 데이터 세트 내의 소량 데이터에 대한 짧은 대기 시간 액세스를 제공하는 반면 HDFS는 높은 대기 시간 작업을 제공합니다.
  • HBase는 임의 읽기 및 쓰기를 지원하는 반면 HDFS는 WORM (Write once Read Many 또는 Multiple times)을 지원합니다.
  • HDFS는 기본적으로 또는 주로 MapReduce 작업을 통해 액세스되는 반면 HBase는 셸 명령, Java API, REST, Avro 또는 Thrift API를 통해 액세스됩니다.

HDFS는 분산 환경에 대용량 데이터 세트를 저장하고 해당 데이터에 대한 일괄 처리를 활용합니다. 예 : 전자 상거래 웹 사이트에서 수백만 고객의 데이터를 장기간 (4 ~ 5 년 이상)에 걸쳐 성장한 분산 환경에 저장하는 데 도움이됩니다. 그런 다음 해당 데이터에 대한 일괄 처리를 활용하고 고객 행동, 패턴, 요구 사항을 분석합니다. 그런 다음 회사는 어떤 유형의 제품, 고객이 몇 달 동안 구매하는지 알아낼 수 있습니다. 아카이브 된 데이터를 저장하고이를 통해 일괄 처리를 실행하는 데 도움이됩니다.

HBase는 각 열이 함께 저장되는 열 지향 방식으로 데이터를 저장하지만 실시간 처리를 활용하여 읽기 속도가 빨라집니다. 예 : 유사한 전자 상거래 환경에서 수백만 개의 제품 데이터를 저장합니다. 따라서 수백만 개의 제품 중에서 제품을 검색하면 요청 및 검색 프로세스를 최적화하여 결과를 즉시 생성합니다 (또는 실시간으로 말할 수 있음). 상세 HBase 아키텍처 설명 , 저는 다음 블로그에서 다룰 것입니다.

우리가 알고 있듯이 HBase는 HDFS를 통해 배포되므로 아래의 Facebook 메신저 사례 연구에서 볼 수 있듯이 두 가지를 조합하면 맞춤형 솔루션에서 두 가지의 이점을 모두 활용할 수있는 좋은 기회가됩니다.

HBase 튜토리얼 : Facebook Messenger 사례 연구

Facebook 메시징 플랫폼 2010 년 11 월 Apache Cassandra에서 HBase로 전환되었습니다.

Facebook Messenger는 메시지, 이메일, 채팅 및 SMS를 실시간 대화로 결합합니다. Facebook은 이러한 서비스 세트를 처리하기 위해 확장 가능하고 강력한 인프라를 구축하려고했습니다.

자바에서 오버로딩 대 오버로딩

그 당시 메시지 인프라는 3 억 5 천만 명 이상의 사용자가 매달 150 억 개 이상의 개인 간 메시지를 전송했습니다. 채팅 서비스는 매월 1,200 억 개 이상의 메시지를 보내는 3 억 명 이상의 사용자를 지원합니다.

사용량을 모니터링하여 두 가지 일반적인 데이터 패턴이 나타남을 발견했습니다.

  • 휘발성 경향이있는 짧은 시간 데이터 세트
  • 거의 액세스하지 않는 계속 증가하는 데이터 세트

Facebook은이 두 가지 사용 패턴에 대한 스토리지 솔루션을 찾고 싶었고 기존 메시지 인프라를 대체하기 위해 조사를 시작했습니다.

2008 년 초에 그들은 오픈 소스 데이터베이스, 즉 Cassandra를 사용했는데, 이는 이미 Inbox Search에 대한 트래픽을 제공하는 프로덕션에 있던 최종 일관성 키-값 저장소입니다. 그들의 팀은 MySQL 데이터베이스 사용 및 관리에 대한 훌륭한 지식을 가지고 있었으므로 두 기술 중 하나를 전환하는 것이 그들에게 심각한 문제였습니다.

그들은 MySQL, Apache Cassandra, Apache HBase 및 기타 시스템의 클러스터를 평가하기 위해 몇 주 동안 다양한 프레임 워크를 테스트했습니다. 그들은 궁극적으로 HBase를 선택했습니다.

MySQL이 대용량 데이터 세트를 효율적으로 처리하지 못해 인덱스와 데이터 세트가 커짐에 따라 성능이 저하되었습니다. 그들은 Cassandra가 새로운 메시지 인프라를 조정하기위한 어려운 패턴을 처리 할 수 ​​없음을 발견했습니다.

주요 문제는 다음과 같습니다.

  • 다양한 Facebook 서비스에서 지속적으로 증가하는 대규모 데이터 세트를 저장합니다.
  • 높은 처리 능력을 활용할 수있는 데이터베이스가 필요합니다.
  • 수백만 건의 요청을 처리하려면 고성능이 필요했습니다.
  • 스토리지 및 성능의 일관성 유지.

도표 : Facebook 메신저가 직면 한 도전

이러한 모든 문제에 대해 Facebook은 HBase라는 솔루션을 내놓았습니다. Facebook은 다양한 기능으로 인해 Facebook 메신저, 채팅, 이메일 등을 제공하기 위해 HBase를 채택했습니다.

HBase는 Cassandra보다 간단한 일관성 모델로이 워크로드에 대해 매우 우수한 확장 성과 성능을 제공합니다. 자동로드 밸런싱 및 장애 조치, 압축 지원, 서버 당 여러 샤드 등과 같은 요구 사항 측면에서 HBase가 가장 적합하다는 사실을 발견했습니다.

HBase에서 사용하는 기본 파일 시스템 인 HDFS는 엔드 투 엔드 체크섬, 복제 및 자동로드 재조정과 같은 몇 가지 필요한 기능도 제공했습니다.

그림 : Facebook 메신저 솔루션으로서의 HBase

그들은 HBase를 채택하면서 결과를 HBase 자체로 되 돌리는 데 집중했고 Apache 커뮤니티와 긴밀하게 협력하기 시작했습니다.

메시지는 SMS, 채팅, 이메일과 같은 다양한 소스의 데이터를 수신하기 때문에 사용자 메시지에 대한 모든 의사 결정을 처리하는 애플리케이션 서버를 작성했습니다. 다른 많은 서비스와 인터페이스합니다. 첨부 파일은 Haystack (HBase에서 작동)에 저장됩니다. 그들은 또한 친구 관계, 이메일 계정 확인, 배달 결정 및 개인 정보 결정을 위해 다른 인프라 서비스와 통신하는 Apache ZooKeeper 위에 사용자 검색 서비스를 작성했습니다.

Facebook 팀은 이러한 각 서비스가 강력하고 신뢰할 수 있으며 실시간 메시징 시스템을 처리하는 데 좋은 성능을 제공하는지 확인하는 데 많은 시간을 보냈습니다.

이 HBase 튜토리얼 블로그가 유익하고 마음에 드셨기를 바랍니다. 이 블로그에서는 HBase의 기본 사항과 기능에 대해 알게되었습니다.내 다음 블로그에서 , 나는 설명 할 것이다 HBase의 아키텍처 그리고 HBase의 작동으로 빠르고 임의의 읽기 / 쓰기가 가능합니다.

이제 HBase의 기본 사항을 이해 했으므로 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 Edureka BigData Hadoop 인증 교육 과정은 학습자가 소매, 소셜 미디어, 항공, 관광, 금융 분야의 실시간 사용 사례를 사용하여 HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume 및 Sqoop의 전문가가 될 수 있도록 도와줍니다.

질문이 있으십니까? 의견란에 언급 해 주시면 연락 드리겠습니다.