Я пробую небольшую настройку Hadoop (для экспериментов) только с 2 машинами. Я загружаю около 13 ГБ данных, таблицу из примерно 39 миллионов строк с коэффициентом репликации 1 с использованием Hive.
Моя проблема в том, что hadoop всегда хранит все эти данные на одной датоде. Только если я изменю коэффициент dfs_replication на 2 с помощью setrep, hadoop копирует данные на другом узле. Я также попробовал балансировщик ($HADOOP_HOME/bin/start-balancer.sh -threshold 0
). Балансировщик признает, что для балансировки ему необходимо переместиться на 5 ГБ. Но говорит: No block can be moved. Exiting...
и выходит:
2010-07-05 08:27:54,974 INFO org.apache.hadoop.hdfs.server.balancer.Balancer: Using a threshold of 0.0
2010-07-05 08:27:56,995 INFO org.apache.hadoop.net.NetworkTopology: Adding a new node: /default-rack/10.252.130.177:1036
2010-07-05 08:27:56,995 INFO org.apache.hadoop.net.NetworkTopology: Adding a new node: /default-rack/10.220.222.64:1036
2010-07-05 08:27:56,996 INFO org.apache.hadoop.hdfs.server.balancer.Balancer: 1 over utilized nodes: 10.220.222.64:1036
2010-07-05 08:27:56,996 INFO org.apache.hadoop.hdfs.server.balancer.Balancer: 1 under utilized nodes: 10.252.130.177:1036
2010-07-05 08:27:56,997 INFO org.apache.hadoop.hdfs.server.balancer.Balancer: Need to move 5.42 GB bytes to make the cluster balanced.
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
No block can be moved. Exiting...
Balancing took 2.222 seconds
Кто-нибудь может подсказать, как добиться равномерного распределения данных по hadoop, без репликации?