비디오: ScyllaDB 데이터 압축방식별 퍼포먼스 차이 연구 , 실시간 비정형데이터처리 (연구자 팀노바 4기 이소현) 2024
일반적인 Hadoop 배포의 현실적인 거대한 데이터 볼륨은 압축을 필요로합니다. 데이터 압축을 사용하면 많은 저장 공간을 절약 할 수 있으며 클러스터 전체에서 해당 데이터의 이동 속도를 높일 수 있습니다. 당연히 코덱이라고하는 사용 가능한 여러 가지 압축 구성표를 고려해야합니다.
Hadoop 배치에서는 상당히 많은 수의 개별 슬레이브 노드 (잠재적으로)가 다수의 대형 디스크 드라이브를 가지고있다. 개별 슬레이브 노드가 HDFS에 사용할 수있는 원시 스토리지 공간이 45TB 이상인 것은 흔한 일입니다.
분할 가능한 압축 은 Hadoop 컨텍스트에서 중요한 개념입니다. Hadoop의 작동 방식은 파일의 블록 크기 설정보다 큰 경우 파일을 분할하고 개별 파일 분할을 다른 매퍼가 동시에 처리 할 수 있다는 것입니다. MapReduce 작업의 입력 파일에 압축 된 데이터가 포함되어 있으면 HDFS에서 해당 데이터를 읽는 데 필요한 시간이 줄어들고 작업 성능이 향상됩니다. 입력 데이터는 MapReduce에서 읽을 때 자동으로 압축 해제됩니다.
입력 파일 이름 확장자는 지원되는 코덱이 데이터를 자동으로 압축 해제하는 데 사용되는지 결정합니다. 예를 들어, a. gz 확장자는 파일을 gzip으로 압축 된 파일로 식별합니다. 또한 MapReduce 처리 흐름에서 맵 단계의 중간 출력을 압축하는 것이 유용 할 수 있습니다. 맵 기능 출력이 디스크에 기록되고 네트워크를 통해 축소 작업에 전달되므로 출력을 압축하면 성능이 크게 향상 될 수 있습니다.
향후 사용을 위해 MapReduce 출력을 히스토리 파일로 저장하려는 경우이 데이터를 압축하면 HDFS에서 필요한 공간이 크게 줄어들 수 있습니다. 많은 다른 압축 알고리즘과 도구가 있으며 그 특성과 장점은 다양합니다. 가장 일반적인 절충은 압축 비율 (파일이 압축되는 정도)과 압축 / 압축 해제 속도 사이입니다. Hadoop 프레임 워크는 여러 코덱을 지원합니다. 프레임 워크는 대부분의 입력 및 출력 파일 형식을 투명하게 압축하고 압축을 해제합니다. 다음 목록은 Hadoop 프레임 워크에서 지원하는 일반적인 코덱을 나타냅니다. 특정 유스 케이스의 요구 사항에 가장 근접한 코덱을 선택하십시오 (예: 처리 속도가 중요한 작업 부하에서 높은 압축 해제 속도의 코덱을 선택).
Gzip:A 압축 GNU 프로젝트에서 채택한 유틸리티 인 Gzip (GNU zip의 줄임말)은 a. gz 확장자. gunzip 명령을 사용하여 Gzip을 비롯한 여러 압축 유틸리티로 만든 파일의 압축을 풀 수 있습니다.
Bzip2:
사용성 관점에서 Bzip2와 Gzip은 비슷합니다. Bzip2는 Gzip보다 우수한 압축률을 생성하지만 훨씬 느립니다. 사실, Hadoop의 모든 사용 가능한 압축 코덱 중에서 Bzip2가 가장 느립니다.
거의 쿼리 할 필요가없는 아카이브를 설정하고 공간에 높은 프리미엄이 있다면 Bzip2를 고려할 가치가 있습니다.
Snappy:
Google의 Snappy 코덱은 적당한 압축 비율을 제공하지만 빠른 압축 및 압축 해제 속도를 제공합니다. (실제로는 압축 해제 속도가 가장 빠르기 때문에 자주 쿼리 할 가능성이 높은 데이터 세트의 경우 매우 바람직합니다.)
Snappy 코덱은 다른 Hadoop 하위 프로젝트를 지원하는 공통 유틸리티 세트 인 Hadoop Common에 통합되어 있습니다. Snappy를 Snappy 코덱 지원을 아직 제공하지 않는 최신 버전의 Hadoop에 대한 애드온으로 사용할 수 있습니다.
LZO:
Snappy와 마찬가지로 LZO (Lempel-Ziv-Oberhumer의 약자로 컴퓨터 과학자의 트리오)는 적당한 압축비를 제공하지만 빠른 압축 및 압축 해제 속도를 제공합니다. LZO는 GNU Public License (GPL)에 따라 라이센스가 부여됩니다.
LZO는 MapReduce 작업에 의한 압축 텍스트 파일 분할의 병렬 처리를 가능하게하는 분할 가능한 압축을 지원합니다. 가변 길이 압축 블록에서는 매퍼에게 압축 파일을 안전하게 분할 할 수있는 위치를 알려주기 위해 LZO가 파일을 압축 할 때 색인을 작성해야합니다. LZO는 텍스트 파일을 압축해야하는 경우에만 바람직합니다.
Hadoop 코덱
-
코덱 파일 확장자
-
Splittable? 압축률 압축 속도
Gzip
-
. 중간 중간
Bzip2
-
. bz2 예
높음
빠른 | . 자연스럽지 않은 | 아니요 | 보통 | 빠름 |
---|---|---|---|---|
LZO | . lzo | 아니요, 인덱싱되지 않은 경우 없음 | 중간 | 고속 |
모든 압축 알고리즘은 압축 정도와 압축 속도 사이에서 균형을 유지해야합니다. 나열된 코덱은 압축 시간과 속도 사이의 균형이 압축 시간에 있어야하는 것을 제어 할 수 있습니다. | 예를 들어 Gzip에서는 음의 정수 (또는 키워드)를 지정하여 압축 속도를 조절할 수 있습니다. 여기서 -1은 가장 빠른 압축 수준을 나타내고 -9는 가장 느린 압축 수준을 나타냅니다. 기본 압축 수준은 -6입니다. |