第六周之Hadoop学习(六)

继续上周开启telnet的过程,这个过程发现win10上运行不了telnet的命令

原因大概在于没有开启telnet服务,从网上下载好telent服务端,安装后继续尝试是否能在win10上使用hadoop

安装完成后,现在在CMD命令中能够连通telnet

接着开启,eclipse 进入上周的上传过程

hadoop上传实验成功!!!

留下了感动了泪花

以下功能,通过网址:https://blog.csdn.net/HcJsJqJSSM/article/details/83418976的教程参考学习

1.实现删除目录的功能

进入网址中查看是否存在相应的目录

网址中存在相应的目录

测试成功将其封装为一个方法:

 

2.删除文件功能

 

测试成功

目标网址中相应目录被删除

将其封装为一个方法:

3.实现上传文件

首先在d盘里面创建一个hadoop.txt的文件,然后在文件里面写上12315的内容,该内容总共5个字节

接着在main里面写上下列的代码

执行程序

执行后,在对应位置能够看到相应的文件

如图:

将其封装为一个方法:

4.实现下载文件

在main中写入下列的函数:

 

 将刚刚上传的hadoop.txt文件下载到d盘的hadoop1.txt中

执行结果:

将其封装为一个方法:

至此,hadoop的在java上基本操作的被封装成一个简单的类了。

其代码如下:

package hadoop;


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class HDFSDemo {

    public final String hd_uri = "hdfs://192.168.57.128:9000";
    public final String hd_owner = "hadoop";
    
    public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException  {

//        HDFSDemo down=new HDFSDemo();
        
    }
    public void downloadFile(String path,String source) throws IOException, InterruptedException, URISyntaxException
    {
        // 使用root权限,URI就是之前hadoop配置的路径.9000端口.
        FileSystem fs=getFileSystem();
        // 实现HDFS内的文件下载至本地
        InputStream in=fs.open(new Path(path));
        // 下载到本地,保存后的名称是hadoop.txt
        OutputStream out=new FileOutputStream(source);
        // 按照字节的方式复制.buffersize是4K,写完后返回true.
        IOUtils.copyBytes(in, out, 4096, true);
        //关闭流
        fs.close();
    }
    public void updateFile(String source,String path) throws IOException, InterruptedException, URISyntaxException
    {
        // 使用root权限,URI就是之前hadoop配置的路径.9000端口.
        FileSystem fs=getFileSystem();
        // 实现上传文件,首先是读取本地的文件
        InputStream in=new FileInputStream(source);
        // 上传文件到HDFS的指定目录下.
        OutputStream out=fs.create(new Path(path));
        // 按照字节的方式复制.buffersize是4K,写完后返回true
        IOUtils.copyBytes(in, out, 4096, true);
        // 关闭流
        fs.close();
    }
    
    
    public boolean deleteFileSystem(String path) throws IOException, InterruptedException, URISyntaxException
    {
        //删除目录
        // 使用root权限,URI就是之前hadoop配置的路径.9000端口.
        FileSystem fs=getFileSystem();
        // 删除一个文件夹,这里从HDFS的根目录写起的,如果是单个文件就是false,目录下面有目录就true.
        @SuppressWarnings("deprecation")
        Boolean flag=fs.delete(new Path(path));
        // 关闭 
        fs.close();
        return flag;
    }
    
    public boolean createFileSystem(String path) throws IOException, InterruptedException, URISyntaxException
    {
        //创建目录
        // 使用root权限,URI就是之前hadoop配置的路径.9000端口.
        FileSystem fs=getFileSystem();
        // 创建一个文件夹,这里从HDFS的根目录写起的.
        Boolean flag=fs.mkdirs(new Path(path));
        //关闭流
        fs.close();
        return flag;
    }
    
    public FileSystem getFileSystem() throws IOException, InterruptedException, URISyntaxException
    {
        FileSystem fs=FileSystem.get(new URI(hd_uri), new Configuration(),hd_owner);
        return fs;
    }

}

 

posted on 2019-08-18 17:41  Halone  阅读(202)  评论(0编辑  收藏  举报