2013-07-23 34 views
8

Tôi đã giảm hệ số nhân bản từ 3 xuống 1, nhưng không thấy bất kỳ hoạt động nào từ nút tên hoặc giữa các nút dữ liệu để loại bỏ các khối tệp HDFS quá sao chép. Có cách nào để theo dõi hoặc ép buộc công việc sao chép không?Nhân tố nhân rộng giảm HDFS

Trả lời

18

Thay đổi dfs.replication sẽ chỉ áp dụng cho các tệp mới mà bạn tạo, nhưng sẽ không sửa đổi hệ số nhân bản cho các tệp hiện có.

Để thay đổi yếu tố sao chép các tập tin đã tồn tại, bạn có thể chạy lệnh sau đó sẽ được chạy đệ quy trên tất cả các file trong HDFS:

hadoop dfs -setrep -w 1 -R/
+0

Nó không phải là 'hadoop fs -setrep -w 1 -R/'? – zeekvfu

+0

Lý tưởng nhất, nó phải là 'hadoop fs'. Nhưng mặc dù 'hadoop dfs' bị phản đối nhưng nó vẫn hoạt động. – daemon12

+1

@zeekvfu, có hiệu lực, với bản phát hành cuối cùng của apache hdfs, nó phải là: hdfs dfs -setrep -w 2 -R / –

-7

Có thể bạn có thể viết chức năng bản đồ để xóa các khối tệp!

4

Khi bạn thay đổi yếu tố sao chép mặc định từ 3 đến giả 2 từ người quản lý cloudera

Cloudera Manager(CDH 5.0.2) -> HDFS -> Configuration -> View and Edit -> Service-Wide -> Replication -> Replication Factor (dfs.replication) -> 2 

thì chỉ dữ liệu mới được ghi sẽ có 2 bản sao cho mỗi khối.

Vui lòng sử dụng

hdfs dfs -setrep 2/

trên dòng lệnh (thường là một nút với HDFS Cổng Role) nếu bạn muốn thay đổi các yếu tố sao chép tất cả các dữ liệu hiện có. Lệnh này đệ quy thay đổi hệ số nhân bản của tất cả các tệp trong thư mục gốc /.

Cú pháp:

hdfs dfs -setrep [-R] [-w] <numReplicas> <path> 

where 

-w flag requests that the command wait for the replication to complete and can take a very long time 

-R flag is just for backwards compatibility and has no effect 

tham khảo:

http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.2.0-cdh5.0.0-beta-2/hadoop-project-dist/hadoop-common/FileSystemShell.html#setrep

0

Yếu tố sao chép mới ảnh hưởng đến các tập tin chỉ mới. Để thay đổi yếu tố sao chép các tập tin hiện có chạy trong vỏ (trên nút với điểm vào hadoop)

hadoop fs -setrep -w <replication factor> -R/

Nhưng, chỉ có "HDFS" có thể ghi vào/("HDFS" là superuser, không phải "root"). Vì vậy, có thể bạn sẽ phải chạy điều này:

sudo -u hdfs hadoop fs -setrep -w <replication factor> -R/