RCFile
RCFile컴퓨팅 데이터베이스 관리 시스템에서 RCFile(Record Columnar File)은 컴퓨터 클러스터에 관계형 테이블을 저장하는 방법을 결정하는 데이터 배치 구조입니다.MapReduce 프레임워크를 사용하는 시스템용으로 설계되었습니다.RCFile 구조에는 데이터 스토리지 형식, 데이터 압축 방식 및 데이터 읽기를 위한 최적화 기술이 포함됩니다.데이터 배치의 4가지 요건 (1) 고속 데이터 로딩 (2) 고속 쿼리 처리 (3) 고효율 스토리지 공간 활용 (4) 동적 데이터 액세스 패턴에 대한 강력한 적응성 등 모든 요건을 충족할 수 있습니다.
RCFile은 Facebook, 오하이오주립대, 중국과학아카데미컴퓨팅테크놀로지연구소의 조사와 공동 노력의 결과입니다.
요약
데이터 저장소 형식
예를 들어 데이터베이스의 테이블은 4개의 열(c1 ~c4)로 구성됩니다.
c1 | c2 | c3 | c4 |
---|---|---|---|
11 | 12 | 13 | 14 |
21 | 22 | 23 | 24 |
31 | 32 | 33 | 34 |
41 | 42 | 43 | 44 |
51 | 52 | 53 | 54 |
테이블을 시리얼화하기 위해 RCFile은 먼저 이 테이블을 수평으로 분할하고 다음으로 수직으로 분할합니다.행 중심의 DBMS(행 저장소)처럼 테이블을 수평으로 분할할 필요는 없습니다.수평 파티셔닝에서는 먼저 각 행 그룹의 크기를 결정하는 사용자 지정 값인 행 그룹 크기에 따라 테이블을 여러 행 그룹으로 분할합니다.예를 들어 사용자가 각 행 그룹의 크기로 3개의 행을 지정하면 위의 테이블을 2개의 행 그룹으로 분할할 수 있습니다.
c1 | c2 | c3 | c4 |
---|---|---|---|
11 | 12 | 13 | 14 |
21 | 22 | 23 | 24 |
31 | 32 | 33 | 34 |
c1 | c2 | c3 | c4 |
---|---|---|---|
41 | 42 | 43 | 44 |
51 | 52 | 53 | 54 |
그런 다음 모든 행 그룹에서 RCFile은 데이터를 열 저장소와 같이 수직으로 분할합니다.따라서 테이블은 다음과 같이 시리얼화 됩니다.
1행 그룹 2 11, 21, 31; 41, 51; 12, 22, 32; 42, 52; 13, 23, 33; 43, 53; 14, 24, 34; 44, 54;
컬럼 데이터 압축
각 행 그룹 내에서는 스토리지 공간 사용을 줄이기 위해 열이 압축됩니다.컬럼의 데이터를 인접해서 격납하기 때문에 컬럼 패턴을 검출할 수 있기 때문에 높은 압축률에 적합한 압축 알고리즘을 선택할 수 있다.
퍼포먼스의 이점
Column-Store는 디스크에서 필요한 열만 읽지만 행 저장소는 전체 행을 읽기 때문에 쿼리에 열의 하위 집합만 필요로 하는 경우 더 효율적입니다.
RCFile은 가로-세로 분할을 통해 열-스토어와 열-스토어의 장점을 결합합니다.수평 파티셔닝을 사용하면 RCFile은 행의 모든 열을 단일 머신에 배치하기 때문에 행을 구축할 때 추가 네트워크 비용을 절감할 수 있습니다.수직 파티셔닝을 사용하면 쿼리의 경우 RCFile은 디스크에서 필요한 열만 읽기 때문에 불필요한 로컬 I/O 비용을 제거할 수 있습니다.또한 모든 행 그룹에서 열 저장소에서 사용되는 압축 알고리즘을 사용하여 데이터 압축을 수행할 수 있습니다.
예를 들어 데이터베이스에 다음 테이블이 있을 수 있습니다.
EmpId | 성 | 이름 | 급여 |
---|---|---|---|
10 | 스미스 | 조. | 40000 |
12 | 존스 | 메리 | 50000 |
11 | 존슨 | 캐시 | 44000 |
22 | 존스 | 밥. | 55000 |
이 간단한 테이블에는 직원 식별자(EmpId), 이름 필드(성 및 이름) 및 급여(월급)가 포함됩니다.이 2차원 형식은 이론적으로만 존재하지만 실제로 스토리지 하드웨어는 데이터를 어떤 형태로든 직렬화해야 합니다.
MapReduce 기반 시스템에서는 일반적으로 데이터가 HDFS(Hadoop Distributed File System)와 같은 분산 시스템에 저장되며 서로 다른 데이터 블록이 서로 다른 시스템에 저장될 수 있습니다.따라서 MapReduce의 컬럼스토어에서는 다른 컬럼그룹을 다른 머신에 저장할 수 있습니다.따라서 쿼리가 다른 머신에 배치된 컬럼을 투영할 때 추가 네트워크 비용이 발생합니다.MapReduce 기반 시스템의 경우, 행 저장의 장점은 쿼리 처리에서 행을 구성하기 위한 추가 네트워크 비용이 없고, 열 저장의 장점은 디스크에서 데이터를 읽을 때 불필요한 로컬 I/O 비용이 없다는 것입니다.
행 지향 시스템
스토리지 문제에 대한 일반적인 해결책은 다음과 같이 각 데이터 행을 직렬화하는 것입니다.
001:10, Smith, Joe,40000; 002:12, 존스, 메리, 50000; 003:11, 존슨, 캐시, 44000; 004:22, 존스, 밥, 55000;
행 기반 시스템은 가능한 한 적은 작업으로 전체 행 또는 전체 레코드의 데이터를 효율적으로 반환하도록 설계되었습니다.이는 시스템이 특정 객체에 대한 모든 정보(예를 들어 Rollodex 시스템의 한 연락처에 대한 전체 정보 또는 온라인 쇼핑 시스템의 한 제품에 대한 전체 정보)를 가져오려고 하는 사용 사례와 일치합니다.
행 기반 시스템은 특정 레코드가 아닌 전체 데이터 세트에 적용되는 작업을 수행하는 데 효율적이지 않습니다.예를 들어 급여가 40,000에서 50,000 사이인 예제 테이블 내의 모든 레코드를 검색하려면 행 기반 시스템은 데이터 세트 전체를 검색하여 일치하는 레코드를 찾아야 합니다.위의 예제 테이블은 단일 디스크 블록에 들어갈 수 있지만 수백 개의 행이 있는 테이블은 그렇지 않습니다. 따라서 데이터를 가져오려면 여러 개의 디스크 작업이 필요합니다.
컬럼 지향 시스템
열 지향 시스템은 열의 모든 값을 함께 직렬화한 후 다음 열의 값을 직렬화합니다.예제 표의 경우 데이터는 다음과 같은 방식으로 저장됩니다.
10:001,12:002,11:003,22:004;스미스:001,존스:002,존슨:003,존스:003,Jones:004;Joe:001, Mary:002, Cathy:003, Bob:004;40000:001,50000:002,44000:003,55000:004;
차이는 다음 일반적인 수정에서 더 명확하게 확인할 수 있습니다.
...;Smith:001, Jones:002,004, Johnson:003;...
레코드 중 두 개에는 동일한 값인 "Jones"가 저장되므로 이제 두 번이 아닌 한 번만 열 지향 시스템에 저장할 수 있습니다."Jones 성을 가진 모든 사람을 찾습니다"와 같은 많은 일반적인 검색의 경우, 이제 한 번의 작업으로 답을 얻을 수 있습니다.
컬럼 지향 시스템의 운용 효율화 여부는 자동화되는 운용에 크게 좌우됩니다.개체의 데이터를 검색하는 작업은 속도가 느리기 때문에 전체 행 레코드를 구축하기 위해 여러 개의 디스크 작업을 통해 서로 다른 열의 데이터를 조합해야 합니다.그러나 이러한 전체 열 작업은 일반적으로 드물다.대부분의 경우 데이터의 제한된 부분 집합만 검색됩니다.예를 들어 Rolodex 어플리케이션에서는 연락처 목록을 작성하기 위해 여러 행에서 이름과 성을 수집하는 작업이 집 주소의 데이터를 읽는 작업보다 훨씬 일반적입니다.
도입
![]() |
RCFile은 빅데이터 분석을 위해 실제 시스템에 채택되었습니다.
- RCFile은 Facebook의 프로덕션 Hadoop [1]클러스터에서 기본 데이터 배치 구조가 되었습니다.2010년에는 매일 [3]40테라바이트의 압축 데이터 세트가 추가되는 세계 최대의 하둡 [2]클러스터가 되었습니다.또한 RCFile 이전에 HDFS에 저장된 모든 데이터 세트도 RCFile을 [1]사용하도록 변환되었습니다.
- RCFile은 Hadoop 위에서 실행되는 오픈 소스 데이터스토어 시스템인 Apache Hive(v0.[4]4 이후)에 채택되었으며 Facebook, Taobao, [6]Netflix와 같은 여러 인터넷 서비스를 포함하여 [5]전 세계 다양한 기업에서 널리 사용되고 있습니다.
- RCFile은 Apache Pig(v0.[7]7 이후)에 채택되었습니다.이것은 트위터, Yahoo, LinkedIn, AOL, Salesforce.com 등의 주요 웹 서비스 프로바이더를 포함한 많은 [8]조직에서 널리 사용되는 또 다른 오픈 소스 데이터 처리 시스템입니다.
- RCFile은 [10]Hadoop용 테이블 및 스토리지 관리 서비스인 Apache HCatalog 프로젝트(이전의 Howl[9])에서 지원하는 Hadoop 소프트웨어 환경에서 사실상의 표준 데이터 스토리지 구조가 되었습니다.RCFile은 Twitter에서 매일 데이터 [11]분석을 위해 사용되는 오픈 소스 Elephant Bird 라이브러리에서 지원됩니다.
이후 몇 년 동안 다른 하둡 데이터 형식도 인기를 끌었습니다.2013년 2월 Hortonworks는 [12]ORC(Optimized Row Columnar) 파일 형식을 발표했습니다.한 달 후, Cloudera와 [13]Twitter가 개발한 Apache Parquet 포맷이 발표되었습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ a b "Hive integration: HBase and Rcfile__HadoopSummit2010". 2010-06-30.
- ^ "Facebook has the world's largest Hadoop cluster!". 2010-05-09.
- ^ "Apache Hadoop India Summit 2011 talk "Hive Evolution" by Namit Jain". 2011-02-24.
- ^ "Class RCFile". Archived from the original on 2011-11-23. Retrieved 2012-07-21.
- ^ "PoweredBy - Apache Hive - Apache Software Foundation".
- ^ "Hive user group presentation from Netflix (3/18/2010)". 2010-03-19.
- ^ "HiveRCInputFormat (Pig 0.17.0 API)".
- ^ "PoweredBy - Apache Pig - Apache Software Foundation".
- ^ 하울
- ^ "HCatalog". Archived from the original on 2012-07-20. Retrieved 2012-07-21.
- ^ "Twitter's collection of LZO and Protocol Buffer-related Hadoop, Pig, Hive, and HBase code.: Kevinweil/elephant-bird". 2018-12-15.
- ^ Alan Gates (February 20, 2013). "The Stinger Initiative: Making Apache Hive 100 Times Faster". Hortonworks blog. Retrieved May 4, 2017.
- ^ Justin Kestelyn (March 13, 2013). "Introducing Parquet: Efficient Columnar Storage for Apache Hadoop". Cloudera blog. Retrieved May 4, 2017.