格式化HDFS 命令:[email protected]:Hadoop$bin/hadoop namenode -format 启动HDFS 命令:[email protected]:hadoop$bin/start-dfs.sh 列出HDFS上的文件 命令:[email protected]:hadoop$bin/hadoop dfs -ls 使用hadoop API public List<String[]>GetFileBolckHost(Configuration conf, String FileName) { try { List<String[]> list = new ArrayList<String[]>(); FileSystem hdfs = FileSystem.get(conf); 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; } 在HDFS上创建目录 命令:[email protected]:hadoop$bin/hadoop dfs -mkdir /文件名 使用hadoop API // 在HDFS新建文件 public FSDataOutputStream CreateFile(Configuration conf, StringFileName) { try { FileSystem hdfs = FileSystem.get(conf); Path path = new Path(FileName); FSDataOutputStream outputStream = hdfs.create(path); return outputStream; } catch (IOException e) { e.printStackTrace(); } return null; } 上传一个文件到HDFS 命令:[email protected]:Hadoop$ bin/hadoopdfs -put 文件名/user/yourUserName/ 使用hadoop API // 上传文件到HDFS public voidPutFile(Configuration conf, String srcFile, String dstFile) { try { FileSystem hdfs =FileSystem.get(conf); Path srcPath = newPath(srcFile); Path dstPath = newPath(dstFile); hdfs.copyFromLocalFile(srcPath, dstPath); } catch (IOExceptione) { e.printStackTrace(); } } 从 HDFS 中导出数据 命令:[email protected]:hadoop$ bin/hadoopdfs -cat foo 使用hadoop API // 从HDFS读取文件 public voidReadFile(Configuration conf, String FileName) { try { FileSystem hdfs =FileSystem.get(conf); FSDataInputStreamdis = hdfs.open(new Path(FileName)); IOUtils.copyBytes(dis, System.out, 4096, false); dis.close(); } catch (IOExceptione) { e.printStackTrace(); } } HDFS 的关闭 命令:[email protected]:hadoop$bin/stop-dfs.sh HDFS全局状态信息 命令:bin/Hadoop dfsadmin -report 我们可以得到一份全局状态报告。这份报告包含了HDFS集群的基本信息,当然也有每台机器的一些情况。 以上讲的都是本地操作HDFS,都是基于在Ubuntu下并配置有hadoop环境下对HDFS的操作,作为客户端也可以在window系统下远程的对 HDFS进行操作,其实原理基本上差不多,只需要集群中namenode对外开放的IP和端口,就可以访问到HDFS /** * 对HDFS操作 * @author yujing * */ public class Write { public static voidmain(String[] args) { try { uploadTohdfs(); readHdfs(); getDirectoryFromHdfs(); } catch(FileNotFoundException e) { e.printStackTrace(); } catch (IOExceptione) { e.printStackTrace(); } } public static voiduploadTohdfs() throws FileNotFoundException, IOException { String localSrc ="D://qq.txt"; String dst ="hdfs://192.168.1.11:9000/usr/yujing/test.txt"; InputStream in = newBufferedInputStream(new FileInputStream(localSrc)); Configuration conf =new Configuration(); FileSystem fs =FileSystem.get(URI.create(dst), conf); OutputStream out =fs.create(new Path(dst), new Progressable() { public voidprogress() { System.out.println("."); } }); System.out.println("上传文件成功"); IOUtils.copyBytes(in,out, 4096, true); } /** 从HDFS上读取文件 */ private static voidreadHdfs() throws FileNotFoundException, IOException { String dst ="hdfs://192.168.1.11:9000/usr/yujing/test.txt"; Configuration conf =new Configuration(); FileSystem fs =FileSystem.get(URI.create(dst), conf); FSDataInputStreamhdfsInStream = fs.open(new Path(dst)); OutputStream out = newFileOutputStream("d:/qq-hdfs.txt"); byte[] ioBuffer = newbyte[1024]; int readLen =hdfsInStream.read(ioBuffer); while (-1 != readLen){ out.write(ioBuffer, 0, readLen); readLen =hdfsInStream.read(ioBuffer); } System.out.println("读文件成功"); out.close(); hdfsInStream.close(); fs.close(); } /** * 以append方式将内容添加到HDFS上文件的末尾;注意:文件更新,需要在hdfs-site.xml中添<property><name>dfs. *append.support</name><value>true</value></property> */ private static voidappendToHdfs() throws FileNotFoundException, IOException { String dst ="hdfs://192.168.1.11:9000/usr/yujing/test.txt"; Configuration conf =new Configuration(); FileSystem fs =FileSystem.get(URI.create(dst), conf); FSDataOutputStream out= fs.append(new Path(dst)); int readLen ="zhangzk add by hdfs java api".getBytes().length; while (-1 != readLen){ out.write("zhangzk add by hdfs java api".getBytes(), 0,readLen); } out.close(); fs.close(); } /** 从HDFS上删除文件 */ private static voiddeleteFromHdfs() throws FileNotFoundException, IOException { String dst ="hdfs://192.168.1.11:9000/usr/yujing"; Configuration conf =new Configuration(); FileSystem fs =FileSystem.get(URI.create(dst), conf); fs.deleteOnExit(newPath(dst)); fs.close(); } /** 遍历HDFS上的文件和目录 */ private static voidgetDirectoryFromHdfs() throws FileNotFoundException, IOException { String dst ="hdfs://192.168.1.11:9000/usr/yujing"; Configuration conf =new Configuration(); FileSystem fs =FileSystem.get(URI.create(dst), conf); FileStatus fileList[]= fs.listStatus(new Path(dst)); int size =fileList.length; for (int i = 0; i <size; i++) { System.out.println("文件名name:" + fileList.getPath().getName() + "文件大小/t/tsize:" +fileList.getLen()); } fs.close(); } } 我们可以通过http://主机IP:50030就可以查看集群的所有信息,也可以查看到自己上传到HDFS上的文件。 更多精彩内容请关注:http://bbs.superwu.cn 关注超人学院微信二维码: |
HDFS的文件操作
时间: 2024-10-10 08:20:47
HDFS的文件操作的相关文章
HDFS的文件操作(Java代码实现)
对于hdfs的操作,可以使用hadoop fs 的命令,同时也可以使用java来进行操作,下面的一段小例子,就是简单介绍了java操作hdfs的文件等...... package com.hdfs.nefu; /** * @auther XD **/ import java.io.FileInputStream; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import
HDFS读写文件操作
1 运行环境说明 1.1 硬软件环境 1.2 机器网络环境 2 书面作业1:编译并运行<权威指南>中的例3.2 2.1 书面作业1内容 2.2 运行代码 2.3 实现过程 2.3.1 创建代码目录 2.3.2 建立例子文件上传到hdfs中 2.3.3 配置本地环境 2.3.4 编写代码 2.3.5 编译代码 2.3.6 使用编译代码读取文件 3 书面作业2:写入HDFS成为一个新文件 3.1 书面作业2内容
Hadoop第4周练习—HDFS读写文件操作
1 运行环境说明... 3 1.1 硬软件环境... 3 1.2 机器网络环境... 3 2 书面作业1:编译并运行<权威指南>中的例3.2. 3 2.1 书面作业1内容... 3 2.2 运行代码... 3 2.3 实现过程... 4 2.3.1 创建代码目录... 4 2.3.2 建立例子文件上传到hdfs中... 4 2.3.3 配置本地环境... 5 2.3.4 编写代码... 5 2.3.5 编译代码... 6
【hadoop】使用javaAPI对hdfs进行文件操作
前提:1.搭建好hadoop伪分布式环境:2.安装好eclipse: 注:修改 /etc/hosts 添加 “本机IP hadoop01” , 那么代码中创建hdfs文件系统的时候的URI hdfs://hadoop01:9000 相当于 hdfs://hadoop服务器ip(例如:192.168.1.1XX):9000 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOExcep
在eclipse上的hdfs的文件操作
参考:http://dblab.xmu.edu.cn/blog/hadoop-build-project-using-eclipse/?tdsourcetag=s_pcqq_aiomsg: http://dblab.xmu.edu.cn/blog/290-2/ 一.安装eclipse 附:centos7制作eclipse启动器: 原文地址:https://www.cnblogs.com/zhaochenguang/p/9735217.html
读Hadoop3.2源码,深入了解java调用HDFS的常用操作和HDFS原理
本文将通过一个演示工程来快速上手java调用HDFS的常见操作.接下来以创建文件为例,通过阅读HDFS的源码,一步步展开HDFS相关原理.理论知识的说明. 说明:本文档基于最新版本Hadoop3.2.1 目录 一.java调用HDFS的常见操作 1.1.演示环境搭建 1.2.操作HDFS 1.3.java文件操作常用方法 二.深入了解HDFS写文件的流程和HDFS原理 2.1.Hadoop3.2.1 源码下载及介绍 2.2.文件系统:FileSystem 2.3.HDFS体系结构:namenod
Hadoop之HDFS文件操作
摘要:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式.本文介绍如何利用这两种方式对HDFS文件进行操作. 关键词:HDFS文件 命令行 Java API HDFS是一种分布式文件系统,为MapReduce这种框架下的海量数据分布式处理而设计. Hadoop之HDFS文件操作常有两种方式,一种是命令行方式,即Hadoop提供了一套与Linux文件命令类似的命令行工具:另一种是JavaAPI,即利用Hadoop的Java库,采用编程的方式操作HDFS的文件.
Hadoop学习笔记0002——HDFS文件操作
说明:Hadoop之HDFS文件操作常有两种方式,命令行方式和JavaAPI方式. 方式一:命令行方式 Hadoop文件操作命令形式为:hadoop fs -cmd <args> 说明:cmd是具体的文件操作命令,<args>是一组数目可变的参数. Hadoop最常用的文件操作命令,包括添加文件和目录.获取文件.删除文件等. 1 添加文件和目录 HDFS有一个默认工作目录/usr/$USER,其中$USER是你的登录用户名,作者的用户名是root.该目录不能自动创建,需要执行m
HDFS基本命令行操作及上传文件的简单API
一.HDFS基本命令行操作: 1.HDFS集群修改SecondaryNameNode位置到hd09-2 (1)修改hdfs-site.xml <configuration> //配置元数据存储位置 <property> <name>dfs.namenode.name.dir</name> <value>/root/hd/dfs/name</value> </property> //配置数据存储位置 <property