hdfs学习指南详解

今天来点不一样的,前几天写的博客都没有目录,不知道大家看的效果怎么样,反正自己在手机上看的效果不是很好。先不谈排版的原因,本人天生没有美观设计优化的本领。那么今天为了方便大家也为了自己回顾可以看的更加明朗,今天来加点目录(也可以叫它思维导图)!

目录##

  1. 什么是hdfs?
  2. hdsf相关概念?(块,名称节点,数据节点)
  3. hdfs的shell命令?
  4. hdfs的Java API?
    大家准备好,接下来就是对目录内容的扩展,相信绝对实用

什么是hdfs?

  1. hdfs是hadoop的一个组件,是分布式文件存储系统。是为了存储海量数据应用而生。

hdfs相关概念?

  1. –>是hdfs基本存储单位,文件是被切成很多块存储在不同节点上的,对于块大小是可以设置的。块的备份数量也是可以设置的,块大小和备份数都是hdfs客户端所控制参数,这个在java API创建客户端的时侯可以看得出来。
    3.
    名称节点
    –>hdfs是主从分布结构,分为NameNode(名称节点)和DataNode(数据节点),那么什么是名称节点什么是数据节点呢?接下来我们来介绍:首先我们来介绍名称节点,名称节点是负责管理分布式文件系统的命名空间,保存了两个核心的数据结构,即FSImag
    和EditLog。FSImage负责维护文件树以及文件树中所有文件和文件夹的元数据。EditLog记录了对所有文件和文件夹的创建,删除,操作等命令。
  2. 数据节点–>数据节点启动时,会将FSImage和EditLog同时加载进内存,执行EditLog的各个操作,最后生成新的FSImage和空EditLog

hdfs shell操作?

hdfs操作都是通过客户端实现的,hadoop在搭建的时候在每台机器上搭建了hdfs客户端,所以可以在hdfs集群任一机器启动hdfs客户端来对其进行操作。

  1. hdfs shell 操作格式–>-->hdfs dfs -xxx (xxx代表参数)
  2. 常用的shell命令一:上传文件 hdfs dfs -put /usr/local/soft/mmz.log /root(/usr/local/soft/mmz.log表示本地路径,/root表示hdfs路径)
  3. 常用的shell命令二:下载文件到本地 hdfs dfs -get /root /usr/local/soft/mmz.log
  4. 常用的shell命令三:hdfs dfs -ls xxx (查看目录信息) hdfs dfs -mkdir -r xxx(递归创建目录) hdfs dfs -rm xxx(删除文件) hdfs dfs -cp xxx xxx(复制文件)hdfs dfs -cat xxx(查看文件内容)

hdfs Java API操作?

在hdfs shell操作时介绍了,对hdfs进行操作是用客户端对其进行操作的,那么在java中我们就要创建一个客户端

  1. 导入相关jar包,这里我们需要导入的是hadoop安装包解压文件夹下—>share–>hadooo—>conf—>hdfs和common文件夹下的jar包—>以及他们lib文件夹下的所有依赖jar包。(当然我们也可以用maven方法导入jar包)
  2. 在jar包导入成功后,我们就来操作,这里创建工程,类等常规操作我就详细介绍了。
  3. Java API操作主体部分一:创建hdfs文件系统客户端 FileSystem.get(URI uri,Configuration conf,String user).需要传入的参数分别指的是URI–>表示hdfs的访问路径 Configuration -->配置 user—>用户在这里插入图片描述
  4. Java API操作主体部分二
    (1)fs.copyFromLocal(new Path(" “),new Path(” “)); 表示从本地上传文件到hdfs分布式文件系统。
    (2)fs.copyToLocal(false,new Path(” “),new Path(” "),true);表示从hdfs文件系统下载文件到本地。注意这里使用四个参数的方法,这里的最后一个参数true表示用java本地库对windows进行操作。因为hadoop本地库没有不能对windows进行操作。hadoop本地库只包含了对linux系统的操作。
    (3)递归显示文件夹的所有信息
    在这里插入图片描述
    (4)只显示当前目录下的信息,非递归
    在这里插入图片描述
    (5)对hdfs文件系统文件的读取(下面我举的例子是 读取文件,从0偏移量开始读取,输出读取信息,当读到20个字节时停止读取)
    FSDataInputStream in=fs.open(new Path(“ ”));(打开一个输入流来读取文件) in.seek(0);(–指定从什么位置开始读取文件,也就是文件起始偏移量)。Byte[] b=new Byte[10];(设置b为每次读取的字节数)int count,read=0;while((read=in.read(b))!=-1){ System.out.println(new String(b));count+=read;if(read=20) break;}
    (6)对hdfs文件系统文件的写操作(-- 具体操作跟读取类似,这里不多做介绍–)
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马明智

你的鼓励就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值