第六周之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; } }