关于hadoop:Hadoop之HDFS一概述与常用Shell操作

30次阅读

共计 3950 个字符,预计需要花费 10 分钟才能阅读完成。

1.HDFS 概述

1.1 HDFS 简介

HDFS(Hadoop Distributed File System),Hadoop 分布式文件系统,用来解决海量数据的存储问题。

1.2 HDFS 的特点

劣势
  • 高容错性:HDFS 多正本分布式存储,当一个正本失落了,可能主动复原,所以 HDFS 具备高容错性,默认是 3 正本。
  • 大数据处理:HDFS 解决数据的规模甚至能够达到 PB 级别,文件数量甚至百万之上
  • HDFS 是设计成适应一次写入,屡次读出的场景,且不反对文件的批改
劣势
  • HDFS 不善于大量小文件的存储,因为 NameNode 的内存是无限的,但大量小文件存储,会耗用大量 NameNode 的内存,来存储文件的目录、块信息等。
  • HDFS 高延时,不适宜低延时的拜访
  • HDFS 不反对并发写和文件的批改

1.3 HDFS 架构图解

1)NameNode(nn):它是一个主管、管理者,Master 节点,负责保护整个 hdfs 文件系统的目录树,以及每一个门路(文件)所对应的 block 块信息。
(1)治理 HDFS 的名称空间;
(2)配置正本策略;
(3)治理数据块(Block)映射信息;
(4)解决客户端读写申请。

2)DataNode:就是 Slave。NameNode 下达命令,DataNode 执行理论的操作,负责存储 client 发来的数据块 block;执行数据块的读写操作。Datanode 是 HDFS 集群从节点,每一个 block 都能够在多个 datanode 上存储多个正本,正本数量也能够通过参数 dfs.replication 设置。
HDFS 存储文件是 分块存储(block),默认大小在 hadoop2.x 版本中是 128M,老版本中是 64M。这个能够通过配置参数 dfs.blocksize 来进行调整。HDFS 块的大小设置次要取决于磁盘传输速率,

3)Secondary NameNode:充当小弟的角色。
(1)辅助 NameNode,分担其工作量,比方定期合并 Fsimage 和 Edits,并推送给 NameNode;
(2)在 NameNode 挂掉时,可辅助复原 NameNode,不过当初有 HA,所以很少应用 Secondary NameNode。

4)Client:顾名思义,就是客户端。
(1)文件切分。Client 将文件切分成一个一个的 Block,而后进行上传到 HDFS 上。
(2)与 NameNode 交互,取得读取或写入文件的地位信息;
(3)与 DataNode 交互,读写数据;
(4)Client 提供一些命令治理 HDFS,比方 NameNode 格式化操作;
(5)Client 提供一些命令拜访 HDFS,比方对 HDFS 增删查改操作;

2.HDFS Shell 命令

2.1 语法操作

1)hadoop fs 命令
2)hdfs dfs 命令

2.2 常用命令

hadoop 的 shell 命令应用起来非常简单,和 linux Shell 命令十分相似。

  • 1. 启动集群
sbin/start-dfs.sh
sbin/start-yarn.sh
  • 2. 查看命令帮忙
hadoop fs -help ls
  • 3. 查看零碎系统目录
[v2admin@hadoop10 sbin]$ hadoop fs -ls /
2020-12-29 10:20:58,645 INFO  [main] Configuration.deprecation (Configuration.java:logDeprecation(1395)) - No unit for dfs.client.datanode-restart.timeout(30) assuming SECONDS
Found 7 items
drwxr-xr-x   - v2admin supergroup          0 2020-12-23 20:37 /flume
drwxr-xr-x   - v2admin supergroup          0 2020-12-28 17:23 /hbase
drwxr-xr-x   - v2admin supergroup          0 2020-12-23 14:43 /home
  • 4. 创立文件夹
[v2admin@hadoop10 sbin]$ hadoop fs -mkdir /student
  • 5. 多级文件夹创立
[v2admin@hadoop10 sbin]$ hadoop fs -mkdir /student/zhangsan/course_count
  • 6. 上传和下载文件

从本地拷贝文件至 hdfs

[v2admin@hadoop10 sbin]$ cd /home/v2admin/demo
[v2admin@hadoop10 demo]$touch words.txt
[v2admin@hadoop10 demo]$echo aaa > words.txt
[v2admin@hadoop10 demo]$ hadoop fs -put words.txt /student
// words 是我本地的文件  前面跟上传 hdfs 的目录
[// hadoop fs -copyFromLocal words.txt /student
// 等同于 put
[v2admin@hadoop10 demo]$ hadoop fs -ls /student
2020-12-29 10:32:34,660 INFO  [main] Configuration.deprecation (Configuration.java:logDeprecation(1395)) - No unit for dfs.client.datanode-restart.timeout(30) assuming SECONDS
Found 2 items
-rw-r--r--   3 v2admin supergroup          4 2020-12-29 10:31 /student/words.txt

从本地剪贴到 HDFS

[v2admin@hadoop10 demo]$ touch bbb.txt
[v2admin@hadoop10 demo]$ ls
bbb.txt  f  pos.log  words.txt
[v2admin@hadoop10 demo]$ hadoop fs -moveFromLocal bbb.txt /student
2020-12-29 10:40:20,634 INFO  [main] Configuration.deprecation (Configuration.java:logDeprecation(1395)) - No unit for dfs.client.datanode-restart.timeout(30) assuming SECONDS
[v2admin@hadoop10 demo]$ ls
f  pos.log  words.txt
[v2admin@hadoop10 demo]$ hadoop fs -ls /student
2020-12-29 10:40:40,097 INFO  [main] Configuration.deprecation (Configuration.java:logDeprecation(1395)) - No unit for dfs.client.datanode-restart.timeout(30) assuming SECONDS
Found 3 items
-rw-r--r--   3 v2admin supergroup          0 2020-12-29 10:40 /student/bbb.txt
-rw-r--r--   3 v2admin supergroup        151 2020-12-21 14:45 /student/stu.txt
-rw-r--r--   3 v2admin supergroup          4 2020-12-29 10:31 /student/words.txt

追加文件到曾经存在的文件开端

[v2admin@hadoop10 demo]$ echo bbb > bbb.txt
[v2admin@hadoop10 demo]$ hadoop fs -appendToFile bbb.txt /student/words.txt

那么下载 words.txt 文件,看看文件产生什么变动吧

[v2admin@hadoop10 demo]$ mkdir download
[v2admin@hadoop10 demo]$ hadoop fs -get /student/words.txt ./download/
[v2admin@hadoop10 demo]$ cat download/words.txt 
aaa
bbb

下载文件除了 get 还有其余两个

[v2admin@hadoop10 demo]$ hadoop fs -copyToLocal /student/words.txt ./download/
// 等同于 get

[v2admin@hadoop10 demo]$ hadoop fs -getmerge /student/* ./download/
// 合并下载多个文件
  • 7. 从 HDFS 一个门路拷贝到 HDFS 另一个门路
[v2admin@hadoop10 demo]$hadoop fs -mkidr /newStu
[v2admin@hadoop10 demo]$hadoop fs -cp /student/bbb.txt /newStu
  • 8. 在 HDFS 上挪动文件
[v2admin@hadoop10 demo]$hadoop fs -mv /student/words.txt /newStu
  • 9. 在 HDFS 上删除文件
// 惯例删除
[v2admin@hadoop10 demo]$hadoop fs -rm /newStu/bbb.txt

// 强制删除
[v2admin@hadoop10 demo]$hadoop fs -rm -r /newStu
  • 10 查看文件内容
[v2admin@hadoop10 demo]$hadoop fs -cat /student/bbb.txt

更多命令参考 http://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-common/FileSystemShell.html

正文完
 0