首页 > 代码库 > windows下eclipse+hadoop2

windows下eclipse+hadoop2

windowseclipse+hadoop2.4开发手册

1.解压下载的hadoop2.4,到任意盘符,例如D:\hadoop-2.4.0

2.设置环境变量

①新建系统变量,如下所示。

②将新建的HADOOP_HOME变量“%HADOOP_HOME%\bin;”加入到PATH变量里,如下图。

3.hadoop服务器下的hadoop目录下etc/hadoop目录下的以下四个文件拷贝到自己开发的电脑相应目录下,如下图所示。

4.如果hadoop服务器中上述四个文件配置的是机器名,请在开发的电脑中改为ip地址,例如下图。

5.hadoop目录下的所有jar包拷贝到自己的项目中,例如下图所示。

①将“D:\hadoop-2.4.0\share\hadoop”目录下及其子目录中所有jar以及子目录下的lib目录下的jar拷贝到自己的项目中。

②我一共拷贝了117jar,如下图所示。

 

6.hadoop服务器上的hadoop目录下的etc/hadoop目录下的以下两个文件拷贝到项目中的src目录下,同样将文件内容中的机器名改为ip

7.HDFS操作类

其中hdfspath例如:"hdfs://192.168.1.103:9000/input/";//要保证你的hdfs空间中有此路径            

 

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStream;

importjava.io.OutputStream;

importjava.net.URI;

import java.util.ArrayList;

 

importorg.apache.hadoop.conf.Configuration;

importorg.apache.hadoop.fs.FSDataInputStream;

importorg.apache.hadoop.fs.FSDataOutputStream;

importorg.apache.hadoop.fs.FileStatus;

importorg.apache.hadoop.fs.FileSystem;

importorg.apache.hadoop.fs.Path;

importorg.apache.hadoop.io.IOUtils;

importorg.apache.hadoop.util.Progressable;

 

public classHDFSOperation {

         private     Configurationconf;

         private FileSystem fs;

        

         /**

          * @Title: HDFSOperation

          * @Description 初始化配置

          * @author cpthack

          * @see    初始化配置

          * @return 对参数的说明

          * @param  对方法中某参数的说明

          * @example 方法使用例子

          * */

         public HDFSOperation() throwsIOException{

                   conf = new Configuration();

                   fs = FileSystem.get(conf);

         }

 

         /**

          * @Title: upLoad

          * @Description 上传文件

          * @author cpthack

          * @see    上传文件

          * @return 对参数的说明

          * @param  in:文件输入流;hdfsPath:保存在云端的文件路径

          * @example 方法使用例子

          * */

         public boolean upLoad(InputStream in,String hdfsPath){

                   Path p = new Path(hdfsPath);

                   try{

                            if(fs.exists(p)){

                                     System.out.println("文件已经存在");

                                     returnfalse;

                            }

                      //获得hadoop系统的连接

           FileSystem fs =FileSystem.get(URI.create(hdfsPath),conf);

                      //out对应的是Hadoop文件系统中的目录

                      OutputStream out = fs.create(newPath(hdfsPath));

                      IOUtils.copyBytes(in, out, 4096,true);//40964k字节

           in.close();  

                   }catch(Exception e){

                            e.printStackTrace();

                   }

                   return true;

         }

        

         /**

          * @Title: upLoad

          * @Description 下载文件

          * @author cpthack

          * @see    下载文件

          * @return 对参数的说明

          * @param  localPath:文件保存在本地的路径;hdfsPath:文件存在云端的路径

          * @example 方法使用例子

          * */

         @SuppressWarnings("resource")

         public boolean downLoad(StringhdfsPath,String localPath ){

                   Path path = newPath(hdfsPath);

                   try {

                            if(!fs.exists(path)){

                                     System.out.println("云端文件不存在");

                                     returnfalse;

                            }

                   FileSystem hdfs =FileSystem.get(conf);  

        Path dstPath = newPath(localPath); 

        hdfs.copyToLocalFile(true,path,dstPath); 

                   } catch (Exception e) {                        

                            e.printStackTrace();

                            return false;

                   }

                   return true;

                  

         }

        

          public boolean downFromCloud(StringhdfsPath,String srcFileName){

                // 实例化一个文件系统

                FileSystem fs;

                            try {

                                     fs =FileSystem.get(URI.create(hdfsPath), conf);

                                     // 读出流

                                     FSDataInputStreamHDFS_IN = fs.open(new Path(hdfsPath));

                                     // 写入流

                                     OutputStreamOutToLOCAL = new FileOutputStream(srcFileName);

                                     // InputStrteam 中的内容通过IOUtilscopyBytes方法复制到OutToLOCAL

                                     IOUtils.copyBytes(HDFS_IN,OutToLOCAL, 1024, true);

                return true;

                            } catch (IOExceptione) {

                                     e.printStackTrace();

                                     returnfalse;

                            }

            }

        

         /**

          * @Title: deletePath

          * @Description 删除文件

          * @author cpthack

          * @see    删除文件

          * @return 对参数的说明

          * @param  hdfsPath:文件存在云端的路径

          * @example 方法使用例子

          * */

         public boolean deletePath(StringhdfsPath){

                   try {

                            fs.delete(newPath(hdfsPath), true);

                   } catch (IOException e) {                    

                            e.printStackTrace();

                            return false;

                   }

                   return true;

         }

        

         /**

          * @Title: getFileList

          * @Description 获取某个目录下所有文件

          * @author cpthack

          * @see    获取某个目录下所有文件

          * @return 对参数的说明

          * @param  hdfsPath:存在云端的文件夹

          * @example 方法使用例子

          * */

         public ArrayList<FileBean>getFileList(String hdfsPath){

                   Path path = newPath(hdfsPath);

                   ArrayList<FileBean>fileList = new ArrayList<FileBean>();

                   FileStatus[] status;

                   try {

                            status =fs.listStatus(path);

                            for(FileStatus fs :status){

                                     fileList.add(newFileBean(fs));

                            }

                   } catch (Exception e) {                        

                            e.printStackTrace();

                   }

                   return fileList;

                  

         }

        

    //创建文件夹

    public boolean  mkdir(String dir){

        FileSystem fs;

                   try {

                            fs =FileSystem.get(conf);

                            fs.mkdirs(newPath(dir));

                            fs.close();

                   } catch (IOException e) {

                            e.printStackTrace();

                            return false;

                   }

        return true;

    }

   

    /*删除文件夹*/

    @SuppressWarnings("deprecation")

         public boolean deleteDir(String dir){

            

        FileSystem fs;

                   try {

                            fs =FileSystem.get(conf);

                            fs.delete(newPath(dir));

                            fs.close();

                   } catch (IOException e) {

                            e.printStackTrace();

                            return false;

                   }

        return true;

    }

}



来自为知笔记(Wiz)