2010-07-06 26 views
0

J'essaye une petite installation de hadoop (pour l'expérimentation) avec juste 2 machines. Je charge environ 13 Go de données, une table d'environ 39 millions de lignes, avec un facteur de réplication de 1 en utilisant Hive.Distribution de données égale sur hadoop/ruche

Mon problème est que hadoop stocke toujours toutes ces données sur un seul datanode. Seulement si je change le facteur dfs_replication à 2 en utilisant setrep, hadoop copie les données sur l'autre noeud. J'ai également essayé l'équilibreur ($HADOOP_HOME/bin/start-balancer.sh -threshold 0). L'équilibreur reconnaît qu'il doit se déplacer autour de 5 Go pour équilibrer. Mais il dit: No block can be moved. Exiting... et sort:

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 

Quelqu'un peut-il suggérer des moyens d'obtenir une répartition uniforme des données sur Hadoop, sans réplication?

+0

Vous pouvez trouver que vous obtenez une meilleure réponse sur http://serverfault.com/ –

+0

Pouvez-vous s'il vous plaît montrer le contenu du fichier maître et esclaves dans votre dir dir? – SleepyThread

Répondre

0

utilisez-vous vos deux machines comme datanodes? Très peu probable mais vous pouvez le confirmer pour moi.

Typiquement dans un cluster de 2 machines, je m'attendais à ce qu'une machine soit le nom de noeud et l'autre le noeud de données. Ainsi, lorsque vous définissez le facteur de réplication sur 1, les données sont copiées dans le seul datanode disponible. Si vous le changez en 2, il se peut qu'un autre datanode du cluster doive copier les données mais ne les trouve pas et il peut donc quitter.