HDFS命令和java API
实验步骤
- 搭建Hadoop伪分布式模式、或者完全分布式模式
- Windows里安装配置JDK+Eclipse+Maven
- 在Eclipse里新建Maven Project,新建包,新建class
- 编程上述4个Java程序
- 虚拟机的namenode主机上,启动Hadoop
- 在eclipse里运行上述4个Java程序
- 使用hdfs的shell命令查看运行结果
- 使用web console查看运行结果
Linux的shell命令
常用的linux的shell命令:
cd /aa 转到/aa目录
pws 显示当前目录
ll /aa 显示/aa目录
mkdir /aa 新建/aa目录
rm /aa/out.txt 删除/aa目录下的out.txt文件
cat /aa/out.txt 查看/aa目录下的out.txt文件的内容
vi /aa/out.txt 编辑/aa目录下的out.txt文件的内容
ifconfig 查看IP地址
ip addr 查看IP地址
hdfs的shell命令
hdfs的shell命令,有三种形式,用前面两个。
hdfs dfs √
hadoop fs √
hadoop dfs ×
常用的hdfs的shell命令:
hdfs dfs -ls / 查看hdfs根目录下文件和目录
hdfs dfs -ls -R / 查看hdfs根目录下包括子目录在内的所有文件和目录
hdfs dfs -mkdir /aa/bb 在hdfs的/aa目录下新建/bb目录
hdfs dfs -rm -r /aa/bb 删除hdfs的/aa目录下的/bb目录
hdfs dfs -rm /aa/out.txt 删除hdfs的/aa目录下的out.txt文件
hdfs dfs -put anaconda-ks.cfg /aa 把本地文件上传到hdfs
hdfs dfs -copyFromLocal a.txt / 把本地文件上传到hdfs
hdfs dfs -get /bb.txt bbcopy.txt 从hdfs下载文件到本地
hdfs dfs -copyToLocal /bb.txt bbcopy.txt 从hdfs下载文件到本地
1、获取 HDFS 文件系统
public static FileSystem getFileSystem() throws IOException, URISyntaxException{
//1、获取配置文件
Configuration conf = new Configuration();
// FileSystem fs = FileSystem.get(conf);//集群环境下直接获取默认文件系统
//2、指定的文件系统地址
URI path = new URI(“hdfs://test:9000”);
//3、返回指定的文件系统地址 ------本地测试使用此方法
FileSystem fs = FileSystem.get(path, conf);
//4、此处关闭文件系统流会报错,导致之后的操作无法进行
/**
* fs.close();
* Exception in thread “main” java.io.IOException: Filesystem closed
at org.apache.hadoop.hdfs.DFSClient.checkOpen(DFSClient.java:795)
at org.apache.hadoop.hdfs.DFSClient.primitiveMkdir(DFSClient.java:2743)
at org.apache.hadoop.hdfs.DFSClient.mkdirs(DFSClient.java:2724)
at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:870)
at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:866)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.mkdirsInternal(DistributedFileSystem.java:866)
at org.apache.hadoop.hdfs.DistributedFileSystem.mkdirs(DistributedFileSystem.java:859)
at org.apache.hadoop.fs.FileSystem.mkdirs(FileSystem.java:1817)
at com.dajiangtai.hdfsJavaAPI.FileTest.mkdir(FileTest.java:33)
at com.dajiangtai.hdfsJavaAPI.FileTest.main(FileTest.java:46)
*
* */
return fs;
}
如果放到 hadoop 集群上面运行,获取文件系统可以直接使用 FileSystem.get(conf)。
2、创建文件目录