2014-05-22 1 views
4

우리는 즉 하둡 복제에 대한 3 설정이 있습니다 :하둡 복제 인자 혼란

dfs.replication.max = 10 
dfs.replication.min = 1 
dfs.replication  = 2 

그래서 dfs.replication는 하둡 클라이언트가 수동으로 "setrep"를 사용하여 설정 될 때까지 하둡 클러스터에있는 파일의 기본 복제입니다. 및 hadoop 클라이언트는 최대 복제를 dfs.replication.mx까지 설정할 수 있습니다.

dfs.relication.min 두 가지 경우에 사용한다 : 안전 모드 중에

  1. , 그것은 블록의 복제가 dfs.replication.min 여부 개까지인지 확인합니다.
  2. dfs.replication.min이 동 기적으로 처리됩니다. 나머지 dfs.replication-dfs.replication.min은 비동기 적으로 처리됩니다.

각 노드 (namenode + datanode) 또는 클라이언트 노드에서만 이러한 구성을 설정해야합니까?

위의 세 가지 설정에 대한 설정이 다른 데이터 노드마다 다를 경우 어떻게해야합니까?

답변

11

복제 요소를 클러스터의 특정 노드에 설정할 수 없으므로 전체 클러스터/디렉토리/파일에 대해 복제 요소를 설정할 수 있습니다. "dfs.replication"은 실행중인 클러스터에서 업데이트 될 수 있습니다.

는 파일 - 하둡 DFS -setrep -w 파일 경로를

를 복제 계수를 설정하거나 디렉토리 또는 전체 cluster- 하둡 FS -setrep -R -w 1/ 재귀 적으로 설정 데이터를 쓰는 동안 최소 및 최대 담당자 인자 -

1의

사용은 많은 데이타 노드가 실패 할 가능성이 데이터 노드합니다. "dfs.replication.min" 복제본이 기록 된 경우 쓰기 작업이 성공합니다. 쓰기 작업을 게시하면 블록이 "dfs.replication" 수준에 도달 할 때까지 비동기 적으로 복제됩니다.

2- 최대 복제 인수 "dfs.replication.max"은 블록의 복제 제한을 설정하는 데 사용됩니다. 사용자는 파일을 만드는 동안 블록 복제를 한도 이상으로 설정할 수 없습니다.

3 널리 사용되는 파일 블록에 높은 복제 계수를 설정하여 클러스터에서 읽기로드를 분산시킬 수 있습니다.

+0

그래서 (namenode + datanode) 또는 namenode 또는 모든 datanode에서만 구성 매개 변수를 설정해야합니까? 우리는 하이브를 데이터로드 액티비티에 사용하고 있기 때문에 인기있는 파일 블록에 대해 높은 복제 계수를 설정하여 클러스터에 읽기로드를 분산시킬 수 있습니다. – user2950086

+0

기본 블록의 복제 구성은 hdfs-site.xml에서 한 번만 클러스터 레벨 구성으로 업데이트 할 수 있습니다. 하이브 테이블에 대한 복제본을 업데이트 한 다음 HDFS (기본/사용자/하이브 /웨어 하우스 ..)에서 테이블 위치를 찾고 명령에 따라 복제를 변경해야하는 경우 - hadoop fs -setrep -R -w rep-num/user/hive/warehouse/xyz_table –

+0

우리는 해당 테이블에 대한 복제를 구성 할 수있는 하이브 용 구성 매개 변수가 있습니까? 예 : 하이브 - "일부 쿼리"-hiveconf some.configuration.parameter – user2950086