设为首页 收藏本站
查看: 438|回复: 0

[经验分享] hadoop hdfs常用操作类

[复制链接]

尚未签到

发表于 2016-12-6 10:20:29 | 显示全部楼层 |阅读模式
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.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 = dataNodeStats.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");  
        }  
    }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-310411-1-1.html 上篇帖子: Hadoop core 源码-classification包 下篇帖子: Hadoop 相关节点说明
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表