HDFS文件系统基本文件命令、编程读写HDFS
基本文件命令:
格式为:hadoop fs -cmd <args>
cmd的命名通常与unix对应的命令名相同。例如,文件列表命令: hadoop fs -ls
1、添加目录和文件
HDFS有一个默认的工作目录 /user/$USER,其中$USER是你的登录用户名。不过目录不会自动建立,我们现在用mkdir建立它,我使用的是chen作为用户名。
hadoop fs -mkdir /user/chen
(hadoop的mkdir命令会自动创建父目录,类似于带-p的unix命令)
我们现在放本地文件系统的一个文件进去。
hadoop fs -put example.txt .
最后一个参数是句点,相当于放入了默认的工作目录,等价于 hadoop fs -put example.txt /user/chen
当你把文件放入HDFS上后,你就可以运行Hadoop程序来处理它。
2、检索文件
get命令与put命令相反,它从HDFS复制文件回到本地文件系统。
hadoop fs -get example.txt .
复制到本地的当前工作目录中。
另一种是显示数据,用cat
hadoop fs -cat example.txt
3、删除文件
rm命令
hadoop fs -rm example.txt
也可以用来删除空目录
编程读写HDFS
利用HDFS给我们提供的API,我们同样可以访问它。
在Hadoop中用作文件操作的主类位于org.apache.hadoop.fs软件包中。包括常见的open、read、write、close。Hadoop文件的API起点是FileSystem类,这是一个与文件系统交互的抽象类,我们通过调用factory的方法FileSystem.get(Configuration conf)来取得所需的FileSystem实例,如下我们可以获得与HDFS接口的FileSystem对象:
Configuration conf = new Configuration();
FileSystem hdfs = FileSystem.get(conf);//获得HDFS的FileSystem对象
如果我们要实现HDFS与本地文件系统的交互,我们还需要获取本地文件系统的FileSystem对象
FileSystem local = FileSystem.getLocal(conf);//获得本地文件系统的FileSystem对象
以下代码讲解了一个例子,我们开发一个PutMerge程序,用于合并本地文件后放入HDFS,因为大文件HDFS处理起来比较容易,所以这个程序经常会在以后的开发中用到
| import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class PutMerge { public static void main(String[] args) throws IOException { Configuration conf = new Configuration(); FileSystem hdfs =FileSystem.get(conf); //获得HDFS文件系统的对象 FileSystem local = FileSystem.getLocal(conf);//获得本地文件系统的对象 Path inputDir = new Path(args[0]);//设定输入目录 Path hdfsFile = new Path(args[1]);//设定输出目录 try{ FileStatus[] inputFiles = local.listStatus(inputDir);//FileStatus的listStatus()方法获得一个目录中的文件列表 FSDataOutputStream out = hdfs.create(hdfsFile);//生成HDFS输出流 for(int i = 0; i < inputFiles.length; i ++){ System.out.println(inputFiles[i].getPath().getName()); FSDataInputStream in = local.open(inputFiles[i].getPath());//打开本地输入流 byte[] buffer = new byte[256]; int bytesRead = 0; while((bytesRead = in.read(buffer))>0){ out.write(buffer,0,bytesRead);//通过一个循环来写入 } in.close(); } out.close(); }catch (IOException e) { e.printStackTrace(); } } |
Hadoop:第一个程序操作HDFS
http://www.cnblogs.com/fora/archive/2011/07/20/2111870.html
HDFS文件系统基本文件命令、编程读写HDFS的更多相关文章
- 搭建maven开发环境测试Hadoop组件HDFS文件系统的一些命令
1.PC已经安装Eclipse Software,测试平台windows10及Centos6.8虚拟机 2.新建maven project 3.打开pom.xml,maven工程项目的pom文件加载以 ...
- Maven下从HDFS文件系统读取文件内容
需要注意以下几点 1.所以的包都是org.apache.hadoop.XXX 2.三个配置文件要放到指定文件夹中等待文件系统读取(src/main/resources):core-site.xml h ...
- HDFS dfsclient写文件过程 源码分析
HDFS写入文件的重要概念 HDFS一个文件由多个block构成.HDFS在进行block读写的时候是以packet(默认每个packet为64K)为单位进行的.每一个packet由若干个chunk( ...
- Hadoop Shell命令(基于linux操作系统上传下载文件到hdfs文件系统基本命令学习)
Apache-->hadoop的官网文档命令学习:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html FS Shell 调用文件系统( ...
- 大数据【二】HDFS部署及文件读写(包含eclipse hadoop配置)
一 原理阐述 1' DFS 分布式文件系统(即DFS,Distributed File System),指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.该系统架构 ...
- hadoop系列二:HDFS文件系统的命令及JAVA客户端API
转载请在页首明显处注明作者与出处 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6 ...
- Ubuntu本地文件上传至HDFS文件系统出现的乱码问题及解决方案
1.问题来源及原因 用shell命令上传到HDFS中之后出现中文乱码,在shell命令窗口查看如图: 在eclipse中的文件HDFS查看工具查看如图: 原因:上传至HDFS文件系统的文本文件(这里是 ...
- hue上配置HA的hdfs文件(注意,HA集群必须这样来配置才能访问hdfs文件系统)
按照正常方式配置,发现无论如何也访问不了hdfs文件系统,因为我们是HA的集群,所以不能按照如下配置 将其改为 除此之外,还需要配置hdfs文件的 接着要去hadoop的目录下启动httpfs.sh ...
- HDFS分布式文件系统的常用命令行操作
一.HDFS的客户端种类 1.网页形式 =>用于测试 网址为你的namenode节点的ip+50070的端口号,如: 192.168.50.128:50070 2.命令行形式 =>用于测 ...
随机推荐
- 测试cnblogs是否存在链接引用的bug
如果来源页弹出了一个对话框,或者跳转到了本页面,说明来源页面存在链接引用的bug
- Eureka Web UI URL(eureka显示主界面路径设定)
http://stackoverflow.com/questions/30200988/spring-cloud-with-eureka-eureka-web-ui-url ************* ...
- javascript中强制类型转换
javascript开发过程中,强制类型转换一般发生在条件判断和==运算符.其他情况,发生的类型转换(与这两种情况也是基本类似,属于万变不离其宗的范畴),暂不讨论. == 双等运算符 考虑代码: a ...
- php并发处理
最近某个项目用php生成文件,但是由于文件量太大,单个进程生成需要很长的时间,所以想并发进行处理. 网上查找了下相关的资料,php本身是没有多线程的概念的,那就只能用多进程了,再找资料却是 ...
- php递归创建目录
/** * 递归创建目录 * @param [string] $path [创建的目录] * @return [type] [description] */ function mk_Dir($path ...
- 【转】[转]order by 1是什么意思?
[转][转]order by 1是什么意思? ORDER BY 1 表示 所select 的字段按第一个字段排序 ORDER BY ASC应该没有这样写法,ORDER BY 后面不是字段就是数字, 可 ...
- 一个library,相当于一个rootfolder
picLib.RootFolder.SubFolders 操作library的方式: SPList oList = web.Lists[ListName ...
- [压缩解压缩] SharpZip--压缩、解压缩帮助类
里面有三个类都是用于压缩和解压缩的.大家看下图片 看下面代码吧 /// <summary> /// 类说明:SharpZip /// 编 码 人:苏飞 /// 联系方式:361983679 ...
- 三步走起 提升 iOS 审核通过率 下篇
根据2015年的数据统计情况,并结合<苹果应用商店审核指南>,互娱 iOS 预审组通过细分将预审工作划为3大模块:客户端资源检查.应用内容检查和提审资源检查. 在上一篇文章中,Bugly ...
- 三种C#.net生成静态页面的方法
ASP.NET生成静态页面方法主要有三种 第一种方法:向服务器的动态页面发送请求,获取页面的html代码.这种方法缺点显而易见:速度慢.另外如果请求的动态页面有验证控件的话,返回的html页面却无 ...