Hadoop编程调用HDFS.docx
- 文档编号:3005265
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:12
- 大小:17.70KB
Hadoop编程调用HDFS.docx
《Hadoop编程调用HDFS.docx》由会员分享,可在线阅读,更多相关《Hadoop编程调用HDFS.docx(12页珍藏版)》请在冰豆网上搜索。
Hadoop编程调用HDFS
Hadoop编程调用HDFS
前言
HDFS全称Hadoop分步文件系统(HadoopDistributedFileSystem),是Hadoop的核心部分之一。
要实现MapReduce的分步式算法时,数据必需提前放在HDFS上。
因此,对于HDFS的操作就变得非常重要。
Hadoop的命令行,提供了一套完整命令接口,就像Linux命令一样方便使用。
不过,有时候我们还需要在程序中直接访问HDFS,我们可以通过API的方式进行HDFS操作。
目录
1.系统环境
2.ls操作
3.rmr操作
4.mkdir操作
5.copyFromLocal操作
6.cat操作
7.copyToLocal操作
8.创建一个新文件,并写入内容
1.系统环境
Hadoop集群环境
∙LinuxUbuntu64bitServer12.04.2LTS
∙Java1.6.0_29
∙Hadoop1.1.2
如何搭建Hadoop集群环境?
请参考文章:
Hadoop历史版本安装
开发环境
▪Win764bit
▪Java1.6.0_45
▪Maven3
▪Hadoop1.1.2
▪EclipseJunoServiceRelease2
如何用Maven搭建Win7的Hadoop开发环境?
请参考文章:
用Maven构建Hadoop项目
注:
hadoop-core-1.1.2.jar,已重新编译,已解决了Win远程调用Hadoop的问题,请参考文章:
Hadoop历史版本安装
Hadooop命令行:
javaFsShell
~hadoopfs
Usage:
javaFsShell
[-ls]
[-lsr]
[-du]
[-dus]
[-count[-q]]
[-mv]
[-cp]
[-rm[-skipTrash]]
[-rmr[-skipTrash]]
[-expunge]
[-put...]
[-copyFromLocal...]
[-moveFromLocal...]
[-get[-ignoreCrc][-crc]]
[-getmerge[addnl]]
[-cat]
[-text]
[-copyToLocal[-ignoreCrc][-crc]]
[-moveToLocal[-crc]]
[-mkdir]
[-setrep[-R][-w]]
[-touchz]
[-test-[ezd]]
[-stat[format]]
[-tail[-f]]
[-chmod[-R]PATH...]
[-chown[-R][OWNER][:
[GROUP]]PATH...]
[-chgrp[-R]GROUPPATH...]
[-help[cmd]]
上面列出了30个命令,我只实现了一部分的HDFS的命令!
新建文件:
HdfsDAO.java,用来调用HDFS的API。
publicclassHdfsDAO{
//HDFS访问地址
privatestaticfinalStringHDFS="hdfs:
//192.168.1.210:
9000/";
publicHdfsDAO(Configurationconf){
this(HDFS,conf);
}
publicHdfsDAO(Stringhdfs,Configurationconf){
this.hdfsPath=hdfs;
this.conf=conf;
}
//hdfs路径
privateStringhdfsPath;
//Hadoop系统配置
privateConfigurationconf;
//启动函数
publicstaticvoidmain(String[]args)throwsIOException{
JobConfconf=config();
HdfsDAOhdfs=newHdfsDAO(conf);
hdfs.mkdirs("/tmp/new/two");
hdfs.ls("/tmp/new");
}
//加载Hadoop配置文件
publicstaticJobConfconfig(){
JobConfconf=newJobConf(HdfsDAO.class);
conf.setJobName("HdfsDAO");
conf.addResource("classpath:
/hadoop/core-site.xml");
conf.addResource("classpath:
/hadoop/hdfs-site.xml");
conf.addResource("classpath:
/hadoop/mapred-site.xml");
returnconf;
}
//API实现
publicvoidcat(StringremoteFile)throwsIOException{...}
publicvoidmkdirs(Stringfolder)throwsIOException{...}
...
}
2.ls操作
说明:
查看目录文件
对应Hadoop命令:
~hadoopfs-ls/
Found3items
drwxr-xr-x-conansupergroup02013-10-0305:
03/home
drwxr-xr-x-Administratorsupergroup02013-10-0313:
49/tmp
drwxr-xr-x-conansupergroup02013-10-0309:
11/user
Java程序:
publicvoidls(Stringfolder)throwsIOException{
Pathpath=newPath(folder);
FileSystemfs=FileSystem.get(URI.create(hdfsPath),conf);
FileStatus[]list=fs.listStatus(path);
System.out.println("ls:
"+folder);
System.out.println("==========================================================");
for(FileStatusf:
list){
System.out.printf("name:
%s,folder:
%s,size:
%d\n",f.getPath(),f.isDir(),f.getLen());
}
System.out.println("==========================================================");
fs.close();
}
publicstaticvoidmain(String[]args)throwsIOException{
JobConfconf=config();
HdfsDAOhdfs=newHdfsDAO(conf);
hdfs.ls("/");
}
控制台输出:
ls:
/
==========================================================
name:
hdfs:
//192.168.1.210:
9000/home,folder:
true,size:
0
name:
hdfs:
//192.168.1.210:
9000/tmp,folder:
true,size:
0
name:
hdfs:
//192.168.1.210:
9000/user,folder:
true,size:
0
==========================================================
3.mkdir操作
说明:
创建目录,可以创建多级目录
对应Hadoop命令:
~hadoopfs-mkdir/tmp/new/one
~hadoopfs-ls/tmp/new
Found1items
drwxr-xr-x-conansupergroup02013-10-0315:
35/tmp/new/one
Java程序:
publicvoidmkdirs(Stringfolder)throwsIOException{
Pathpath=newPath(folder);
FileSystemfs=FileSystem.get(URI.create(hdfsPath),conf);
if(!
fs.exists(path)){
fs.mkdirs(path);
System.out.println("Create:
"+folder);
}
fs.close();
}
publicstaticvoidmain(String[]args)throwsIOException{
JobConfconf=config();
HdfsDAOhdfs=newHdfsDAO(conf);
hdfs.mkdirs("/tmp/new/two");
hdfs.ls("/tmp/new");
}
控制台输出:
Create:
/tmp/new/two
ls:
/tmp/new
==========================================================
name:
hdfs:
//192.168.1.210:
9000/tmp/new/one,folder:
true,size:
0
name:
hdfs:
//192.168.1.210:
9000/tmp/new/two,folder:
true,size:
0
==========================================================
4.rmr操作
说明:
删除目录和文件
对应Hadoop命令:
~hadoopfs-rmr/tmp/new/one
Deletedhdfs:
//master:
9000/tmp/new/one
~hadoopfs-ls/tmp/new
Found1items
drwxr-xr-x-Administratorsupergroup02013-10-0315:
38/tmp/new/two
Java程序:
publicvoidrmr(Stringfolder)throwsIOException{
Pathpath=newPath(folder);
FileSystemfs=FileSystem.get(URI.create(hdfsPath),conf);
fs.deleteOnExit(path);
System.out.println("Delete:
"+fold
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Hadoop 编程 调用 HDFS
![提示](https://static.bdocx.com/images/bang_tan.gif)