web-dev-qa-db-fra.com

Changer la taille du bloc du fichier DFS

Ma carte est actuellement inefficace lors de l'analyse d'un ensemble particulier de fichiers (un total de 2 To). Je voudrais changer la taille de bloc des fichiers dans le Hadoop DFS (de 64 Mo à 128 Mo). Je ne trouve pas comment le faire dans la documentation pour un seul ensemble de fichiers et non à l'ensemble du cluster.

Quelle commande change la taille du bloc lorsque je télécharge? (Comme la copie de la section locale à DFS.)

22
Sam

Je change ma réponse! Vous avez juste besoin de définir le fs.local.block.size Définition de la configuration de manière appropriée lorsque vous utilisez la ligne de commande.

hadoop fs -D fs.local.block.size=134217728 -put local_name remote_location

Réponse originale

Vous pouvez spécifier de manière programmative la taille du bloc lorsque vous créez un fichier avec l'API Hadoop. Malheureusement, vous ne pouvez pas faire cela sur la ligne de commande avec le hadoop fs -put commande. Pour faire ce que vous voulez, vous devrez écrire votre propre code pour copier le fichier local dans un emplacement distant; Ce n'est pas difficile, il suffit d'ouvrir un FileInputStream pour le fichier local, créez la télécommande OutputStream avec FileSystem.create , puis utilisez quelque chose comme IOUtils.copy de Apache Commons IO Pour copier entre les deux flux.

13
Bkkbrad

Pour moi, je devais changer légèrement la réponse de Bkkbrad pour le faire travailler avec ma configuration, au cas où quelqu'un d'autre trouve cette question plus tard. J'ai Hadoop 0.20 en cours d'exécution sur Ubuntu 10.10:

[.____] hadoop fs -D dfs.block.size=134217728 -put local_name remote_location

[.____] Le réglage pour moi n'est pas fs.local.block.size mais plutôt dfs.block.size

29
KWottrich

Nous pouvons changer la taille du bloc à l'aide de la propriété nommée dfs.block.size dans le fichier hdfs-site.xml fichier. Remarque: nous devrions mentionner la taille dans les bits. Par exemple: 134217728 bits = 128 Mo.

3
Rengasamy

Dans Conf/Dossier, nous pouvons changer la valeur de dfs.block.size dans le fichier de configuration HDFS-SITE.XML. Dans Hadoop version 1.0 La taille par défaut est de 64 Mo et la taille de la version 2.0 de la version 2.0 est de 128 Mo.

<property> 
    <name>dfs.block.size<name> 
    <value>134217728<value> 
    <description>Block size<description> 
<property>
2
madhur

vous pouvez également modifier votre taille de bloc dans vos programmes comme celui-ci.

Configuration conf = new Configuration() ;

conf.set( "dfs.block.size", 128*1024*1024) ;
2
inuyasha1027