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文件
在里面添加一个属性
意思就是不检查权限。 然后在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表示的是递归删除