`

hadoop hdfs常用操作类

 
阅读更多
    import java.io.IOException; 
    import java.util.ArrayList; 
    import java.util.List; 
    import org.apache.hadoop.conf.Configuration; 
    import org.apache.hadoop.fs.BlockLocation; 
    import org.apache.hadoop.fs.FSDataInputStream; 
    import org.apache.hadoop.fs.FSDataOutputStream; 
    import org.apache.hadoop.fs.FileStatus; 
    import org.apache.hadoop.fs.FileSystem; 
    import org.apache.hadoop.fs.Path; 
    import org.apache.hadoop.hdfs.DistributedFileSystem; 
    import org.apache.hadoop.hdfs.protocol.DatanodeInfo; 
    import org.apache.hadoop.io.IOUtils; 
    public class HDFS_File { 
        //read the file from HDFS 
        public void ReadFile(Configuration conf, String FileName){ 
          try{ 
                FileSystem hdfs = FileSystem.get(conf); 
                FSDataInputStream dis = hdfs.open(new Path(FileName)); 
                IOUtils.copyBytes(dis, System.out, 4096, false);  
                 dis.close(); 
            }catch (IOException e) { 
                // TODO Auto-generated catch block 
                e.printStackTrace(); 
            } 
        } 
        //copy the file from HDFS to local 
        public void GetFile(Configuration conf, String srcFile, String dstFile){ 
            try { 
                FileSystem hdfs = FileSystem.get(conf); 
                  Path srcPath = new Path(srcFile); 
                  Path dstPath = new Path(dstFile); 
                  hdfs.copyToLocalFile(true,srcPath, dstPath); 
            }catch (IOException e) { 
                // TODO Auto-generated catch block 
                e.printStackTrace(); 
            } 
        } 
        //copy the local file to HDFS 
        public void PutFile(Configuration conf, String srcFile, String dstFile){ 
        try { 
              FileSystem hdfs = FileSystem.get(conf); 
              Path srcPath = new Path(srcFile); 
              Path dstPath = new Path(dstFile); 
              hdfs.copyFromLocalFile(srcPath, dstPath); 
            } catch (IOException e) { 
                // TODO Auto-generated catch block 
                e.printStackTrace(); 
            } 
        } 
        //create the new file 
        public FSDataOutputStream CreateFile(Configuration conf, String FileName){ 
        try { 
              Configuration config = new Configuration(); 
              FileSystem hdfs = FileSystem.get(config); 
              Path path = new Path(FileName); 
              FSDataOutputStream outputStream = hdfs.create(path); 
              return outputStream; 
            } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
            } 
            return null; 
        } 
        //rename the file name 
        public boolean ReNameFile(Configuration conf, String srcName, String dstName){ 
        try { 
                Configuration config = new Configuration(); 
                FileSystem hdfs = FileSystem.get(config); 
                Path fromPath = new Path(srcName); 
                Path toPath = new Path(dstName); 
                boolean isRenamed = hdfs.rename(fromPath, toPath); 
                return isRenamed; 
            }catch (IOException e) { 
                // TODO Auto-generated catch block 
                e.printStackTrace(); 
            } 
            return false; 
        } 
        //delete the file 
        // tyep = true, delete the directory 
        // type = false, delece the file 
        public boolean DelFile(Configuration conf, String FileName, boolean type){ 
            try { 
                  Configuration config = new Configuration(); 
                  FileSystem hdfs = FileSystem.get(config); 
                  Path path = new Path(FileName); 
                  boolean isDeleted = hdfs.delete(path, type); 
                  return isDeleted; 
            }catch (IOException e) { 
                // TODO Auto-generated catch block 
                e.printStackTrace(); 
            } 
            return false; 
        } 
        //Get HDFS file last modification time 
        public long GetFileModTime(Configuration conf, String FileName){ 
        try{ 
                  Configuration config = new Configuration(); 
                  FileSystem hdfs = FileSystem.get(config); 
                  Path path = new Path(FileName); 
                  FileStatus fileStatus = hdfs.getFileStatus(path); 
                  long modificationTime = fileStatus.getModificationTime(); 
                  return modificationTime; 
            }catch(IOException e){ 
                e.printStackTrace(); 
            } 
            return 0; 
        } 
        //checke if a file  exists in HDFS 
        public boolean CheckFileExist(Configuration conf, String FileName){ 
        try{ 
                Configuration config = new Configuration(); 
                  FileSystem hdfs = FileSystem.get(config); 
                  Path path = new Path(FileName); 
                  boolean isExists = hdfs.exists(path); 
                  return isExists; 
            }catch(IOException e){ 
                e.printStackTrace(); 
            } 
            return false; 
        } 
        //Get the locations of a file in the HDFS cluster 
        public List<String []> GetFileBolckHost(Configuration conf, String FileName){ 
            try{ 
                  List<String []> list = new ArrayList<String []>(); 
                  Configuration config = new Configuration(); 
                  FileSystem hdfs = FileSystem.get(config); 
                  Path path = new Path(FileName); 
                  FileStatus fileStatus = hdfs.getFileStatus(path); 
         
                  BlockLocation[] blkLocations = hdfs.getFileBlockLocations(fileStatus, 0, fileStatus.getLen()); 
                   
                  int blkCount = blkLocations.length; 
                  for (int i=0; i < blkCount; i++) { 
                    String[] hosts = blkLocations[i].getHosts(); 
                    list.add(hosts); 
                   } 
                  return list; 
                }catch(IOException e){ 
                    e.printStackTrace(); 
                } 
                return null; 
        } 
        //Get a list of all the nodes host names in the HDFS cluster 
        public String[] GetAllNodeName(Configuration conf){ 
            try{ 
                  Configuration config = new Configuration(); 
                  FileSystem fs = FileSystem.get(config); 
                  DistributedFileSystem hdfs = (DistributedFileSystem) fs; 
                  DatanodeInfo[] dataNodeStats = hdfs.getDataNodeStats(); 
                  String[] names = new String[dataNodeStats.length]; 
                  for (int i = 0; i < dataNodeStats.length; i++) { 
                      names[i] = dataNodeStats[i].getHostName(); 
                  } 
                  return names; 
            }catch(IOException e){ 
                e.printStackTrace(); 
            } 
            return null; 
        } 
    } 











    import java.io.IOException; 
    import java.util.Date; 
    import java.util.List; 
    import org.apache.hadoop.conf.Configuration; 
    import org.apache.hadoop.fs.FSDataOutputStream; 
     
    public class File_Operation { 
        public static void main(String args[]){ 
            Configuration conf = new Configuration(); 
            HDFS_File file = new HDFS_File(); 
            //print all the node name 
            String[] host_name = file.GetAllNodeName(conf); 
            for (int i = 0; i<host_name.length; i++) 
            { 
                System.out.println("the host name:"+host_name); 
            } 
            //create the file 
            String File_Name = "my_test"; 
            FSDataOutputStream fs = file.CreateFile(conf, File_Name); 
            if (fs != null){ 
                try { 
                    fs.close(); 
                } catch (IOException e) { 
                    // TODO Auto-generated catch block 
                    e.printStackTrace(); 
                } 
                System.out.println(File_Name+"create OK"); 
            } 
            else{ 
                System.out.println(File_Name+"create fail"); 
            } 
            //check the file exists 
            if (file.CheckFileExist(conf, File_Name) == true){ 
                System.out.println(File_Name+"the file exists"); 
            } 
            else{ 
                System.out.println(File_Name+"the file not exists"); 
            } 
            //delete the file 
            if (file.DelFile(conf, File_Name, false) == true){ 
                System.out.println(File_Name+"the file delete"); 
            } 
            else{ 
                System.out.println(File_Name+"the file not delete"); 
            } 
            //copy the file to HDFS 
            String srcFile = "/home/jackydai/my"; 
            String ToFile = "/home/jackydai/my11"; 
            String dstFile = "/user/jackydai/my"; 
            file.PutFile(conf, srcFile, dstFile); 
            System.out.println("copy file ok!"); 
            //check the file last modfiy time 
            long mod_time = file.GetFileModTime(conf, dstFile); 
            Date d = new Date(mod_time); 
            System.out.println("the modefile time"+d); 
            //get the locations of a file in HDFS 
            List<String []> list = file.GetFileBolckHost(conf, dstFile); 
            for (int i = 0; i < list.size(); i++){ 
                for(int j = 0; j < list.get(i).length; j++){ 
                    System.out.println("the bolck host name:"+list.get(i)[j]); 
                } 
            } 
            System.out.println("host name over!"); 
            //read the file 
            file.ReadFile(conf, dstFile); 
            System.out.println("read over!"); 
            //copy the file to local 
            file.GetFile(conf, dstFile, ToFile); 
            System.out.println("copy ok"); 
        } 
    } 
分享到:
评论

相关推荐

    实验二:熟悉常用的HDFS操作

    A.2实验二:熟悉常用的HDFS操作 本实验对应第4章的内容。 A.2.1 实验目的 (1)理解 HDFS在Hadoop体系结构中的角色。(2)熟练使用HDFS操作常用的 Shell命令。(3)熟悉HDFS操作常用的Java API。 A.2.2 实验平台 (1)操作...

    数据科学导论实验报告 实验2:熟悉常用的HDFS操作

    数据科学导论 实验2:熟悉常用的HDFS操作 1. 编程实现以下指定功能,并利用 Hadoop 提供的 Shell 命令完成相同任务: 2. 编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream...

    hadoop详细视频教程

    01_hadoop_hdfs1分布式文件系统01 02_hadoop_hdfs1分布式文件系统02 03_hadoop_hdfs1分布式文件系统03 04_hadoop_hdfs1分布式文件系统04 05_hadoop_hdfs1分布式文件系统05 06_hadoop_hdfs1分布式文件系统06 07_...

    springmvc+hadoop+maven实现文件上传至hdfs

    本实例依托于springmvc框架,采用maven作为jar包管理仓库,通过引用hadoop相关jar包,编写了hdfs操作工具类,能够在web端实现文件远程上传至hdfs。

    高可用性的HDFS:Hadoop分布式文件系统深度实践

    第1章 HDFS HA及解决方案 1.1 HDFS系统架构 1.2 HA定义 1.3 HDFS HA原因分析及应对措施 1.3.1 可靠性 1.3.2 可维护性 1.4 现有HDFS HA解决方案 1.4.1 Hadoop的元数据备份方案 1.4.2 Hadoop的SecondaryNameNode方案 ...

    第二章 HDFS的Shell操作.pptx

    HDFS的Shell操作,bin/hadoop fs 具体命令 OR bin/hdfs dfs 具体命令 dfs是fs的实现类等等。

    4、HDFS-java操作类HDFSUtil及junit测试(HDFS的常见操作以及HA环境的配置)

    4、HDFS-java操作类HDFSUtil及junit测试(HDFS的常见操作以及HA环境的配置) 网址:https://blog.csdn.net/chenwewi520feng/article/details/130334620 本文编写了java对HDFS的常见操作,并且均测试通过。 其功能...

    hadoop-hdfs:Hadoop分布式文件系统hdfs代码分析

    hadoop-hdfs Hadoop分布式文件系统hdfs代码分析目录介绍Datanode-数据块基本结构主要介绍了HDFS中第二关系块结构,数据块到数据中断的映射关系。退役-中断退款主要介绍了数据异步下线取消机制。INode-文件目录结构...

    hdfs源码.zip

    第1章 HDFS 1 1.1 HDFS概述 1 1.1.1 HDFS体系结构 1 1.1.2 HDFS基本概念 2 1.2 HDFS通信协议 4 1.2.1 Hadoop RPC接口 4 ...5.5 HDFS常用工具 549 5.5.1 FsShell实现 550 5.5.2 DFSAdmin实现 552

    人工智能-hadoop-基于hdfs spark的视频非结构化数据计算

    现有的大数据平台Hadoop、Spark等都在处理文本数据方面具有很好的支持,并且效率也经过了各种优化,所以在利用分布式框架来处理日志类数据,工作难度往往是如何对这些数据进行逻辑上的处理。但是对于非结构化数据,...

    Hadoop从入门到上手企业开发

    035 详解HDFS API之FileSystem方式基本操作一 036 HDFS Java API 两种方式介绍及使用URL API详解一 037 使用URL API详解二 038 使用HDFS FileSystem API 详解 039 HDFS文件系统读写流程及HDFS API两种方式读取文件 ...

    Hadoop分布式文件系统操作类的使用

    编写程序,实现在hdfs分布式文件系统平台上创建目录。编写任务,实现通过本地文件上传到hdfs分布式文件系统平台,如将本地文件/root/HelloWorld.txt文件上传到hdfs平台/javaApi目录下

    Hadoop权威指南 第二版(中文版)

     本书从Hadoop的缘起开始,由浅入深,结合理论和实践,全方位地介绍Hadoop这一高性能处理海量数据集的理想工具。全书共16章,3个附录,涉及的主题包括:Haddoop简介;MapReduce简介;Hadoop分布式文件系统;Hadoop...

    Hadoop权威指南(中文版)2015上传.rar

    第1章 初识Hadoop 数据!数据! 数据存储与分析 与其他系统相比 关系型数据库管理系统 网格计算 志愿计算 1.3.4 Hadoop 发展简史 Apache Hadoop和Hadoop生态圈 第2章 关于MapReduce 一个气象数据集 数据的格式 使用...

    Hadoop实战中文版

    3.1 HDFS 文件操作 3.1.1 基本文件命令 3.1.2 编程读写HDFS 3.2 剖析MapReduce 程序 3.2.1 Hadoop数据类型 3.2.2 Mapper 3.2.3 Reducer 3.2.4 Partitioner:重定向Mapper输出 3.2.5 Combiner:本地reduce ...

    Apress - Pro Hadoop

     MapReduce主要在org.apache.hadoop.mapred,实现提供的接口类,并完成节点通信(可以不是hadoop通信接口),就能进行MapReduce运算。  目前这个项目还在进行中,还没有到达1.0版本,和Google系统的差距也非常大...

    Hadoop大数据开发实战-教学大纲.pdf

    二、 课程的任务 通过本课程的学习,使学生学会搭建Hadoop完全分布式集群,掌握HDFS的原理和基础操作,掌握MapReduce原理架构、MapReduce程序的编写。为将来从事大数据挖掘研究工作以及后续课程的学习奠定基础。

    hadoop+hive+mapreduce的java例子

     Hive提供了jdbc驱动,使得我们可以用Java代码来连接Hive并进行一些类关系型数据库的sql语句查询等操作。同关系型数据库一样,我们也需要将Hive的服务打开;在Hive 0.11.0版本之前,只有HiveServer服务可用,你得在...

    基于Hadoop的数据挖掘算法研究与实现

    聚类分析是数据挖掘中应用极为广泛的一类,本文主要研究了聚类分析的起源、定义和样本相似距离,并详细介绍了聚类分析的常用方法。 三、基于Hadoop平台,设计并实现了数据挖掘系统,.,系统封装了底层的Hadoop系统接口,...

    Hadoop实战中文版.PDF

    30第3章 Hadoop组件 313.1 HDFS文件操作 313.1.1 基本文件命令 323.1.2 编程读写HDFS 353.2 剖析MapReduce程序 373.2.1 Hadoop数据类型 393.2.2 Mapper 403.2.3 Reducer 413.2.4 Partitioner:...

Global site tag (gtag.js) - Google Analytics