Este artículo estudia principalmente el método de acceso de la API Java de HDFS. El código específico se muestra a continuación y tiene comentarios detallados.
El ritmo ha sido un poco rápido recientemente. Cuando tengas tiempo, puedes envolver esto
import java.io.ioException; import java.net.uri; import java.net.urisyntaxException; import org.apache.hadoop.conf.configuration; import og.apache.hadoop.fs.blocklocation; import.apache.hadoop.fs.filestatus; org.apache.hadop.fs.fs.fessystem; org.apache.hadoop.fs.filesystem; import org.apache.hadoop.fs.fileutil; importar org.apache.hadoop.fs.path; importar org.apache.hadoop.hdfs.distributedFilesystem; import org.apache.hadoop.hdfs.protocol.datanodeinfo;
/** * Obtenga el sistema de archivos HDFS * @return * @throws ioexception * @throws urisyntaxException */public staticSyystem getFilesystem () lanza ioexception, urisyntaxexception {// leer configuración fileConfiguration conf = nuevo configuración (); // Regresar al sistema de archivos predeterminado // si se ejecuta bajo el cluster Hadoop, use este método a este método a este método a obtener el sistema de archivo. fs = filesystem.get (conf); // dirección de archivo especificada uri uri = new uri ("hdfs: // hy: 9000"); // devuelve el sistema de archivos especificado // Si está probando localmente, debe usar este método para obtener el sistema de archivos filsystem fs = filesystem.get (uri, conf); devuelve fs;}/*** Crear directorio de archivos* @trepection* mkdir () lanza la excepción {// get File System Systemystem fs = getFilesSystem (); // Crear directorio de archivos fs.mkdirs (nueva ruta ("hdfs: // hy: 9000/hy/weibo")); // liberar recursos fs.close ();}/*** Delete orety orden Directory* @throws Exception*/Public static void RMDIR () Excepción {// Obtener el sistema de archivos del sistema de archivos fs = getFilesSystem (); // Eliminar archivos o directorio de archivos fs.delete (new Path ("hdfs: // hy: 9000/hy/weibo"), true); // liberar recursos fs.close ();}/*** Obtenga todos los archivos en el directorio* @throws*/public void void excepción () excepción () ()) (). FileSystem fs = getFilesystem (); // enumere el contenido del directorio filestatus [] status = fs.listStatus (nueva ruta ("hdfs: // hy: 9000/hy/")); // Obtenga todas las rutas de archivo en la ruta del directorio [] ListedPaths = fileutil.stat2paths (estado); // bucle cada archivo para (listado ruta: ListedPaths) {System.out.println (Path);} // libera el recurso fs.close ();}/** * cargue el archivo en hdfs * @throws excepción */public static void copytohdfs () lanza excepción {// Obtener archivos de archivo de archivo fs = getFilesystem (); // La ruta de archivo de origen es la ruta de Linux SRCPPATH SRCPATH Ruta ("/home/hadoop/temp.jar"); // Si necesita probar en Windows, debe cambiarla a la ruta en Windows, por ejemplo, e: //temp.jarpath srcpath = nueva ruta ("e: //temp.jar"); // ruta de destino dstpath = new rath ("hdfs: // hy: 9000/hy/weibo"; fs.CopyFromLocalFile (srcpath, dstpath); // libera el recurso fs.close ();}/*** Descargue el archivo de hdfs* @throws excepción*/public static void getFile () lanza excepción {// get archivessystemystem fs = getFilesSystem (); // Fuente de la ruta de archivo SRCPATH = new New = new New Ruta ("hdfs: // hy: 9000/hy/weibo/temp.jar"); // La ruta predeterminada, el valor predeterminado es Linux // Si se prueba en Windows, debe cambiar a la ruta en Windows, como C: // User/Andy/Desktop/Path dstpath = nueva ruta ("D: //"); // Descargar el archivo Fs.CopyTolocalfile (srcats (srcats, nueva ruta ("d: //"); // Descargar el archivo fs.copytolocalfile (srcpath, srcath, srcat dstpath); // libera el recurso fs.close ();}/*** Obtener información sobre los puntos de clúster HDFS* @throws Exception*/public static void gethdfsnodes () lanza excepción {// obtener archivos del sistema de archivos fs = getFilesSystem (); // obtiene el sistema distribuido distributedFilesystem hdfs = ((((se distribuye distribuye) (obtiene fessystem)/obtenga el sistema de archivos distribuido hdfs = (((se distribuya) (obtenga fessystem)/obtenga el sistema de archivos distribuido hdfs = (((se distribuya) (obtenga el sistema distribuido). nodos dataNodeInfo [] dataNodeStats = hdfs.getDatanodeStats (); // bucle traversal para (int i = 0; i <dataNodeStats.length; i ++) {System.out.Println ("DataNote_" + i + "_name:" + DatanodeStats [i] .gethostName (); fs.close ();}/*** Encuentre la ubicación de un archivo en el clúster HDFS* @throws Exception*/public static void getFilelocal () lanza excepción {// get de archivos del sistema de archivos fs = getFilesystem (); // ruta de archivo ruta = nueva ruta ("HDFS: // hy: 9000/hy/weibo/Temp.Jar") fileStatus = fs.getFilestatus (ruta); // Obtenga la lista de ubicación de bloque de archivos BlockLocation [] blockLocations = fs.getFileBlockLocations (fileStatus, 0, filestatus.getLen ()); // información de bloque de salida de bucle para (int i = 0; i <blocklocations.length; i ++) {string [] hosts = = blocklocations [i] .gethosts (); system.out.println ("block_" + i + "_location:" + hosts [0]);} // libera el recurso fs.close ();}Lo anterior es todo el contenido de este artículo sobre el método de acceso de la API Java HDFS. Espero que sea útil para todos. Los amigos interesados pueden continuar referiéndose a otros temas relacionados en este sitio. Si hay alguna deficiencia, deje un mensaje para señalarlo. ¡Gracias amigos por su apoyo para este sitio!