thrift 文件如下

namespace java com.pera.file.transform

struct  File{

    1:string path ,

    2:string content,

}



service FileTransform {

    bool exists(1:string path),

    void mkdir(1:string path ),

    void store(1:File file),

    set<string> ls(1:string path),

    bool isDirectory(1:string path),

    string getParentFile(1:string path),

    void createNewFile(1:string path),

    void deleteFile(1:string path),

    void deleteOnExit(1:string path),

    bool isFile(1:string path),

    void rename(1:string srcPath ,2:string destPath),

    string getName(1:string path),

    i64 totalSpace(1:string path),

    i64 usedSpace(1:string path),

    string read(1:string path)

}

客户端:

public class FileTransFormPair {

    

    private TTransport transport ;

    private Client  client  ;

    

    public FileTransFormPair(){}

    

    public FileTransFormPair( TTransport transport ,Client  client ){

        this.transport=transport ;

        this.client =client;

    }

    

    public TTransport getTransport() {

        return transport;

    }

    public void setTransport(TTransport transport) {

        this.transport = transport;

    }

    public Client getClient() {

        return client;

    }

    public void setClient(Client client) {

        this.client = client;

    }

}



public class FileTransFormClient implements Iface {



    public static  String SERVER_IP = "localhost";

    public static  int SERVER_PORT = 8090;

    public static  int TIMEOUT = 30000;

    

    public FileTransFormClient(String host,int port ,int timeout){

        SERVER_IP=host;

        SERVER_PORT=port;

        TIMEOUT=timeout;

    }

    

    private static   FileTransFormPair getClient() throws TTransportException{

        TTransport transport = new TSocket(SERVER_IP, SERVER_PORT, TIMEOUT);

        TProtocol protocol = new TBinaryProtocol(transport);

        Client  client =new Client(protocol);

        transport.open();

        return new FileTransFormPair(transport, client);

    }

    

    @Override

    public boolean exists(String path) throws TException {

        boolean result =false;

        FileTransFormPair parameter =getClient();

        result =parameter.getClient().exists(path);

        parameter.getTransport().close();

        return result;

    }





    @Override

    public void mkdir(String path) throws TException {

        FileTransFormPair parameter =getClient();

        parameter.getClient().mkdir(path);

        parameter.getTransport().close();

        

    }





    @Override

    public void store(File file) throws TException {

        FileTransFormPair parameter =getClient();

        parameter.getClient().store(file);

        parameter.getTransport().close();

        

    }





    @Override

    public Set<String> ls(String path) throws TException {

        FileTransFormPair parameter =getClient();

        Set<String> result =parameter.getClient().ls(path);

        parameter.getTransport().close();

        return result;

    }





    @Override

    public boolean isDirectory(String path) throws TException {

        boolean result =false ;

        FileTransFormPair parameter =getClient();

        result =parameter.getClient().isDirectory(path);

        parameter.getTransport().close();

        return result;

    }





    @Override

    public String getParentFile(String path) throws TException {

        FileTransFormPair parameter =getClient();

        String result =parameter.getClient().getParentFile(path);

        parameter.getTransport().close();

        return result;

    }





    @Override

    public void createNewFile(String path) throws TException {

        FileTransFormPair parameter =getClient();

        parameter.getClient().createNewFile(path);

        parameter.getTransport().close();

    }





    @Override

    public void deleteFile(String path) throws TException {

        FileTransFormPair parameter =getClient();

        parameter.getClient().deleteFile(path);

        parameter.getTransport().close();

        

    }





    @Override

    public void deleteOnExit(String path) throws TException {

        FileTransFormPair parameter =getClient();

        parameter.getClient().deleteOnExit(path);

        parameter.getTransport().close();

        

    }





    @Override

    public boolean isFile(String path) throws TException {

        FileTransFormPair parameter =getClient();

        boolean result =parameter.getClient().isFile(path);

        parameter.getTransport().close();

        return result ;

    }





    @Override

    public void rename(String srcPath, String destPath) throws TException {

        FileTransFormPair parameter =getClient();

        parameter.getClient().rename(srcPath, destPath);

        parameter.getTransport().close();

        

    }





    @Override

    public String getName(String path) throws TException {

        FileTransFormPair parameter =getClient();

        String result =parameter.getClient().getName(path);

        parameter.getTransport().close();

        return result;

    }





    @Override

    public long totalSpace(String path) throws TException {

        FileTransFormPair parameter =getClient();

        long result =parameter.getClient().totalSpace(path);

        parameter.getTransport().close();

        return result;

    }





    @Override

    public long usedSpace(String path) throws TException {

        FileTransFormPair parameter =getClient();

        long result =parameter.getClient().usedSpace(path);

        parameter.getTransport().close();

        return result;

    }



    @Override

    public String read(String path) throws TException {

        FileTransFormPair parameter =getClient();

        String result =parameter.getClient().read(path);

        parameter.getTransport().close();

        return result;

    }

}

服务端:

public class ThriftServer {



    public static  int SERVER_PORT ;



    private static TServer server =null;

    

    private  static Log  LOG =LogFactory.getLog(ThriftServer.class);

    

    public void init(){

        SERVER_PORT = 9090;

        LOG.info("init the thriftServer");

    }

    

    public void start() throws TTransportException {

        TProcessor tprocessor = new FileTransform.Processor<FileTransform.Iface>(

                new FileStoreService());

        TServerSocket serverTransport = new TServerSocket(SERVER_PORT);

        TThreadPoolServer.Args ttpsArgs = new TThreadPoolServer.Args(

                serverTransport);

        ttpsArgs.processor(tprocessor);

        ttpsArgs.protocolFactory(new TBinaryProtocol.Factory());

        server = new TThreadPoolServer(ttpsArgs);

        server.serve();

        LOG.info("start the thriftServer");

    }



    public void stop() {

        if(null!=server){

            server.stop();

            LOG.info("stop the thriftServer");

        }

    }



    public static void main(String[] args) {

        ThriftServer server =new ThriftServer();

        server.init();

        try {

            server.start();

        } catch (TTransportException e) {

            e.printStackTrace();

        }

    }



}

public class FileStoreService implements Iface{



    private Configuration getConfiguration(){

        Configuration  conf =new Configuration();

        Properties  pro = new Properties();

        try {

            pro.load(new FileInputStream(new File("conf/filetransform-site.properties")));

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

//        conf.set("dfs.default.name", pro.getProperty("dfs.default.name"));

        

        return conf;

    }

    @Override

    public boolean exists(String path) throws TException {

        Configuration  conf =getConfiguration();

        FileSystem fs=null;

        try {

            fs = FileSystem.get(conf);

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }

        boolean exists =false ;

        try {

            exists  = fs.exists(new Path(path));

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }finally{

            if(null!=fs){

                try {

                    fs.close();

                } catch (IOException e) {

                    throw new TException(e.getMessage());

                }

            }

        }

        return exists;

    }



    @Override

    public void mkdir(String path) throws TException {

        Configuration  conf =getConfiguration();

        FileSystem fs=null;

        try {

            fs = FileSystem.get(conf);

            fs.mkdirs(new Path(path));

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }finally{

            if(null!=fs){

                try {

                    fs.close();

                } catch (IOException e) {

                    throw new TException(e.getMessage());

                }

            }

        }

    }



    @Override

    public void store(com.pera.file.transform.gen.File file) throws TException {

        String path =file.getPath();

        String content =file.getContent();

        Configuration conf  =getConfiguration();

        FileSystem  fs =null;

        FSDataOutputStream out=null;

        try {

            Path p =new Path(path);

            fs =FileSystem.get(conf);

            if(!fs.exists(p.getParent())){

                throw new TException( path+" is not exists");

            }

            out =fs.create(p);

            if(null!=content){

                byte   [] tmp =content.getBytes();

                out.write(tmp);

                out.flush();

                out.close();

            }

        } catch (Exception e) {

            throw new TException(e.getMessage());

        }finally{

            try {

                if(null!=out){

                    out.close();

                }

            } catch (IOException e) {

                throw new TException(e.getMessage());

            }

            try {

                if(null!=fs){

                    fs.close();

                }

            } catch (IOException e) {

                throw new TException(e.getMessage());

            }

            

        }

    }



    @Override

    public Set<String> ls(String path) throws TException {

        Configuration  conf =getConfiguration();

        FileSystem fs =null;

        Set<String>  result =new HashSet<String>();

        try {

            fs=FileSystem.get(conf);

            FileStatus   [] fstatus=fs.listStatus(new Path(path));

            int length =fstatus==null?0:fstatus.length;

            for (int i = 0; i < length; i++) {

                String url =fstatus[i].getPath().toString();

                result.add(url);

            }

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }finally{

            if(null!=fs){

                try {

                    fs.close();

                } catch (IOException e) {

                    throw new TException(e.getMessage());

                }

            }

        }

        return result;

    }



    

    @Override

    @SuppressWarnings("deprecation")

    public boolean isDirectory(String path) throws TException {

        Configuration conf =getConfiguration();

        FileSystem fs =null;

        boolean result =false ;

        try {

            fs =FileSystem.get(conf);

            result =fs.isDirectory(new Path(path));

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }finally{

            if(null!=fs){

                try {

                    fs.close();

                } catch (IOException e) {

                    throw new TException(e.getMessage());

                }

            }

        }

        return result;

    }



    @Override

    public String getParentFile(String path) throws TException {

        Path parentPath =new Path(path).getParent();

        return parentPath.toString();

    }



    @Override

    public void createNewFile(String path) throws TException {

        Configuration conf =getConfiguration();

        FileSystem fs =null;

        try {

            fs =FileSystem.get(conf);

            fs.createNewFile(new Path(path));

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }finally{

            if(null!=fs){

                try {

                    fs.close();

                } catch (IOException e) {

                    throw new TException(e.getMessage());

                }

            }

        }

    }



    @Override

    public void deleteFile(String path) throws TException {

        Configuration conf =getConfiguration();

        FileSystem fs =null;

        try {

            fs =FileSystem.get(conf);

            fs.deleteOnExit(new Path(path));

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }finally{

            if(null!=fs){

                try {

                    fs.close();

                } catch (IOException e) {

                    throw new TException(e.getMessage());

                }

            }

        }

        

    }



    @Override

    public void deleteOnExit(String path) throws TException {

        Configuration conf =getConfiguration();

        FileSystem fs =null;

        try {

            fs =FileSystem.get(conf);

            fs.deleteOnExit(new Path(path));

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }finally{

            if(null!=fs){

                try {

                    fs.close();

                } catch (IOException e) {

                    throw new TException(e.getMessage());

                }

            }

        }

        

    }



    @Override

    public boolean isFile(String path) throws TException {

        

        boolean isFile =false ;

        

        Configuration conf =getConfiguration();

        FileSystem fs =null;

        try {

            fs =FileSystem.get(conf);

            isFile =fs.isFile(new Path(path));

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }finally{

            if(null!=fs){

                try {

                    fs.close();

                } catch (IOException e) {

                    throw new TException(e.getMessage());

                }

            }

        }

        return isFile;

    }



    @Override

    public void rename(String srcPath, String destPath) throws TException {

        Configuration conf =getConfiguration();

        FileSystem fs =null;

        try {

            fs =FileSystem.get(conf);

            fs.rename(new Path(srcPath), new Path(destPath));

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }finally{

            if(null!=fs){

                try {

                    fs.close();

                } catch (IOException e) {

                    throw new TException(e.getMessage());

                }

            }

        }

        

    }



    @Override

    public String getName(String path) throws TException {

        String name  =new Path(path).getName();

        

        return name;

    }



    @Override

    public long totalSpace(String path) throws TException {

        Configuration conf =getConfiguration();

        FileSystem fs =null;

        long length =0 ;

        try {

            fs =FileSystem.get(conf);

            length =fs.getFileStatus(new Path(path)).getLen();

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }finally{

            if(null!=fs){

                try {

                    fs.close();

                } catch (IOException e) {

                    throw new TException(e.getMessage());

                }

            }

        }

        return length;

    }



    @Override

    public long usedSpace(String path) throws TException {

        Configuration conf =getConfiguration();

        FileSystem fs =null;

        long used =0 ;

        try {

            fs =FileSystem.get(conf);

            used =fs.getUsed();

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }finally{

            if(null!=fs){

                try {

                    fs.close();

                } catch (IOException e) {

                    throw new TException(e.getMessage());

                }

            }

        }

        return used;

    }

    

    @Override

    public String read(String path) throws TException {

        Configuration conf =getConfiguration();

        FileSystem fs =null;

        String result   ="" ;

        try {

            fs =FileSystem.get(conf);

            FSDataInputStream  in =fs.open(new Path(path));

            int length =in.available();

            byte  [] tmp = new byte  [length] ;

            in.readFully(tmp);

            result  =new String(tmp);

        } catch (IOException e) {

            throw new TException(e.getMessage());

        }finally{

            if(null!=fs){

                try {

                    fs.close();

                } catch (IOException e) {

                    throw new TException(e.getMessage());

                }

            }

        }

        return result;

    }

}

thrift实现HDFS文件操作的更多相关文章

  1. Hadoop之HDFS文件操作常有两种方式(转载)

    摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行     Java API HD ...

  2. hadoop的hdfs文件操作实现上传文件到hdfs

    这篇文章主要介绍了使用hadoop的API对HDFS上的文件访问,其中包括上传文件到HDFS上.从HDFS上下载文件和删除HDFS上的文件,需要的朋友可以参考下hdfs文件操作操作示例,包括上传文件到 ...

  3. HDFS文件操作(命令行)

    HDFS是一种分布式文件系统,为MapReduce这种框架下的海量数据分布式处理而设计. Hadoop之HDFS文件操作常有两种方式,一种是命令行方式,即Hadoop提供了一套与Linux文件命令类似 ...

  4. Hadoop之HDFS文件操作

    摘要:Hadoop之HDFS文件操作常有两种方式.命令行方式和JavaAPI方式.本文介绍怎样利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件    命令行     Java API HD ...

  5. JAVA API 实现hdfs文件操作

    java api 实现hdfs 文件操作会出现错误提示: Permission denied: user=hp, access=WRITE, inode="/":hdfs:supe ...

  6. HDFS文件操作

    hadoop装好后,文件系统中没有任何目录与文件 1. 创建文件夹 hadoop fs -mkdir -p /hkx/learn 参数-p表示递归创建文件夹 2. 浏览文件 hadoop fs -ls ...

  7. eclipse 对 hadoop1.2.1 hdfs 文件操作

    package com.hdfs; import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io ...

  8. Hadoop HDFS文件操作

    1.创建目录 import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.ha ...

  9. [bigdata] 使用Flume hdfs sink, hdfs文件未关闭的问题

    现象: 执行mapreduce任务时失败 通过hadoop fsck -openforwrite命令查看发现有文件没有关闭. [root@com ~]# hadoop fsck -openforwri ...

随机推荐

  1. 安卓6.0新特性在Fragment申请运行时权限

    今天在Fragment申请权限时代码如下: public void getContacts(){ int flag = ActivityCompat.checkSelfPermission(getAc ...

  2. qsort函数应用大全

    七种qsort排序方法 <本文中排序都是采用的从小到大排序> 一.对int类型数组排序  int num[100]; Sample: int cmp ( const void *a , c ...

  3. Android View框架总结(二)View焦点

    请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52263256 前言:View框架写到第六篇,发现前面第二篇竟然没有, ...

  4. 2.1、Android Studio通过Lint提升你的代码

    为了测试你的Android应用符合功能需求.最重要的是确保你的代码没有结构性问题.结构差的代码影响你的Android应用的可靠性,让你的代码难以维护.比如,如果你的XML资源文件包含未使用的明明空间, ...

  5. UNIX网络编程——进程间通信概述

    一.顺序程序与并发程序特征 顺序程序特征 顺序性封闭性:(运行环境的封闭性)确定性可再现性 并发程序特征 共享性并发性随机性 二.进程互斥 1.由于各进程要求共享资源,而且有些资源需要互斥使用,因此各 ...

  6. 1.QT中播放视频,录音程序的编写

     1  通过process的方式播放视频 T22VideoPlayer.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gu ...

  7. 06 intent flag三种属性

    flag属性可以看做和写在清单文件中的启动模式一样 但效果有一定差别 1,FLAG_ACTIVITY_SINGLE_TOP:启动模式里的SingleTop一致  如果X启动模式设置为FLAG_ACTI ...

  8. [C]simple code of count input lines,words,chars

    This is a simple C program which can count input lines, words and chars. But the number of words are ...

  9. Java进阶(三十七)java 自动装箱与拆箱

    Java进阶(三十七)java 自动装箱与拆箱 前言 这个是jdk1.5以后才引入的新的内容.java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为 ...

  10. Android程序崩溃异常收集框架

    最近在写Android程序崩溃异常处理,完成之后,稍加封装与大家分享. 我的思路是这样的,在程序崩溃之后,将异常信息保存到一个日志文件中,然后对该文件进行处理,比如发送到邮箱,或发送到服务器. 所以, ...