빅 데이터 애플리케이션을위한 NoSQL 데이터베이스의 효과적인 크기 조정
빅 데이터 애플리케이션을위한 NoSQL 데이터베이스의 효과적인 크기 조정
HBase 개요
HBase는 엄청난 양의 데이터를 색인 생성하고 관리하는 탁월한 도구입니다. 랜덤 액세스, 일관된 읽기 / 쓰기, 가변 스키마 등의 특성 외에도 HBase는 수평 적으로 확장 할 수있는 능력으로 널리 인정 받고 있습니다. 데이터가 기업에서 증식 할 수있는 속도는 때때로 예측할 수 없습니다. HBase의 자동 샤딩은 기존 데이터에 영향을 미치지 않고 새로운 데이터 노드 즉 수평 스케일링을 추가함으로써 데이터 밸런싱을 효율적으로 가능하게합니다. 그러나 조직에서는 HBase의 이점을 활용할 수 있습니다. 단, 조직의 애플리케이션 및 사용 사례의 요구 사항에 따라 적절하게 데이터베이스 크기를 조정해야합니다. 따라서 HBase 클러스터의 규모를 결정하는 데 꼭 필요한 지침은 없습니다. 즉, HBase 사이징에 영향을 미치는 많은 핵심 요소가 있다.
데이터 저장소에 필요한 메모리
데이터의 크기는 HBase 구성을 결정하는 데 매우 중요합니다. 그러나 디스크의 물리적 데이터 크기는 데이터의 논리적 크기와 다르지만 종속적입니다. 디스크의 실제 데이터 크기는 다음과 같습니다.- - HBase 오버 헤드 증가
- - 압축 및 데이터 블록 인코딩에 의해 감소
- - 지역 서버의 크기 증가
- - HDFS 복제로 증가 - 일반적으로 3 배 (3 배) 복제 스키마. 맞춤 설정 가능
- 데이터 양 : 하루에 예상되는 데이터는 5 백만 행으로 가정되며 각 레코드 크기는 1000 바이트입니다
- 데이터 보관 : 아니오 : 데이터를 데이터베이스에 보존 해야하는 일수. 가정 : 10 년
- 전년 대비 증가량 : 매년 지나갈 때마다 데이터 양이 증가 할 것으로 예상됩니다. 가정 : 10 %
- 압축 비율 : 사용 가능한 데이터에 대한 예상 압축. 가정 : 10 %
년 | 연간 행 수 (백만) | 크기 (GB) | 오버 헤드를 포함한 크기 (GB) | 압축 (GB) | 누적 (GB) | 필요한 노드수 |
Y1 | 1800 | 1676.38 | 4190.95 | 419.10 | 419.10 | 3 |
Y2 | 1980 | 1844.02 | 4610.05 | 461.00 | 880.10 | 3 |
Y3 | 2178 | 2028.42 | 5071.05 | 507.11 | 1387.20 | 3 |
Y4 | 2395.8 | 2231.26 | 5578.16 | 557.82 | 1945.02 | 3 |
Y5 | 2635.38 | 2454.39 | 6135.97 | 613.60 | 2558.62 | 3 |
Y6 | 2898.918 | 2699.83 | 6749.57 | 674.96 | 3233.57 | 3 |
Y7 | 3188.8098 | 2969.81 | 7424.53 | 742.45 | 3976.03 | 3 |
Y8 | 3507.69078 | 3266.79 | 8166.98 | 816.70 | 4792.73 | 3 |
Y9 | 3858.459858 | 3593.47 | 8983.68 | 898.37 | 5691.09 | 3 |
Y10 | 4244.305844 | 3952.82 | 9882.04 | 988.20 | 6679.30 | 4 |
데이터 양
이 예제에서 HBase에 저장된 데이터의 양은 위의 표 1.1의 두 번째 열에 설명되어 있습니다. 분명히, 하루에 수집 된 데이터와 저장된 총 데이터 크기 간에는 직접적인 관계가 있습니다. 우리는 원시 데이터 크기, 오버 헤드 고려 사항에 도달하고 데이터 압축 측면을 고려하여 연간 추가되는 데이터를 생성합니다. 전년 대비 데이터 크기 수치를 보았을 때 누적 데이터 축적량이 데이터 저장소에 표시됩니다. 명확성을 위해 한 가지 예가 아래에 나와 있습니다. 행 당 1000 바이트의 초기 가정을 고려하여 => 1,800,000,000 x 1000 GB로 변환, 1,800,000,000 x 1000/3072 ≈ 1676.38(약) 10 % YoY 증가, Y2 1,800,000,000 + (1,800,000,000 * 0.1) = 1,980 만
데이터 볼륨에 대한 오버 헤드의 영향
이 절에서는 표 1의 오버 헤드를 포함한 크기 3 (GB)의 계산을 설명합니다. 메모리 측면에서 오버 헤드 는 데이터 자체와 별도로 추가 메모리 요구 사항을 나타냅니다. 행 키, 열 패밀리, 열 한정자, 타임 스탬프 및 데이터 유형으로 구성된 HBase 키는 데이터 저장을위한 색인 키입니다. 오버 헤드가있는 크기 = 연간 행렬 x 오버 헤드 비율 오버 헤드 비율 자체는 많은 키를 사용하여 정의됩니다.짧은 행 길이 | 행 키 바이트 [] | 가족 길이 바이트 | 열 패밀리 바이트 | 열 한정자 byte [] | 긴 타임 스탬프 | 키 유형 바이트 |
#columns (C) | 10 | 평균 크기 (ACS) | 100 |
열당 바이트 수 (BpC) | 24 | #column families | 1 |
행키 크기 (Rk) | 10 | ||
Hfile 색인 (Hi) | 20 % | ||
오버 헤드 비율 | 150 % |
데이터 볼륨에 대한 압축 효과
압축은 데이터 볼륨을 줄이는 데 도움이됩니다. 채택 된 압축 방식에 따라 사용중인 알고리즘이 다를 수 있으며 압축 성능이 데이터 크기에 영향을 미칩니다. 압축 비율을 알면 데이터의 크기 (오버 헤드 고려)를 다음과 같이 계산할 수 있습니다. 크기 (GB)와 압축률 = 오버 헤드 * 압축률 열 5 = 열 4 * 0.1 => 4190.95 x 0.1 ≈ 419.10 (첫 번째 기록) 압축비: (압축되지 않은 데이터 크기 - 압축 된 데이터 크기) / 압축되지 않은 데이터 크기 백분율 압축을 사용하면 HBase 쿼리 성능에 긍정적 인 영향을주지 않지만 데이터로드시 약간의 오버 헤드가 추가됩니다. Gzip 코덱은 Snappy보다 압축률이 좋습니다. 데이터 압축 및 HBase 쿼리 성능은 직접적으로 비례합니다. 압축이 클수록 HBase를 쿼리하는 데 걸리는 시간이 길어집니다. 다음 테스트 세트에서 압축 전의 원래 압축되지 않은 파일은 100GB입니다.압축되지 않은 | gzip (.gz) | 으스스한 (. 스 내피) | |
압축비 | N / A | 32 % | 5 % |
HBase 테이블에 데이터를로드하는 데 걸린 시간 (밀리 초) | 565 | 1029 | 585 |
하드웨어 요구 사항 : 핵심 요소
이제 데이터 양과 압축 측면을 이해 했으므로 하드웨어 요구 사항을 예측할 수 있습니다. 필요한 머신 = 최대 ([압축 된 데이터의 크기 ÷ 머신 당 사용 가능한 데이터], 최소 머신 수 : 하드웨어 요구 사항을 계산하기 전에, 아래의 두 가지 중요한 고려 사항 인 영역 서버 및 JVM 메모리 관리 고려 사항을 살펴 보겠습니다.지역 서버 및 JVM 힙 고려 사항
우리는 이전 섹션에서 압축 된 데이터의 크기를 계산했습니다. 머신 당 사용 가능한 데이터는 지역 서버에 의존한다는 점에 유의해야합니다. 지역 서버는 모든 지역에 대해 모든 읽기 및 쓰기 요청을 담당합니다. 또한 구성된 영역 크기 임계 값을 초과하는 영역을 분할합니다. HBase는 "메모리 저장소"와 "블록 캐시"의 두 가지 캐시 구조를 유지 관리합니다.- 메모리 저장소는 수신 된 데이터 편집 내용을 누적하여 메모리에 버퍼링합니다.
- 블록 캐시는 읽은 후에 메모리에 상주하는 데이터 블록을 유지합니다.
지역 서버 (RS) 모범 사례 | |
RS 당 메모리 (M) | 30.50GB |
권장 지역 크기 (RecRS) | 5.00GB |
블록 캐시 (Bc) | 12.20GB |
Memstore (Ms) | 12.20GB |
Memstore 플러시 크기 (Mfs) | 128.00MB |
RS 당 #regions | 95.31 |
RS (DpRS) 당 처리되는 데이터 | 476.56GB |
오프 힙 캐시 (Ohc) | 95.31GB |
지역 서버 당 지역
지역 서버 당 지역 수를 제한하는 것이 가장 좋지만, 엄지 법칙을 사용하여 각 지역 서버에 얼마나 많은 수를 가져야하는지 결정할 수 있습니다. RS 당 영역 수 = (Ms ÷ Mfs) × 1000 RS 당 처리되는 데이터 = RS 당 영역 수 x RecRS JVM 힙에 대한 의존을 완화하는 오프 힙 캐시는 다음과 같습니다. 지역 서버 당 처리되는 데이터의 경우 20 %로 가정합니다. 따라서 지금까지 수행 한 계산 결과는 1 region 서버 → 476.56 GB의 데이터입니다.기계 사양 및 크기
마지막으로 서버의 각 노드의 시스템 사양을 고려하지 않고 HBase 클러스터의 크기를 완전히 조정하는 것은 불가능합니다. HBase의 약속은 상용 하드웨어를 사용하여 기업이 수평으로 확장 할 수있게하는 것입니다. 즉, 범용 하드웨어는 핵심 사양 및 클러스터 설정 방법에 따라 다양한 결과를 산출 할 수 있습니다. 아래에서 볼 수있는 것은 전용 HBase 클러스터를 위해 설정된 클러스터를 묘사 한 것입니다. 당연히 실제 시나리오에서는 이러한 리소스를 공유하여 사용할 수 있습니다. 이로 인해 최종 구성을 결정할 때 HBase와 관계없는 요소를 고려해야합니다.#Disks | 6 ~ 10 |
RAID 구성 | RAID-0 |
각 디스크의 크기 (GB) | 600 ~ 1024 |
CPU 코어 | 24 |
메모리 (GB) | 512 |
최소 기계 | 삼 |