二、三、HDFS命令和Java API(包括第二次作业和第三次作业)

    xiaoxiao2025-08-09  6

    步骤:1.安装JDK→2.安装Eclipse→3.安装Maven→4. Eclipse里配置Maven (下载Windows版本,在Windows里安装使用。)

    第一步、安装JDK。如有需要请参考上一篇博客文章

    第二步、安装Eclipse。

    ①官网下载Eclipse安装包eclipse-inst-win64:https://www.eclipse.org/downloads/ ②运行安装包,选择Eclipse IDE for Java Developers,开始安装,过程可能较慢。

    第三步、安装Maven。

    ① Maven官网http://maven.apache.org/download.cgi,选择最近的镜像,选择Maven压缩包apache-maven-3.6.0-bin.tar.gz开始下载。 ②解压Maven压缩包apache-maven-3.6.0-bin.tar.gz,解压后的文件夹\apache-maven-3.6.0,将其考入自定义路径,如C:\eclipse\apache-maven-3.6.0。 ③配置Maven的环境变量,Path添加Maven的\bin的安装路径,cmd命令行运行mvn -v,查看是否成功安装配置。

    第四步、Eclipse里配置Maven。

    ①修改settings.xml 在安装所在文件夹\apache-maven-3.6.0下面,新建\repository文件夹,作为Maven本地仓库。 在文件settings.xml里添加 < localRepository>C:\eclipse\apache-maven-3.6.0\repository</ localRepository>。 ②配置Maven的installation和User Settings 【Preferences】→【Maven】→【Installations】配置Maven安装路径,【User Settings】配置settings.xml的路径。 ③添加pom.xml依赖 依赖(Maven Repository: hadoop)所在网址:https://mvnrepository.com/tags/hadoop ,找到对应版本的三个依赖(如下),拷贝至pom.xml的< project>与</ project>之间,保存之后自动生成Maven Dependencies。

    <dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.7.3</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.7.3</version> </dependency> </dependencies>

    编写java程序: HDFSDownload.java中代码:

    package hdfs.file; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import java.io.*; public class HDFSDownload { //声明输入流、输出流 private static InputStream input; private static OutputStream output; public static void main(String[] args) throws IOException { //设置root权限 System.setProperty("HADOOP_USER_NAME", "root"); //创建HDFS连接对象client Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://bigdata01:9000"); FileSystem client = FileSystem.get(conf); //创建本地文件的输出流 output = new FileOutputStream("d:\\bbout.txt"); //创建HDFS的输入流 input = client.open(new Path("/aadir/aaout.txt")); //写文件到HDFS byte[] buffer = new byte[1024]; int len = 0; while ((len = input.read(buffer)) != -1) { output.write(buffer, 0, len); } //防止输出数据不完整 output.flush(); //使用工具类IOUtils上传或下载 //IOUtils.copy(input, output); //关闭输入输出流 input.close(); output.close(); System.out.println("成功!"); } }

    HDFSFilelfExist.java中代码:

    package hdfs.file; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.IOException; public class HDFSFilelfExist { public static void main(String[] args) throws IOException { //设置root权限 System.setProperty("HADOOP_USER_NAME", "root"); //创建HDFS连接对象client Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://bigdata01:9000"); FileSystem client = FileSystem.get(conf); //声明文件对象 String fileName = "/aadir/aaout.txt"; //判断文件是否存在 if (client.exists(new Path(fileName))) { System.out.println("文件存在!"); } else { System.out.println("文件不存在!"); } } }

    HDFSMKdir.java中代码:

    package hdfs.file; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.IOException; public class HDFSMKdir { public static void main(String[] args) throws IOException { //设置root权限 System.setProperty("HADOOP_USER_NAME", "root"); //创建HDFS连接对象client Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://bigdata01:9000"); FileSystem client = FileSystem.get(conf); //在HDFS的根目录下创建aadir client.mkdirs(new Path("/aadir")); //关闭连接对象 client.close(); //输出"successful!" System.out.println("successfully!"); } }

    HDFSUpload.java中代码:

    package hdfs.file; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class HDFSUpload { //声明输入流、输出流 private static InputStream input; private static OutputStream output; public static void main(String[] args) throws IOException { //设置root权限 System.setProperty("HADOOP_USER_NAME", "root"); //创建HDFS连接对象client Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://bigdata01:9000"); FileSystem client = FileSystem.get(conf); //创建本地文件的输入流 input = new FileInputStream("D:\\aa.txt"); //创建HDFS的输出流 output = client.create(new Path("/aadir/aaout.txt")); //写文件到HDFS byte[] buffer = new byte[1024]; int len = 0; while ((len = input.read(buffer)) != -1) { output.write(buffer, 0, len); } //防止输出数据不完整 output.flush(); //使用工具类IOUtils上传或下载 //IOUtils.copy(input, output); //关闭输入输出流 input.close(); output.close(); System.out.println("成功!"); } }

    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 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下载文件到本地

    通过以上命令可检查运行结果。

    最新回复(0)