1. HDFS

HDFS(Hadoop Distributed File System) 它是一个文件系统 用于存储文件 通过目录树来定位文件 其次它是分布式的

HDFS的使用场景: 适合一次写入 多次读出的场景 且不支持文件的修改

优点:

  1. 高容错性 自动保存多个副本 某一个副本丢失 可以自动恢复
  2. 适合处理大数据
  3. 可构建在廉价机器上 通过多副本机制 提高可靠性

缺点:

  1. 不适合低延时时数据访问 比如毫秒级的数据
  2. 无法高效的对大量小文件进行存储
  3. 不支持并发写入 文件随机修改 仅支持数据的append 追加

03. HDFS - 图1

03. HDFS - 图2

03. HDFS - 图3

2. 命令行操作

以 hadoop fs 或者 hdfs dfs 为关键字

2.1. HDFS 到 HDFS

大部分linux命令都支持 需要在hadoop fs -拼接命令

  • cp 如:hadoop fs -cp 1.txt 2.txt

  • mv

  • chown

  • chmod

  • mkdir

  • du 统计文件夹的大小信息

  • df

  • cat

  • rm

  • setrep 设置HDFS中文件的副本数据 默认为节点(集群)数 并且不可以超节点数最大为节点数

      1. hadoop fs -setrep 10 /1.txt

2.2. 本地 到 HDFS

  • put 上传

      1. #hadoop fs -put 文件 HDFS内文件路径
      2. hadoop fs -put 1.txt /
  • copyFromLocal 从本地复制到HDFS 支持多线程

      1. #hadoop fs -copyFromLocal 文件 HDFS内文件路径
      2. hadoop fs -copyFromLocal 1.txt /
  • moveFromLocal 从本地复制到HDFS

      1. #hadoop fs -moveFromLocal 文件 HDFS内文件路径
      2. hadoop fs -moveFromLocal 1.txt /
  • appendToFile 将指定文件内容或者指定内容追加到HDFS文件末尾

      1. #hadoop fs -appendToFile 文件 HDFS内文件路径 如要指定内容则文件名忽略填写 - 既可
      2. hadoop fs -appendToFile 2.txt /1.txt

2.3. HDFS 到 本地

  • get 从HDFS下载到本地

      1. #hadoop fs -get HDFS内文件 本地文件路径
      2. hadoop fs -get /2.txt /
  • copyToLocal 与get一致

  • getmerge 合并下载

      1. #hadoop fs -get HDFS内多个文件 本地文件
      2. hadoop fs -get /*.txt /1.txt