[HADOOP] S3 병렬 읽기 및 쓰기 성능?
HADOOPS3 병렬 읽기 및 쓰기 성능?
Spark (또는 다른 Hadoop 프레임 워크)가 S3에서 큰 (1TB) 파일을 읽는 시나리오를 고려하십시오. 여러 개의 스파크 실행자가 S3에서 병렬로 매우 큰 파일을 어떻게 읽습니까? HDFS에서이 대용량 파일은 각 노드에 데이터 블록이있는 여러 노드에 분산됩니다. 객체 저장소 에서이 전체 파일은 단일 노드에 있다고 가정합니다 (복제본 무시). 이로 인해 읽기 처리량 / 성능이 크게 줄어 듭니다.
마찬가지로 HDFS의 쓰기는 여러 호스트에 분산되는 반면 S3에서는 모든 데이터가 하나의 호스트 (간단한 복제 무시)를 거쳐야하므로 HDFS에서는 S3보다 훨씬 큰 파일 쓰기도 훨씬 빨라야합니다.
이는 빅 데이터 세계에서 HDFS와 비교할 때 S3의 성능이 현저히 저하됨을 의미합니다.
해결법
-
==============================
1.예, S3은 HDFS보다 느립니다. 그러나 그 이유와 영향을 완화하는 방법을 살펴 보는 것이 흥미 롭습니다. 핵심 사항 : 쓰기보다 많은 데이터를 읽는 경우 읽기 성능이 중요합니다. Hadoop 2.8+의 S3A 커넥터는 실제 벤치 마크의 흔적을 기반으로 Parquet / ORC 파일을 읽도록 조정되었으므로 실제로 도움이됩니다. 쓰기 성능도 저하되며, 더 많은 데이터를 생성할수록 더 나빠집니다. 사람들은 특별한 노력을 기울이지 않으면 실제로 출력이 잘못 될 수 있다는 사실에 대해 정말로 걱정해야 할 때 불평합니다. 그것은 일반적으로 가장 중요한 문제입니다-덜 분명합니다.
예, S3은 HDFS보다 느립니다. 그러나 그 이유와 영향을 완화하는 방법을 살펴 보는 것이 흥미 롭습니다. 핵심 사항 : 쓰기보다 많은 데이터를 읽는 경우 읽기 성능이 중요합니다. Hadoop 2.8+의 S3A 커넥터는 실제 벤치 마크의 흔적을 기반으로 Parquet / ORC 파일을 읽도록 조정되었으므로 실제로 도움이됩니다. 쓰기 성능도 저하되며, 더 많은 데이터를 생성할수록 더 나빠집니다. 사람들은 특별한 노력을 기울이지 않으면 실제로 출력이 잘못 될 수 있다는 사실에 대해 정말로 걱정해야 할 때 불평합니다. 그것은 일반적으로 가장 중요한 문제입니다-덜 분명합니다.
S3에서 읽는 것은
형식이 분할 가능한 경우 Spark는 파일에서 작업을 분할하고 사용되는 압축 형식도 분할 가능합니다 (gz는 아니고 snappy는 아닙니다). 특정 작업 (fs.s3a.block.size)에 대해 구성 / 조정할 수있는 블록 크기로 수행됩니다. > 1 클라이언트가 동일한 파일을 읽는 경우, 예, 해당 파일에 대한 디스크 IO의 과부하가 발생하지만 일반적으로 나머지 파일과 비교할 때 약간 적습니다. 하나의 작은 비밀 : 멀티 파트 업로드 파일의 경우 별도의 부분을 읽는 것은 이것을 피하는 것처럼 보이므로 동일한 블록 크기로 업로드하고 다운로드하십시오.
쓰기 성능이 저하됨
임시 위치에 작성된 파일의 rename ()으로 출력이 커밋되면 각 개체를 최종 경로에 복사하는 시간은 6-10MB / S입니다.
더 큰 문제는 커밋 프로세스 중에 일관성없는 디렉토리 목록 또는 작업 실패를 처리하는 것이 매우 나쁘다는 것입니다. 상점에 대한 일관된보기 (일관된 emrfs, s3mper, s3guard)를 제공하지 않으면 일반적인 커미트 별 커미트 알고리즘을 사용하여 S3를 작업의 직접 대상으로 안전하게 사용할 수 없습니다.
최대 성능과 안전한 작업 커밋을 위해서는 S3에 최적화 된 출력 커미터가 필요합니다. 데이터 브릭에는 자체적 인 기능이 있으며 Apache Hadoop 3.1은 "S3A 출력 커미터"를 추가합니다. EMR에는 분명히 여기에도 무언가가 있습니다.
해당 문제점에 대한 세부 사항은 이름 바꾸기 커미터 없음을 참조하십시오. 그 후, 안전한 커밋 메커니즘으로 이동하거나 HDFS를 작업 대상으로 사용하기를 바랍니다.
from https://stackoverflow.com/questions/54205279/s3-parallel-read-and-write-performance by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] FATAL master.HMaster : 예기치 않은 상태 : .. 오프라인으로 전환 할 수 없습니다 (0) | 2019.09.07 |
---|---|
[HADOOP] UDF에 전달하기 위해 가방을 절단 (0) | 2019.09.07 |
[HADOOP] PIG : 열 이름에서 '::'를 제거하는 방법 (0) | 2019.09.07 |
[HADOOP] HDFS는 사용 가능한 블록을 어떻게 계산합니까? (0) | 2019.09.07 |
[HADOOP] 타임 스탬프는 Apache Hive의 시간대와 함께 저장됩니까? (0) | 2019.09.06 |