2017-11-30 1 views
0

누구나이 명령의 사용법을 자세히 설명 할 수 있습니까? 내 클러스터의Hadoop Balancer 매개 변수에 대한 의문점이 있습니다.

hdfs balancer [-source [-f <hosts-file> | <comma-separated list of hosts>]] 

문제는 내 데이터 노드 중 하나가 용량의 블록 풀의 93 %를 사용하고 나머지는 < 80 %를 사용하고 있다는 점이다. 호튼 웍스 문서에서

+0

로드 밸런서 요청의 소스를 선택해야합니다. 노드 1 (사용 된 노드)에서 데이터를 리디렉션하려면이 노드 하나만 소스로 지정해야합니다. – Ko2r

답변

0

:

균형이 블록 만 데이타 노드에서 이동을 선택하도록 새로운 -source 옵션은 소스 데이터 노드 목록을 지정 허용합니다. 목록이 비어 있으면 모든 데이터 노드를 소스로 선택할 수 있습니다. 기본값은 빈 목록입니다.

이 옵션을 사용하여 클러스터의 특정 데이터 노드의 공간을 확보 할 수 있습니다. -source 옵션을 지정하지 않으면 Balancer가 비효율적 일 수 있습니다. 아래는 그 예입니다.

Datanodes (with the same capacity) Utilization  Rack 
D1 95%  A 
D2 30%  B 
D3, D4, D5 0% B 

위의 표에서 D2는 10 % 임계 값 내에 있도록 평균 사용률이 25 %입니다. D2에서 또는 D2로 블록을 이동할 필요는 없습니다. 원본 노드를 지정하지 않으면 Balancer는 먼저 블록을 D2에서 D3, D4 및 D5로 이동합니다. 블록이 동일한 랙 아래에 있으므로 블록을 D1에서 D3, D4 및 D5로 이동합니다. 소스 노드로 D1을 지정하면 Balancer가 블록을 D1에서 D3, D4 및 D5로 직접 이동합니다.

이것은 HDFS Balancer의 두 번째 기사입니다. 다음 기사에서 클러스터 밸런싱을 위해 Balancer가 배포 한 알고리즘에 대해 설명합니다.

+0

다음 명령을 사용하는 중 "hdfs balancer -source CDCUEXDB05"오류가 발생했습니다 : 17/11/30 19:30:23 오류 balancer.Balancer : 예외로 인해 종료 밸런서 java.lang.IllegalArgumentException : args = [-source , CDCUEXDB05] at org.apache.hadoop.hdfs.server.balancer.Balancer $ Cli.parse (Balancer.java:1600) at org.apache.hado.server.balancer.Balancer $ Cli.run (밸런서 .java : 1556) at org.apache.hadoop.util.ToolRunner.run (ToolRunner.java:70) at org.apache.hadoop.hdfs.server.balancer.Balancer.main (Balancer.java:1628) –

관련 문제