
Hadoop 클러스터가 있고 Spark 애플리케이션의 속도 저하 동작을 조사하기 위해 메트릭 수집 데이터를 수집하고 있습니다.
Hadoop 클러스터에 대한 오랜 조사 끝에
Prometheus 측정 항목을 통해 node_disk_io_now의 값이 보통보다 높고 데이터 노드 시스템의 모든 HDFS 디스크와 관련이 있음을 확인했습니다.
node_disk_io_now 정의는 다음과 같습니다:
node_disk_io_now(필드 9) 0으로 설정되어야 하는 유일한 필드입니다. 요청이 적절한 구조체 request_queue에 제공되면 증가하고 완료되면 감소합니다.
커널 매개변수 조정이 디스크 성능에 긍정적인 측면을 제공할 수 있는지 알고 싶습니다.
node_disk_io_now 정의에 따르면 너무 많은 작업이 대기열에 대기 중인 것 같습니다.
일부 커널 매개변수는 위 동작을 개선하는 데 도움이 될 수 있으므로 대기열에 있는 작업이 오랫동안 존재하지 않게 됩니다.
답변1
귀하의 질문에 SSD/SAS/NLSAS 또는 하이브리드 중 어떤 유형의 디스크를 사용하고 있는지 알 수 없습니다. 이것이 선택의 가장 중요한 부분입니다.
귀하의 질문에 대답하자면, 커널 매개변수에 대해 예라고 말하고 싶습니다. 클러스터에 가장 적합한 매개변수를 찾기 위해 사용할 수 있는 몇 가지 매개변수가 있습니다.
IO 최적화의 중요한 부분은 IO 스케줄러입니다. 현재 Linux 커널에는 3개의 IO 스케줄러가 있습니다.
맙소사(FIFO):스토리지 장치 자체가 자체 최적화를 처리할 만큼 스마트한 SAN, SSD 유형의 스토리지에 사용됩니다.
마감 시간:일반적으로 파일 및 데이터베이스 서버에 적합합니다. 처리량을 향상할지 아니면 대기 시간을 향상할지 고려해야 합니다. 또는 읽기 요청을 늘리거나 그 반대로 할 수도 있습니다.
CFQ:서버에는 권장되지 않으며 데스크탑 사용에는 좋습니다.
IO 스케줄러 옆에는 가상 메모리에 대한 다른 매개변수가 있는데, 아래에 언급한 대로만 설명하겠습니다. 성능을 높이려면 이에 대해 직접 읽어야 합니다.
vm.swappiness
vm.dirty_ratio
vm.dirty_background_ratio
vm.dirty_expire_centisecs
and....
답변2
(내가 아는 한) 이를 개선할 수 있는 커널 옵션은 없습니다. 그러나 다른 모든 노드 RAID 컨트롤러가 해당 노드와 동일한 값(예: 블록 쓰기 크기)을 가지고 있는지 또는 실제로는 그 반대인지 확인하고 싶을 수도 있습니다.
또한 /etc/fstab의 모든 마운트에 동일한 옵션이 있는지 확인하십시오.
그 외에는 디스크 사양을 확인하고 동일한지 확인해야 합니다.
일부 파일 시스템은 RAM에서 많은 캐싱을 수행하므로 RAM 크기를 확인할 수도 있습니다. HDFS에 대해서는 잘 모르지만 예를 들어 ZFS는 HDFS에 많이 의존합니다.