大数据-Hadoop-基础篇-第四章-HDFS(分布式文件存储)

打印 上一主题 下一主题

主题 841|帖子 841|积分 2523

参考

经典大数据开发实战(Hadoop &HDFS&Hive&Hbase&Kafka&Flume&Storm&Elasticsearch&Spark)
概念

组成

一个HDFS集群由一个元数据节点(NameNode)和一些数据节点(DataNode)组成

体系结构


数据块

数据块(Block):HDFS中最基本的存储单位,默认128M。
鸡蛋不能放在同一个蓝子

以上示例是6个DataNode ,每个块分别3个副本
HDFS 文件读取


HDFS 文件写入


常用下令

   注意:hdfs dfs = hadoop fs.
  1. Is

使用上下令可以查看HDFS系统中的目次和文件。比方,查看HDFS文件系统根目次下的目次和文件,下令如下:"
  1. hadooop fs -ls /
复制代码
递归列出 HDFS 文件系统根目次下的全部目次和文件,下令如下:"
  1. hadooop fs -ls -R /
复制代码
2. put

将本地文件上传到 HDFS系统中。比方,将本地文件 a.txt 上传到 HDFS 文件系统的/input文件夹中,下令如下:。
  1. hadoop fs -put a.txt /input/
复制代码
3.moveFromLocal.

将本地文件移动到HDFS 文件系统中,可以一次移动多个文件。与put下令类似,差别的是该下令实行后源文件将被删除。比方,将本地文件a.txt移动到HDFS的/imnput 文件夹中,下令如下:.
  1. hadoop fs -moveFromLocal a.txt /input/
复制代码
4.get

使用 get 下令可以将 HDFS 文件系统中的文件下载到本地,注意下载时的文件名不能与本地文件类似,否则会提示文件已经存在。下载多个文件或目次到本地时,要将本地路径设置为文件夹。比方,将 HDFS 根目次的 imput 文件夹中的文件 a.txt 下载到本地当前目次,下令如下:
  1. $ hadoop fs -get /input/a.txt a.txt
复制代码
将HDFS根目次的input 文件夹下载到本地当前目次,下令如下:
  1. hadoop fs -get /input/ ./
复制代码
必要注意的是,必要确保用户对当前目次有可写权限。
5.rm

使用rm 下令可以删除 HDFS 系统中的文件或文件夹,每次可以删除多个文件或目次。例删除 HDFS 根目次的 input 文件夹中的文件 a.txt,下令如下:女1、
  1. hadoop fs -rm /input/a.txt
复制代码
递归删除 HDFS根目次的output 文件夹及该文件夹下的全部内容,下令如下:
  1. $ hadoop fs -rm -r /output
复制代码
6. mkdir

使用 mkdir 下令可以在 HDFS 系统中创建文件或目次。比方,在 HDFS 根目次下创建文件夹 imnput,下令如下:
  1. hadoop fs -mkdir /input/
复制代码
也可使用-p参数创建多级目次,假如父目次不存在,则会主动创建父目次。下令如下
  1. $ hadoop fs -mkdir -p /input/file
复制代码
7.cp

使用 cp下令可以复制 HDFS 中的文件到另一个文件,相当于给文件重命名并保存,但源文件仍然存在。比方,将/imnputa.txt复制到/input/b.txt,并保存 a.txt,下令如下:
  1. hadoop fs -cp /input/a.txt /input/b.txt
复制代码
8. mv

使用 mv 下令可以移动 HDFS 文件到另一个文件,相当于给文件重命名并保存,源文件已不存在。比方,将/inputa.txt移动到/inputb.txt,下令如下:
  1. hadoop fs -mv /input/a.txt /input/b.txt
复制代码
9.appendToFile

使用 appendToFie 下令可以将单个或多个文件的内容从本地系统追加到 HDFS 系统的文件中。比方,将本地当前目次的文件 a.txt 的内容追加到HDFS 系统的nputb.txt 文件中,下令如下:
  1. $ hadoop fs -appendToFile a.txt /input/b.txt
复制代码
若必要一次追加多个本地系统文件的内容,则多个文件用“空格”隔开。比方,将本地文件a.txt和 b.txt的内容追加到HDFS 系统的/inputc.txt文件中,下令如下:
  1. $ hadoop fs -appendToFile a.txt b.txt /input/c.txt
复制代码
10. cat

使用 cat 下令可以查看并输出 HDFS 系统中某个文件的全部内容。比方,查看 HDFS 系统中的文件/inputa.txt的全部内容,下令如下:
  1. $ hadoop fs -cat /input/a.txt
复制代码
也可以同时查看并输出HDES中的多个文件内容,效果会将多个文件的内容按照序次归并轮出。比方,查看HDFS中的文件/inputa.txt和文件nputb.txt 的全部内容,下令如下:
  1. $ hadoop fs -cat /input/a.txt
  2. /input/b.txt
复制代码
javaAPI

引入包

  1. <dependency>
  2.         <groupId>org.apache.hadoop</groupId>
  3.         <artifactId>hadoop-client</artifactId>
  4.         <version>3.3.1</version>
  5. </dependency>
复制代码
创建文件夹

  1. package hdfs.demo,
  2. import java.io.IoException;
  3. /**
  4. * 创建HDFS日录mydir
  5. * /
  6. public class CreateDir{
  7.         publie statie void main(string[]args) throws IOException{
  8.                 Confiquration conf = new Confiquration();
  9.                 conf.set("fs.default.name","hdfs://192.168.170.133:9000");
  10.                 FileSystem hdfs =FileSystem.get(conf);
  11.                 // 创建目录
  12.                 boolean isok = hdfs.mkdirs(new Path("hdfs:/mydir"));
  13.                 if(isok){
  14.                         System.out.println("创建目录成功!");
  15.                 }else {
  16.                         System.out.println("创建目录失败!");
  17.                 }
  18.                 hdfs.close();
  19.         }
  20. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

涛声依旧在

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表