赞
踩
hdfs dfs -put 源路径 目的路径
在主机里创建文件
然后上传到HDFS中
文件内容查看
hdfs dfs -cat 文件路径
文件下载
hdfs dfs -get 源文件地址 下载到的路径
查看是否下载成功
文件的移动
hdfs dfs -mv 文件路径 目的目录
文件的复制
hdfs dfs -cp 文件路径 目的目录
文件的创建
hdfs dfs -touch 文件路径
文件的追加
hdfs dfs -appendToFile 追加的内容文件路径 被追加的文件路径
在本地创建一个文件
对其进行添加操作
hdfs dfs -text 文件路径
文件删除
hdfs dfs -rm 文件路径
访问url:http://localhost:9870
就可以看到管理页面的!应该是可以的!我没试过。
附上老师的截图
Idea导入hadoop jar包
找到文件路径安装即可。
添加指定的jar文件
看到这里的jar包即可成功了。
测试代码
可以运行就行了!
编写Java代码实现功能:判断指定文件在HDFS中是否存在,若不存在,则创建该文件,若存在,则打开文件进行内容追加;
在本地创建一个文件夹用于追加使用。
import java.io.\*; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class HDFSmkdir { public static void appendToFile(Configuration conf, String localFilePath, String remoteFilePath) { Path remotePath = new Path(remoteFilePath); //传入hdfs文件路径 try( FileSystem fs = FileSystem.get(conf); FileInputStream in = new FileInputStream(localFilePath);){ //new一个文件的输入流的对象,并加入需要add的文件路径 FSDataOutputStream out = fs.append(remotePath); // 将hdfs中的文件读入 byte[] data = new byte[1024]; /\* 从输出流中读取一定数量的字节,并将其存储在缓冲区数组data中。返回: 读入缓冲区的总字节数; 如果因为已经到达流末尾而不再有数据可用,则返回 -1。 \*/ int read = -1; while((read = in.read(data)) > 0) { out.write(data,0,read); // 添加hdfs文件之中 } out.close(); // 关闭hdfs的文件 }catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { new Mkdir(); //主函数new一个Mkdir对象 } } class Mkdir{ public Mkdir(){ String filename = "/user/hadoop/input/hdfs-site.xml"; //需要添加本地内容的文件 Configuration conf = new Configuration(); // new一个配置文件的对象 conf.set("dfs.client.block.write.replace-datanode-on-failure.enable", "true"); /\* 在进行pipeline写数据(上传数据的方式)时, 如果DN或者磁盘故障,客户端将尝试移除失败的DN,然后写到剩下的磁盘。 一个结果是,pipeline中的DN减少了。这个特性是添加新的DN到pipeline。 这是一个站点范围的选项。 \*/ conf.set("dfs.client.block.write.replace-datanode-on-failure.policy","NEVER"); /\* 此属性仅在dfs.client.block.write.replace-datanode-on-failure.enable设置为true时有效。 ALWAYS: 总是添加新的DN NEVER: 从不添加新的DN DEFAULT: 设r是副本数,n是要写的DN数。在r>=3并且floor(r/2)>=n或者r>n(前提是文件是 hflushed/appended)时添加新的DN。 \*/ conf.set("fs.defaultFS", "hdfs://localhost:9000"); /\* 默认文件系统的名称。URI形式。uri's的scheme需要由(fs.SCHEME.impl)指定文件系统实现类。 uri's的authority部分用来指定host, port等。默认是本地文件系统。 HA方式,这里设置服务名,例如:hdfs://111111 HDFS的客户端访问HDFS需要此参数。 伪分布是这样的,如果是全分布的话,应该是你的映射名字不是localhost了。应该。 \*/ conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem"); try { FileSystem fs = FileSystem.get(conf); Path path = new Path(filename); if(fs.exists(path)) { System.out.println("File \""+ filename +"\" Exist!"); // 文件存在,追加内容 try { String localFilePath = "/home/zqc/add.txt"; //需要追加的文件内容的路径 HDFSmkdir.appendToFile(conf, localFilePath, filename); System.out.println("File Written Successfully!"); }catch(Exception e) { e.printStackTrace(); } } else { System.out.println("File \""+ filename +"\" Not Exist!"); fs.createNewFile(path); // 文件不存在,创建文件 System.out.println("File Created Successfully!"); } }catch(IOException e) { e.printStackTrace(); } } }
编译器终端显示没有错误。
然后在shell中cat是否添加
成功!追加成功!
编写Java代码实现功能:通过用户实时输入内容或本地文本内容完成HDFS文件写入操作,用户输入“exit”结束写入;
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.io.FileInputStream; import java.io.IOException; import java.util.Scanner; public class HDFSFileWritten { public static void appendToFile(Configuration conf, String localFilePath, String remoteFilePath) { Path remotePath = new Path(remoteFilePath); try (FileSystem fs = FileSystem.get(conf); FileInputStream in = new FileInputStream(localFilePath);) { FSDataOutputStream out = fs.append(remotePath); byte[] data = new byte[1024]; int read = -1; while ((read = in.read(data)) > 0) { out.write(data, 0, read); } out.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { new HDFSWrite(); } } class HDFSWrite { public HDFSWrite() { System.out.println("Please Choose The Way To Write"); System.out.println("1.Written On Real Time"); System.out.println("2.Written By Local File"); Scanner str = new Scanner(System.in); String s = str.nextLine(); String filename = "/user/hadoop/input/hdfs-site.xml"; Path writtenpath = new Path(filename); Configuration conf = new Configuration(); //配置信息都和上面的一样的! conf.set("dfs.client.block.write.replace-datanode-on-failure.enable", "true"); conf.set("dfs.client.block.write.replace-datanode-on-failure.policy", "NEVER"); conf.set("fs.defaultFS", "hdfs://localhost:9000"); conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem"); if (s.equals("1")) { //如果选择了1的话,就是自己输入 System.out.println("Please Input The Content You Want To Append:"); Scanner scanner = new Scanner(System.in); String string; try { //一个死循环 while (true) { FileSystem fs = FileSystem.get(conf); FSDataOutputStream fsdataoutput = fs.append(writtenpath); string = scanner.nextLine(); if (string.equals("exit")) { //如果输入是exit就退出 System.out.println("APPEND SUCCESSFULLY"); break; } try { // 不然的话就是输入输入文件的内容 fsdataoutput.write(string.getBytes()); fsdataoutput.flush(); fsdataoutput.close(); } catch (Exception e) { e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } } if (s.equals("2")) { //如果是2的话就直接添加 try { String localFilePath = "/home/zqc/add.txt"; HDFSFileWritten.appendToFile(conf, localFilePath, filename); System.out.println("APPEND SUCCESSFULLY"); } catch (Exception e) { e.printStackTrace(); } } } }
添加成功了。
本地文件内容为JAVA HADOOP 添加成功。
编写Java代码实现功能:读取HDFS上的文件的内容并输出到控制台
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; public class HDFSReadFile { public static void main(String[] args) { new ReadFile(); } } class ReadFile { public ReadFile() { try{ Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://localhost:9000"); conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem"); FileSystem fs = FileSystem.get(conf); FSDataInputStream file = fs.open(new Path("/user/hadoop/input/hdfs-site.xml")); IOUtils.copyBytes(file, System.out, 1024); fs.close(); }catch(Exception e) { e.printStackTrace(); } } }
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
中…(img-8XJLoYci-1712999591534)]
[外链图片转存中…(img-cd7dBL2E-1712999591534)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-2buxm1Pg-1712999591534)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。