[HADOOP] 하둡 (Hadoop) 성능 - 대용량 파일 (20GB)
HADOOP하둡 (Hadoop) 성능 - 대용량 파일 (20GB)
hdfs -put을 사용하여 20GB의 대용량 파일을 hdfs에로드합니다. 현재 프로세스는 @ 4 분 실행됩니다. hdfs로 데이터를로드하는 시간을 개선하려고합니다. 쓰기 속도를 향상시키기 위해 다른 블록 크기를 사용했지만 다음 결과를 얻었습니다.
512M blocksize = 4mins;
256M blocksize = 4mins;
128M blocksize = 4mins;
64M blocksize = 4mins;
누구든지 병목 현상이 무엇인지, 그리고 다른 cmdlet의 성능을 향상시키기 위해 탐색 할 수있는 옵션을 알고 있습니까?
해결법
-
==============================
1.20GB / 4 분이 약 85MB / 초로 나옵니다. HDFS 프로토콜과 네트워크의 모든 오버 헤드로 단일 드라이브에서 기대할 수있는 매우 합리적인 처리량입니다. 그게 네 병목 일 걸세. 귀하의 섭취 과정을 변경하지 않고도, 당신은 이것을 마술처럼 빨리 만들 수 없을 것입니다.
20GB / 4 분이 약 85MB / 초로 나옵니다. HDFS 프로토콜과 네트워크의 모든 오버 헤드로 단일 드라이브에서 기대할 수있는 매우 합리적인 처리량입니다. 그게 네 병목 일 걸세. 귀하의 섭취 과정을 변경하지 않고도, 당신은 이것을 마술처럼 빨리 만들 수 없을 것입니다.
핵심적인 문제는 20GB는 적절한 양의 데이터이고 데이터는 HDFS에 단일 스트림으로 푸시됩니다. 디스크 I / O는 Hadoop 클러스터에 많은 수의 디스크가있어 매우 제한적입니다. 10GigE 네트워크 (및 아마도 1GigE)를 포화 상태로 유지하는 데는 시간이 있습니다.
블록 크기를 변경해도이 동작은 변경되지 않습니다. 그것은 여전히 HDFS 로의 디스크와 같은 양의 데이터입니다.
파일을 1GB 파일로 분할하고 여러 디스크에 분산시킨 다음 병렬로 출력하십시오. 네트워크에 병목 현상이 발생하면 여러 파일로 분할하여 파일을 분할 할 수도 있습니다. 데이터를 수신하는 방식을 변경하여이를 빠르게 할 수 있습니까? 파일을 분할하고 주위를 움직이는 것도 시간이 걸릴 것입니다.
-
==============================
2.설정 세부 사항에 따라 크게 달라집니다. 첫째, 4 분 동안 20GB는 80MBps입니다.
설정 세부 사항에 따라 크게 달라집니다. 첫째, 4 분 동안 20GB는 80MBps입니다.
병목 현상은 로컬 시스템의 하드웨어 또는 이더넷 연결 일 가능성이 큽니다. 블럭 크기를 가지고 노는 것이 의심 스럽지만 처리량이 많이 향상 될 것입니다.
로컬 시스템의 일반적인 7200rpm 하드 드라이브의 경우 디스크 대 버퍼 전송 속도는 약 128MBps입니다. 즉, 20GB의 여유 공간이 있다고 가정 할 때 약 2:35의 메모리에 20BG 파일을로드 할 수 있습니다. 그러나 단순히 메모리에 복사하는 것이 아니라 메모리에서 네트워크 패킷으로 스트리밍하는 것이므로 이러한 작업을 처리하는 데 추가 오버 헤드가 발생할 수 있습니다.
유선 속도에 관한 위키 피 디아 (Wikipedia) 항목도 참조하십시오. 이더넷 속도가 100Mbit / s (~ 12MB / s)로 설정됩니다. 이 경우 고속 이더넷은 특정 그룹의 이더넷 표준 용어입니다. 당신은 분명히 이것보다 더 빠른 속도를 얻고 있습니다. 유선 속도는 로컬 시스템의 모든 요소를 고려하기 때문에 좋은 측정 값입니다.
이제 로컬 시스템의 스트리밍 프로세스의 여러 단계를 살펴 보겠습니다.
로컬 시스템에 대해 더 많이 알지 못하면 이러한 구성 요소 중 병목 현상이 무엇인지 지정할 수 없습니다. 그러나 이들은 비트율 조사를 시작할 수있는 곳입니다.
-
==============================
3.당신은 distcp를 사용할 수 있습니다. hadoop distcp -Ddfs.block.size = $ [256 * 1024 * 1024] / path / to / inputdata / path / to / outputdata 병렬 복사를 수행하는 방법
당신은 distcp를 사용할 수 있습니다. hadoop distcp -Ddfs.block.size = $ [256 * 1024 * 1024] / path / to / inputdata / path / to / outputdata 병렬 복사를 수행하는 방법
from https://stackoverflow.com/questions/19570660/hadoop-put-performance-large-file-20gb by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] hadoop hdfs에서 / tmp 디렉토리 란 무엇입니까? (0) | 2019.07.08 |
---|---|
[HADOOP] Apache Spark를 웹 응용 프로그램의 백엔드로 사용 (0) | 2019.07.08 |
[HADOOP] Amazon S3 아키텍처 [닫힘] (0) | 2019.07.08 |
[HADOOP] Cloudera Hbase와 함께 Phoenix 사용 (Repo에서 설치) (0) | 2019.07.08 |
[HADOOP] 그러나 그들은 의사 모드에서 오류를 고안한다. (0) | 2019.07.08 |