복붙노트

[HADOOP] hadoop : 파일에 로컬 작업이 없습니까?

HADOOP

hadoop : 파일에 로컬 작업이 없습니까?

내가 hadoop 작업을 실행하고 일부지도 작업을 보면 파일 블록이있는 곳에서 실행되지 않고있는 것을 알 수 있습니다. 예를 들어지도 작업은 slave1에서 실행되지만 파일 블록 (모두)은 slave2에 있습니다. 파일은 모두 gzip입니다.

왜 그런 일이 일어나고 어떻게 해결할 수 있습니까?

UPDATE : 보류중인 작업이 많아 노드가 유휴 상태가 아니므로 다른 노드에서 읽는 작업을 호스트하지 않습니다.

해결법

  1. ==============================

    1.Hadoop의 기본 (FIFO) 스케줄러는 다음과 같이 작동합니다. 노드에 여유 용량이있는 경우 마스터에 연결하여 더 많은 작업을 요청합니다. 마스터는 데이터 로컬 태스크 또는 랙 로컬 태스크를 할당하려하지만 그렇지 않으면 대기 태스크의 큐에있는 태스크를 해당 노드에 할당합니다. 그러나이 노드에이 비 로컬 작업 (이 작업을 X 작업이라고 함)이 할당되는 동안 다른 노드에서도 여분의 용량이있어 작업을 요청하는 마스터에게 연락 할 수 있습니다. 이 노드에 실제로 X가 필요로하는 데이터의 로컬 사본이 있더라도 다른 노드가 후자 노드보다 약간 빨리 마스터에 대한 잠금을 획득 할 수 있기 때문에이 태스크에 할당되지 않습니다. 이로 인해 데이터 국지성이 떨어지나 FAST 작업 할당이 발생합니다.

    Hadoop의 기본 (FIFO) 스케줄러는 다음과 같이 작동합니다. 노드에 여유 용량이있는 경우 마스터에 연결하여 더 많은 작업을 요청합니다. 마스터는 데이터 로컬 태스크 또는 랙 로컬 태스크를 할당하려하지만 그렇지 않으면 대기 태스크의 큐에있는 태스크를 해당 노드에 할당합니다. 그러나이 노드에이 비 로컬 작업 (이 작업을 X 작업이라고 함)이 할당되는 동안 다른 노드에서도 여분의 용량이있어 작업을 요청하는 마스터에게 연락 할 수 있습니다. 이 노드에 실제로 X가 필요로하는 데이터의 로컬 사본이 있더라도 다른 노드가 후자 노드보다 약간 빨리 마스터에 대한 잠금을 획득 할 수 있기 때문에이 태스크에 할당되지 않습니다. 이로 인해 데이터 국지성이 떨어지나 FAST 작업 할당이 발생합니다.

    대조적으로 공정한 스케줄러는 "작은 비트"(구성 가능)에 대한 비 로컬 작업 할당을 지연하여 더 높은 지역을 달성하는 지연된 스케줄링이라는 기술을 사용합니다. 그것은 더 높은 지역성을 얻지 만, 약간의 작업을 지연시키는 약간의 비용이 든다.

    다른 사람들은 더 나은 스케줄러 작업을하고 있으며, 앞으로는 개선 될 것입니다. 지금은 더 높은 데이터 지역을 원한다면 Fair Scheduler를 사용하도록 선택할 수 있습니다.

    나는 "3의 기본 복제 인수를 사용하면 데이터가 아닌 많은 작업을 볼 수 없다"는 결론에 동의하지 않습니다. 그는 더 많은 복제본이 지역을 향상시킬 것이라는 점에 주목하지만 데이터 로컬 작업의 비율은 여전히 ​​매우 낮을 수 있습니다. 나는 또한 실험을 직접 실행했고 FIFO 스케줄러로 매우 낮은 데이터 지역을 보았다. 당신의 직업이 크고 (많은 임무가있는) 높은 지역을 얻을 수 있지만,보다 일반적인, 더 작은 일자리의 경우, "일선 스케줄링 (head-of-line scheduling)"이라는 문제가 있습니다. 이 문서에서 인용 :

    이 신문은 페이스 북의 생산 클러스터에서 숫자를 인용하면서 대형 프로덕션 환경에서 데이터 지역성의 5 %만을 관찰했다고 전했다.

    마지막 참고 사항 : 데이터 지역이 낮은 경우 신경 써야합니까? 너무 많이하지. 작업의 실행 시간은 stragglers (완료하는 데 오래 걸리는 작업)에 의해 지배 될 수 있고 단계를 뒤섞을 수 있습니다. 따라서 데이터 지역성을 개선하면 실행 시간이 매우 짧아집니다.

  2. ==============================

    2.불행히도 기본 스케줄러는 그렇게 똑똑하지 않습니다. 나는 정확히 무슨 일이 일어나는지 확신 할 수는 없지만, 다음 작업을 위해 지금 할 수있는 일을 계획하려고 시도하는 욕심 많은 스타일의 일종의 스케줄링을 사용하고 있다고 생각합니다. hadoop 스케줄러에 대한 개선이있을 수 있으며 몇 가지 학문적 시도가 있었고 hadoop 스케줄링을보다 최적으로 만들 수 있습니다.

    불행히도 기본 스케줄러는 그렇게 똑똑하지 않습니다. 나는 정확히 무슨 일이 일어나는지 확신 할 수는 없지만, 다음 작업을 위해 지금 할 수있는 일을 계획하려고 시도하는 욕심 많은 스타일의 일종의 스케줄링을 사용하고 있다고 생각합니다. hadoop 스케줄러에 대한 개선이있을 수 있으며 몇 가지 학문적 시도가 있었고 hadoop 스케줄링을보다 최적으로 만들 수 있습니다.

    이 연구 논문은 기본 hadoop 스케줄러가 최적이 아님을 보여줍니다. 결과적으로 복제 계수를 3으로 높이면 데이터 지역이 크게 향상되고 이후에는 수익이 감소합니다.

    그렇다면 기본 스케줄러가 개선되지 않은 이유는 무엇입니까? 내 의견 / 이론은 다음과 같습니다. 기본 복제 인수가 3 인 경우 로컬 데이터가 아닌 많은 작업이 표시되지 않습니다. 더 많은 복제본을 확보함으로써 일정을 올바른 지점에 맞게 조정할 수 있습니다. 기본적으로, 3 개의 복제본을 가지고 있다는 것은 우연의 일치이며, 기본 스케줄러는 느린 방식으로 구현 됨으로써이를 활용합니다. 일반적으로 리던던시를 위해 일반적으로 3 개의 복제본을 가지고 있으므로 복제가 1 인 사용자에 대한 스케줄러 성능을 돕는 동기는별로 없습니다.

    공간이 있다면 복제 요소를 2 ~ 3 개로 늘리는 것이 좋습니다. 정말로 많은 단점은 없습니다.

  3. from https://stackoverflow.com/questions/20681141/hadoop-tasks-not-local-with-file by cc-by-sa and MIT license