내가 아는 한 hadoop 아키텍처는 모든 컴퓨터가 모든 작업/작업이 클러스터의 모든 컴퓨터에서 실행될 수 있다고 간주합니다.특정 유형의 hadoop 작업을 실행하기 위해 특정 시스템을 선택할 수 있습니까?
이 모델을 변경하여 특정 컴퓨터에 특정 기능을 부여한 다음 해당 작업을 실행하는 데 필요한 기능이있는 컴퓨터 만 선택하도록 할 수 있습니까?
내가 아는 한 hadoop 아키텍처는 모든 컴퓨터가 모든 작업/작업이 클러스터의 모든 컴퓨터에서 실행될 수 있다고 간주합니다.특정 유형의 hadoop 작업을 실행하기 위해 특정 시스템을 선택할 수 있습니까?
이 모델을 변경하여 특정 컴퓨터에 특정 기능을 부여한 다음 해당 작업을 실행하는 데 필요한 기능이있는 컴퓨터 만 선택하도록 할 수 있습니까?
알아 낸 것. FairScheduler를 사용하기 때문에 LoadManager 인터페이스를 구현하는 간단한 클래스를 작성하여 내 목표를 달성 할 수있는 확장 지점이 있습니다
http://hadoop.apache.org/common/docs/current/fair_scheduler.html에 따르면 FairScheduler는 mapred.fairscheduler.loadmanager 구성 속성에 지정된 클래스의 인스턴스를 사용합니다 (기본적으로 CapBasedLoadManager). LoadManager 인터페이스 나 허용하거나 특정 작업 추적기에서 실행하는 특정 작업을 거부하는 사용자 지정 논리를 가지고 있습니다 convinient 방법
boolean canLaunchTask(TaskTrackerStatus tracker, JobInProgress job, TaskType type)
에게 제공합니다. 문제 해결됨.
학습 : 소스 코드 읽기가 유용합니다.
음. 이것은 유용하지만 데이터가 로컬 권한이 아닐 수 있습니다? 하나는 두 개의 Jobtrackers를 실행할 수 있으며 각각 다른 Tasktrackers 풀을 관리합니다. 해당 jobtracker에게 작업을 제출할 수 있습니다.