2013-04-25 5 views
0

아래의 의사 코드와 같은 전역 Hadoop 구성 객체를 설정/가져 오는 방법이 있습니까? 물론 필자가 필요로하는 정적 메소드를 사용하여 내 클래스를 생성 할 수는 있지만 종속성을 더 복잡하게 만들지 않기 위해 Hadoop Java API 내부에서 이와 같은 것이 발견 될 수 있다면 더 좋습니다. 지금까지는 쓸모있는 것을 찾지 못했습니다. 어떤 충고?글로벌 Hadoop 구성 저장소

일부 응용 프로그램 수준 구성 프로그램에서.

Configuration conf = new Configuration(); 
conf.set(...); 
<something>.SetGlobalConfig(conf); 

하위 클라이언트 코드.

Configuration conf = <something>.GetGlobalConfig(); 
// ... something that needs configuration. 

UPDATE 1 : 나는 하둡 .XML 구성 파일에 대해 알고 실제로는 가능한 해결책 중 하나이지만 모든 구성은 외부 파일없이, 코드에서 수행 한 것이 바람직합니다.

업데이트 2 : 제공된 포인트에 따라 결정은 작업 코드와 함께 패키지 된 '일반적인'.xml 구성을 사용하는 것입니다. 클라이언트는 동일한 도구의 사용으로 인해 hadoop과 같은 의미를 유지하는 명령 줄 매개 변수를 통해 일부 매개 변수를 '조정할 수 있습니다. Hadoop 설정/사용자 측면에서 나머지 코드를 분리하기 위해 특별한 COnfigurator singletone을 통한 훨씬 더 많은 애플리케이션 코드 요청 구성이 필요합니다.

원본 아이디어는 유용하다고 생각하지 않지만 해결된다고 생각합니다.

+1

솔직히 말해 구성 변경을 수행하기 위해 프로젝트를 다시 컴파일해야하므로 코드 구성이 좋지 않습니다. Hadoop이 코드 내 기능을 제공하지 않기 때문에 코드에서이를 수행해야한다고 주장하면 직접 작성해야합니다. –

+0

좋은 인수입니다. 아마도이 솔루션을 사용 하겠지만 유용한 패키징 체계를 찾을 시간을 갖도록하겠습니다. –

+1

'-Dfoo = bar' 옵션을 사용하여 명령 행에서이 설정을 설정할 수 있다는 점에 유의하십시오. 코드에서이를 무시하지 않는 또 다른 이유가 있습니다. – Quetzalcoatl

답변

1

당신이

Configuration conf = new Configuration(); 

를 호출 할 때이 core-default.xmlcore-site.xml을위한 프로젝트의 클래스 패스에 볼 것이다.

그리고 core-site.xml은 정확히 "글로벌"구성을 넣을 위치입니다.