Java操作Hadoop集群文件的步骤

更新时间:2024-03-04 13:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Java操作Hadoop集群文件的步骤

2016年7月19日22:31:26 Huangxin[永州职业技术学院]

大家可以到百度搜索【数据堂】,里面有很多各种行业的大数据文件

0.配置Eclipse。先把Linux里面的/usr/hadoop/lib里面的jar包。和/usr/hadoop里面的jar包全部拷贝到Windows里面的Eclipse里面(选中java工程名,然后Ctrl+V),然后选中所有的jar包右键—>【构建路径】-?【配置构建路径】

1. 关闭 linux的防火墙 Chkconfig iptables off

2. 修改linux里面的master 主机里面的 /usr/hadoop/conf里面的hdfs-site.xml文件

在里面添加一个属性 dfs.permissions

false

意思就是不检查权限。 然后在hadoop集群里面,重启集群(先stop-all.sh然后start-all.sh)关闭安全模式(hadoop dfsadmin –safemode leave) 3. 在Eclipse里面编写程序操作hadoop集群里面的文件。 ① 取文件

步骤:A:获取到HDFS配置文件

Configuration conf2 = new Configuration();

B:得到HDFS文件系统

FileSystemhdfs=FileSystem.get(newURI(\.137.200:9000\

C:读取文件

FSDataInputStream is = hdfs.open(new

Path(\

D:输出

IOUtils.copyBytes(is, System.out, 30, true); 这里要注意的问题:1.import 引包: (这里针对的是那些不能自动引包的用户)

import java.net.*;

import org.apache.hadoop.fs.*; import org.apache.hadoop.conf.*; importorg.apache.hadoop.io.IOUtils; import org.apache.hadoop.fs.Path;

importorg.apache.hadoop.hdfs.server.common.*; ② 新建文件夹

//创建文件夹

Configuration con3 = new Configuration();

// FileSystem hdfs2 = FileSystem.get(new URI(\

// Path path = new Path(\ if(!hdfs2.exists(path)) { hdfs2.mkdirs(path); } ③ 新建文件

//创建文件夹

Configuration con3 = new Configuration();

// FileSystem hdfs2 = FileSystem.get(new URI(\

// Path path = new Path(\ if(!hdfs2.exists(path)) { hdfs2.mkdirs(path); }

④ 文件的拷贝(从Windows到Hadoop集群)

//然后创建一个文件

Path path2 = new Path(\

if(!hdfs2.exists(path2)) {

hdfs2.createNewFile(path2); }

有两种方法。方法1.使用流

Configuration conf0 = new Configuration(); FileSystem hdfs0 = FileSystem.get(new URI(\

Path path = new

Path(\

//创建一个,创建该文件的输出流

FSDataOutputStream fos = hdfs0.create(path); //z在Windows上读取一个文件

FileInputStream fis = new FileInputStream(new File(\

// //

IOUtils.copyBytes(fis, fos, 30, true);

方法2.使用hdfs里面自带的copyFromLocalFile(src,dsc) Configuration conf0 = new Configuration(); FileSystem hdfs0 = FileSystem.get(new URI(\

Path path1 = new

Path(\

Path path2 = new Path(\

hdfs0.copyFromLocalFile(path2, path1); ⑤ 重命名文件

//重命名文件

Configuration conf0 = new Configuration();

FileSystem hdfs0 = FileSystem.get(new URI(\

//定位文件 //源文件

Path path = new

Path(\

//目标文件

Path path2 = new Path(\//注意了,不但可以重命名,还移动了位置

hdfs0.rename(path, path2);

⑥ 从HDFS文件系统,拷贝文件到Windows里面 方法1.

Configuration conf0 = new Configuration();

FileSystem hdfs0 = FileSystem.get(new URI(\

//定位HDFS上面文件

Path path = new Path(\//建立文件输入流(从文件里面读到HDFS里面) FSDataInputStream fis = hdfs0.open(path); //定位Windows上面的文件

File file = new File(\

//

//创建一个输出流(从HDFS写入到Windows里面)

FileOutputStream fos = new FileOutputStream(file);

//

IOUtils.copyBytes(fis, fos, 30, true);

//方法2。

Configuration conf0 = new Configuration(); FileSystem hdfs0 = FileSystem.get(new URI(\

//定位HDFS上面文件

Path path = new Path(\

//定位Windows上面的文件

Path path2 = new

Path(\

//

hdfs0.copyToLocalFile(path, path2);//现在我是子

HDFS文件系统上面,所以使用下载to

⑦ 删除文件

Configuration conf0 = new Configuration(); FileSystem hdfs0 = FileSystem.get(new URI(\

Path path = new

Path(\

hdfs0.delete(path, true);//true表示的是递归删除

本文来源:https://www.bwwdw.com/article/o85a.html

Top