大数据学习笔记(一):Hadoop笔记2

提示:有一些是参考了他人的总结,第二份笔记主要是对HDFS进行一个总结,后续将对mapreduce及其他环节进行详细的介绍和总结,整个大数据的路线将以python为主,有错误的地方欢迎批评指正。

文章目录

  • 大数据学习笔记(1):Hadoop笔记二
  • 一、HDFS
    • 1.简介
    • 2.优缺点
      • 2.1优点
      • 2.2缺点
  • 二、HDFS架构
    • 1.HDFS架构
    • 2.HDFS参数等
    • 3.HDFS读写数据
  • 三、HDFS实操
  • 总结


大数据学习笔记(1):Hadoop笔记二

第二部分主要是对HDFS的学习


`

一、HDFS

HDFS(Hadoop distributed file system):分布式文件系统,主要用来存储海量的数据(通过目录树来定位文件)
此外:适合一次写入,多次读取,并且不支持文件的修改。只适合用来做数据分析,不适合做网盘应用

1.简介

需要一种系统来管理多台机器上的文件,这个就叫做分布式文件管理系统,HDFS是典型的一种。

2.优缺点

2.1优点

1.高容错性:

(1)数据多副本保存(一般为3)
(2)某个副本丢失后自动恢复

2.适合处理大数据:

(1)处理PB级大数据
(2)处理大规模文件

3.可构建在廉价机器上

2.2缺点

1.不适合低延迟数据访问:

2.无法高效存储大量小文件

(1)存储大量小文件会占用NM内存来进行存储文件目录及块信息。(NM内存总是有限的)
(2)小文件存储的寻址时间会超过读取时间

3.不支持并发写入,文件修改

(1)一个文件只能一个写,不允许多线程同时写
(2)仅支持数据append(追加),不支持文件随机修改

二、HDFS架构

1.HDFS架构

大数据学习笔记(一):Hadoop笔记2_第1张图片

1.NameNode(nn):master

(1)管理HDFS的命名空间
(2)配置副本
(3)处理客户端client的请求
(4)维护文件名→block映射关系
(5)维护block→dn映射关系

2.DataNode(dn):slave

(1)存储实际数据块
(2)执行数据块的读写操作

3.client:客户端

(1)文件切分。文件上传至HDFS时,client将文件切分成一个一个的block,之后上传
(2)与NM交互,获取文件位置信息
(3)与DN交互,读取或者写入数据
(4)提供一些命令来管理HDFS,例如将NM格式化
(5)通过命令来访问HDFS,进行增减删查

4.Secondary NameNode(SNN):不是NM备份

(1)辅助NM,分担工作量,eg:定期合并Fsimage和Edits,并推送给NM
(2)紧急情况下可辅助恢复NM
(3)与DN交互,读取或者写入数据
(4)提供一些命令来管理HDFS,例如将NM格式化
(5)通过命令来访问HDFS,进行增减删查

2.HDFS参数等

HDFS中文件在物理上是分块存储(Block),可由(dfs.blocksize)配置。默认大小在老版本是64M,在2.0中是128M.

1.block不可设太小或者太大:

(1)太小的话会增加寻址时间
(2)太大的话,从磁盘传输数据的时间会明显大于定位这个块开始位置的时间,导致程序处理数据时会很慢。

3.HDFS读写数据

1.写数据:

(1)client通过Distributed FileSystem向NM请求上传文件,同时NM会检查目标文件是否存在,父目录是否存在
(2)NM返回是否可以上传
(3)client向NM请求第一个block上传至哪些DN上
(4)NM返回3个DN节点,分别为DN1,DN2,DN3,表示这几个节点来存储数据
(5)客户端通过FSDataOutputStream模块请求建立block传输通道,请求DN1上传数据,DN1收到请求后继续调用DN2,之后调用DN3,这个通道管道建立完成
(6)DN1,DN2,DN3逐级进行应答客户端:DN3应答成功后,DN2应答成功,最后DN1应答成功
(7)client向DN1上传第一个block,以packet为单位,DN1收到一个packet就会传给DN2,DN2传给DN3,DN1每传一个packet就会放入一个应答队列等待应答。
(8)当一个block传输完成,client再次请求NM上传第二个block的节点

2.读数据:

(1)client通过Distributed FileSystem向NM请求下载文件
(2)NM返回目标文件元数据
(3)client向DN1请求读数据
(4)DN1向client传输数据
(5)client向DN2请求读数据
(6)DN12向client传输数据

3.机架感知:副本放置策略

(1)第一个副本:与client相同的节点(如果client是集群外的机器,就随机选择选)
(2)第二个副本:放在不同机架的节点
(3)第三个副本:与第二个副本相同的机架,但不同的节点

三、HDFS实操

需要先进行相关软件的安装配置具体包括。

软件 版本
jdk 1.8.0
Hadoop 2.6.5

1.指令准备:

[root@master sbin]# cd $HADOOP_HOME
[root@master hadoop-2.6.5]# cd sbin/
[root@master sbin]# start-all.sh
[root@master sbin]# jps
#master节点
1689 SecondaryNameNode
1834 ResourceManager
2107 Jps
1484 NameNode
#slave节点
1440 Jps
1221 DataNode
1323 NodeManager

2.指令:
(1)help

[root@master sbin]# hadoop fs -help

(2)ls:目录显示

[root@master sbin]# hadoop fs -ls /

(3)mkdir:创建目录

[root@master sbin]# hadoop fs -mkdir /test_0
drwxr-xr-x   - root supergroup          0 2022-08-05 10:38 /test_0
[root@master sbin]# hadoop fs -mkdir -p /test_0/test_0_0
drwxr-xr-x   - root supergroup          0 2022-08-05 10:39 /test_0/test_0_0

(4)put:上传

[root@master test_0]# hadoop fs -put /root/test_0/text_0.txt /test_0/test_0_0
-rw-r--r--   3 root supergroup       1666 2022-08-05 10:45 /test_0/test_0_0/text_0.txt

(5)cat:查看

[root@master test_0]# hadoop fs -cat /test_0/test_0_0/text_1.txt
11111
22222

(6)rmr:递归删除

[root@master test_0]# hadoop fs -rmr /test_0/test_0_0/text_1.txt

(7)get:下载

[root@master test_0]# hadoop fs -get /test_0/test_0_0/text_1.txt /root/test_0/

(8)cp:复制

[root@master test_0]# hadoop fs -cp /test_0/test_0_0/text_0.txt /test_0/

(9)mv:移动

[root@master test_0]# hadoop fs -mv /test_0/test_0_0/text_0.txt /test_0/

(9)getmerge:合并下载

(py27) [root@master test_0]# hadoop fs -getmerge /test_0/test_0_0/* /root/test_0/te
xt_0.txt

(10)tail:尾部查看

[root@master test_0]# hadoop fs -tail /test_0/test_0_0/text_1.txt

(11)du:文件大小查看

[root@master test_0]# hadoop fs -du /test_0/test_0_0/text_0.txt
1666  /test_0/test_0_0/text_0.txt
[root@master test_0]# hadoop fs -du -h /test_0/test_0_0/text_0.txt
1.6 K  /test_0/test_0_0/text_0.txt

总结

第二节主要是对HDFS进行整理,后续会对mapreduce环节进行一个详细的总结整理。整条路线及后续的环节将主要以python作为编程语言进行实战。有不对的地方欢迎指正。

你可能感兴趣的:(大数据,hadoop,大数据,学习,python)