Hadoop入门

Hadoop入门

1. Hadoop概述

1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构

2)主要解决,海量数据的存储和海量数据的分析计算问题。

3)广义上来说,HADOOP通常是指一个更广泛的概念——HADOOP生态圈

Google是hadoop的思想之源(Google在大数据方面的三篇论文)

GFS —>HDFS

Map-Reduce —>MR

BigTable —>Hbase

1.1 Hadoop的优点

扩容能力(Scalable)

Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计个节点中

成本低(Economical)

Hadoop 服务器集群来分发以及处理数据,以至于成本很低

高效率(Efficient)

通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快

可靠性(Rellable)

能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。所以Hadoop的按位存储和处理数据的能力值得人们信赖

1.2 Hadoop的组成

  • Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。
  • Hadoop MapReduce:一个分布式的离线并行计算框架。
  • Hadoop YARN:作业调度与集群资源管理的框架。
  • Hadoop Common:支持其他模块的工具模块。

2. HDFS概述

2.1 HDFS起源

HDFS 是 Hadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统。是 Hadoop 核心组件之一,作为最底层的分布式存储服务而存在。

分布式文件系统解决的问题就是大数据存储。它们是横跨在多台计算机上的存储系统。分布式文件系统在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。

HDFS起源于Google的GFS论文(GFS,Mapreduce,BigTable为google的旧的三驾马车)

2.2 HDFS优点

  • 高容错性

数据自动保存多个副本。它通过增加副本的形式,提高容错性;

某一个副本丢失以后,它可以自动恢复。

  • 适合大数据处理

数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;

文件规模:能够处理百万规模以上的文件数量,数量相当之大。

  • 可构建在廉价机器上,通过多副本机制,提高可靠性。

2.3 HDFS缺点

  • 不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
  • 无法高效的对大量小文件进行存储。

存储大量小文件的话,它会占用NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的;

小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。

  • 无法并发写入、文件随机修改。

一个文件只能有一个写,不允许多个线程同时写;

仅支持数据append(追加),不支持文件的随机修改。

3. HDFS架构

在这里插入图片描述

1、文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block

2、与NameNode交互,获取文件的位置信息;

3、与DataNode交互,读取或者写入数据;

4、Client提供一些命令来管理HDFS,比如启动或者关闭HDFS;

5、Client可以通过一些命令来访问HDFS;

3.1 HDFS-NameNode

a、 NameNode 是 HDFS 的核心。

b、 NameNode 也称为 Master。

c、 NameNode 仅存储 HDFS 的元数据:文件系统中所有文件的目录树,并跟踪整个集群中的文件。

d、 NameNode 不存储实际数据或数据集。数据本身实际存储在 DataNodes 中。

e、 NameNode 知道 HDFS 中任何给定文件的块列表及其位置。使用此信息

NameNode 知道如何从块中构建文件。

f、 NameNode 并不持久化存储每个文件中各个块所在的 DataNode 的位置信息,这些信息会在系统启动时从数据节点重建。

g、 NameNode 对于 HDFS 至关重要,当 NameNode 关闭时,HDFS / Hadoop 集群无法访问。

h、 NameNode 是 Hadoop 集群中的单点故障。

i、NameNode 所在机器通常会配置有大量内存(RAM)

元数据

元数据,是数据的描述信息,比如这个文件的路径,这个文件的副本数,每个副本保存在哪个DataNode上,就相当于真真正正的一个人,他有一些信息:身高、体重、姓名、性别等,通过这些信息就可以描述这个人,那描述HDFS上真实数据的信息,就称为元数据。元数据是保存在NameNode上的。

3.2 HDFS-DataNode

a、 DataNode 负责将实际数据存储在 HDFS 中。

b、 DataNode 也称为 Slave。

c、 NameNode 和 DataNode 会保持不断通信。

d、 DataNode 启动时,它将自己发布到 NameNode 并汇报自己负责持有的块列表。

e、 当某个 DataNode 关闭时,它不会影响数据或群集的可用性。NameNode 将安排由其他 DataNode 管理的块进行副本复制。

f、 DataNode 所在机器通常配置有大量的硬盘空间。因为实际数据存储在DataNode 中。

g、 DataNode 会定期(dfs.heartbeat.interval 配置项配置,默认是 3 秒)向NameNode 发送心跳,如果 NameNode 长时间没有接受到 DataNode 发送的心跳, NameNode 就会认为该 DataNode 失效。

块与副本集

所有的文件都是以block块的方式存放在HDFS文件系统当中,在hadoop1当中,文件的block块默认大小是64M,hadoop2和hadoop3中,文件的block块大小默认是128M,block块的大小可以通过hdfs-site.xml当中的配置文件进行指定。

为了容错,文件的所有 block 都会有副本。每个文件的 block 大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后变。

3.3 SecondaryNameNode

我们知道NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息等。当它运行的时候,这些信息是存在内存中的。但是这些信息也可以持久化到磁盘上。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gi9NEIQH-1615533835920)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\1586429093397.png)]

上面的这张图片展示了NameNode怎么把元数据保存到磁盘上的。这里有两个不同的文件:

fsimage - 它是在NameNode启动时对整个文件系统的快照
edit logs - 它是在NameNode启动后,对文件系统的改动序列

只有在NameNode重启时,edit logs才会合并到fsimage文件中,从而得到一个文件系统的最新快照。但是在产品集群中NameNode是很少重启的,这也意味着当NameNode运行了很长时间后,edit logs文件会变得很大。在这种情况下就会出现下面一些问题:
- edit logs文件会变的很大,怎么去管理这个文件是一个挑战。
- NameNode的重启会花费很长时间,因为在edit log中有很多改动要合并到fsimage文件上。如果NameNode挂掉了,那我们就需要大量时间将edit log与fsimage进行合并。[会将还在内存中但是没有写到edit logs的这部分。]
因此为了克服这个问题,我们需要一个易于管理的机制来帮助我们减小edit logs文件的大小和得到一个最新的fsimage文件,这样也会减小在NameNode上的压力。

Secondary NameNode就是来帮助解决上述问题的,它的职责是合并NameNode的edit logs到fsimage文件中。

在这里插入图片描述

上面的图片展示了Secondary NameNode是怎么工作的。

  • 它定时到NameNode去获取edit logs,并更新到自己的fsimage上。
  • 一旦它有了新的fsimage文件,它将其拷贝回NameNode中。
  • NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间。

Secondary NameNode的整个目的是在HDFS中提供一个检查点。它只是NameNode的一个助手节点。这也是它在社区内被认为是检查点节点的原因。

现在,我们明白了Secondary NameNode所做的不过是在文件系统中设置一个检查点来帮助NameNode更好的工作。它不是要取代掉NameNode也不是NameNode的备份。所以从现在起,让我们养成一个习惯,称呼它为检查点节点吧。

4. HDFS的写入读取

写入流程

在这里插入图片描述

读取流程
在这里插入图片描述

5. Hadoop常用命令

-ls

功能:显示文件、目录信息。

示例:hadoop fs -ls /user

-mkdir

使用方法:**hadoop fs -mkdir [-p] **

功能:在 hdfs 上创建目录,-p 表示会创建路径中的各级父目录。

示例:

hadoop fs -mkdir–p /user/hadoop/dir1

hadoop fs -mkdir hdfs://192.168.9.230:9000/test

-touch

功能:创建新文件

示例:

hadoop fs -touch /user/hadoop/aa

-put

使用方法:hadoop fs -put [-f] [ -| … ].

功能:将单个 src 或多个 srcs 从本地文件系统复制到目标文件系统。

-f:覆盖目的地(如果已经存在)

示例:

hadoop fs -put /usr/local/data/a.txt /test2

hadoop fs -put -f D:\data\test1.txt D:\data\test2.txt /user/hadoop/dir1

-get

功能:将文件复制到本地文件系统。

示例:

hadoop fs -get hdfs://127.0.0.1:9000/user/hadoop/dir1/test1.txt D:\data\test3.txt

-copyFromLocal

功能:从本地文件系统中拷贝文件到 hdfs 路径去

示例:hadoop fs -copyFromLocal D:\data\test1.txt /user/hadoop

-copyToLocal

功能:从 hdfs 拷贝到本地

示例:hadoop fs -copyToLocal /user/hadoop/test1.txt D:\data\test11.txt

-cp

功能:从 hdfs 的一个路径拷贝 hdfs 的另一个路径

示例: hadoop fs -cp /user/hadoop/dir1/test1.txt /user/hadoop/dir1/test1

-mv

功能:在 hdfs 目录中移动文件

示例: hadoop fs -mv /user/hadoop/dir1/test1.txt /user/hadoop/dir1/test2

-rm

功能:删除指定的文件。只删除非空目录和文件。-r 递归删除。

示例:hadoop fs -rm -r /test2

-help:

功能:查看帮助

示例:hadoop fs -help rm

-cat

功能:显示文件内容到 stdout

示例:

hadoop fs -cat /user/hadoop/dir1/test1.txt

-chmod

功能:改变文件的权限。使用-R 将使改变在目录结构下递归进行。

示例:hadoop fs -chmod 777 /test2/ee

-chown

功能:改变文件的拥有者。使用-R 将使改变在目录结构下递归进行。

示例:hadoop fs -chown user /test2/ee

**参考:**https://blog.csdn.net/xh16319/article/details/31375197

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

nan feng

打赏一杯咖啡吧

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

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

打赏作者

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

抵扣说明:

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

余额充值