Cet article étudie principalement la méthode d'accès de l'API Java de HDFS. Le code spécifique est illustré ci-dessous et présente des commentaires détaillés.
Le rythme a été un peu rapide récemment. Quand tu as le temps, tu peux envelopper ça
import java.io.ioException; import java.net.uri; import java.net.urisyntaxException; import org.apache.hadoop.conf.configuration; import org.apache.hadoop.fs.blocklocation; import org.apache.hadoop.fsystem; import; org.apache.hadoop.fs.filesystem; import org.apache.hadoop.fs.fileutil; import org.apache.hadoop.fs.path; import org.apache.hadoop.hdfs.distributedfilesystem; import org.apache.hadoop.hdfs.protoCol.datanodeinfo;
/ ** * Obtenez le système de fichiers HDFS * @return * @throws ioException * @throws urisyntaxException * / public static fileSystem getFileSystem () lance ioException, urisyNTaxException {// lire la configuration fileConfiguration conf = new Configuration (); // Retour au système de fichiers par défaut // Exécuter dans le cluster hadoop fs = fileSystem.get (conf); // Adresse du système de fichiers spécifié uri uri = new uri ("hdfs: // hy: 9000"); // renvoie le système de fichiers spécifié // Si vous testez localement, vous devez utiliser cette méthode pour obtenir le système de fichiers filesystem fs = filesystem.get (uri, conflit); Mkdir () lève une exception {// obtenir un fichier System FileSystem fs = getFileSystem (); // Créer un répertoire de fichiers fs.mkDirs (new Path ("hdfs: // hy: 9000 / hy / weibo")); // release Resource Fs.Close ();} / ** * supprimer le fichier ou le fichier * @hrows exception * Exception {// Obtenir des fichiers Système FileSystem fs = getFileSystem (); // Supprimer le fichier ou le répertoire de fichiers fs.delete (new Path ("hdfs: // hy: 9000 / hy / weibo"), true); // remettre la ressource fs.close ();} / ** * Obtenez tous FileSystem fs = getFileSystem (); // lister le contenu du répertoire filestatus [] status = fs.listStatus (nouveau chemin ("hdfs: // hy: 9000 / hy /")); // Obtenez tous les chemins de fichier dans le chemin du répertoire [] listedPaths = FileUtil.stat2paths (status); // loop chaque fichier pour (path path: listedpaths) {System.out.println (path);} // Libérez la ressource fs.close ();} / ** * Téléchargez le fichier sur HDFS * @throws exception * / public static void copytohdfs () lève exception {// obtenir un fichier fileSystem fs = getFileSystem (); // Le fichier source est le chemin du Path sous Linux Path Srcpath = new Path ("/ home / hadoop / temp.jar"); // Si vous devez tester sous Windows, vous devez le modifier en chemin sous Windows, par exemple, e: //temp.jarpath srcpath = nouveau chemin ("e: //temp.jar"); // destination path dstpath = nouveau chemin ("hdfs: // hy: 9000 / hyibo"); fs.copyFromLocalFile (srcPath, dstPath); // Remettez la ressource fs.close ();} / ** * Téléchargez le fichier à partir de HDFS * @throws exception * / public static void getFile () lance l'exception de fichier {// PATH ("hdfs: // hy: 9000 / hy / weibo / temp.jar"); // path par défaut, par défaut est linux // Si vous êtes testé sous Windows, vous devez passer à la voie sous Windows, tels que c: // user / andy / Desktop / Path DstPath = New Path ("d: //"); // télécharger le fichier fs.copytolocalfile (SRCPATH, DSTPE; La ressource fs.close ();} / ** * Obtenez des informations sur les points de cluster HDFS * @throws exception * / public static void gethdfsnodes () lève une exception {// Get File System FileSystem fs = getFileSystem (); // Get Distributed File System DistributedFileSystem hdfs = (DistributedFilesySystem) Fs; datanodestats = hdfs.getDatanodestats (); // Loop Traversal pour (int i = 0; i <datanodestats.length; i ++) {System.out.println ("datanote_" + i + "_name:" + datanoDestats [i] .Gethostname ()); Emplacement d'un fichier dans le cluster HDFS * @Throws Exception * / public static void getFilelocal () lève une exception {// get file System FileSystem fs = getFileSystem (); // File Path Path Path = new Path ("hdfs: // hy: 9000 / hy / weibo / temp.jar"); // get file Directory FileStatus Filestatus ") Fs.getFileStatus (Path); // Obtenez la liste de localisation du bloc de fichiers BlockLocation [] BlockLocations = Fs.getFileBlockLocations (FileStatus, 0, FileStatus.getlen ()); // Loop Output Block Information for (int i = 0; i <blockLocations.length; i ++) {String [] hosts = BlockLocations [i] .Gethosts (); System.out.println ("Block_" + i + "_Location:" + Hosts [0]);} // Libérez la ressource fs.close ();}Ce qui précède est l'intégralité du contenu de cet article sur la méthode d'accès de l'API Java HDFS. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à d'autres sujets connexes sur ce site. S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!