大家好,我是摇光~
最近一直在学习Hadoop,之前总是觉得Hadoop高深莫测,其实就是专业词带偏我们了。
Hadoop一点也不难,让我用大白话讲给你们,你们就知道了~
一、Hadoop是什么?
1、Hadoop是什么?
Hadoop是一个开源的分布式计算和存储框架。
开源的
:免费的分布式计算
:例如一个统计数据的计算,分成几个计算机计算然后再合起来汇总。存储框架
:将文件存储在各种计算机中,这样就可以存放很多数据了。
看到上面的解释,应该都明白了,其实Hadoop就是用很多计算机进行数据存储和数据计算的,也可以几台,几十台,甚至几千台计算机。所以其实Hadoop就相当于一个大型的计算机。
2、为什么要使用Hadoop?
大数据时代产生的数据都是TB、PB等级别的,所以一台计算机已经无法满足数据分析、数据存储的要求了,所以我们需要像Hadoop这样的系统来处理大数据,使用大量的计算机同时运算,以此来加快运算速度。
我用一个例子来再解释一下为什么用Hadoop。
比如我们百度里面这么多文章、这么多的内容。
按照之前传统的方式,就是使用一台计算机进行存储和计算,如果你想查询东西,要在海量的数据查找,你必须提高计算机的性能,那样的话计算机的建造和维护成本巨高。
如果使用Hadoop,Hadoop只需要将数百个廉价的计算机联合起来,同步进行数据查询,这样不仅提高的搜索效率,还降低了建造和维护成本。
3、Hadoop由什么组成?
我们把Hadoop想成一台大型计算机。Hadoop的核心组成就是 HDFS和MapReduce
HDFS
:相当于计算机的硬盘,进行数据存储MapReduce
:相当于计算机的CPU控制器,进行计算等
HDFS是什么?
1、HDFS是什么?
- 前一章其实已经说了,HDFS就相当于计算机的硬盘,进行存储。但是因为Hadoop是由很多计算机构成的大计算机,那他具体怎么存储的呢?
- 计算机的存储都要求高效和稳定,他又是怎么保证高效和稳定呢?
2、HDFS是怎么进行存储的?
- 我们把每台计算机都称为节点,HDFS有三类节点,命名节点(Namenode)、数据节点(DataNode)、副命名节点(Secondary NameNode)
数据节点
:主要用来存储数据块,它具有存储数据、读取数据的功能,可以有成千上百个。命名节点
:HDFS的“管理员”,有且只有一个,它主要用于指挥其他节点工作。例如你想知道一个数据节点的信息,肯定需要节点的信息、及其里面数据的路径和内容信息。所以这些数据节点的信息就会存放在命名节点中,方便之后传递信息。副命名节点
:HDFS命名节点的“秘书”,主要负责分摊命名节点的压力,备份命名节点的状态并执行一些管理工作。所以副命名节点可以有很多个,如果命令节点坏了,可以从副命名节点的备份数据恢复数据。
从下图可以看出 HDFS 是如何运作的。
①请求元数据:客服端向NameNode发起请求,获取元数据信息,元数据信息包括命名空间、块映射信息及DataNode的位置
②返回元数据:NameNode根据请求,返回元数据信息。
③读取数据:客户端根据得到的元数据信息,到 DataNode 上读/写信息
④心跳信息:DataNode会定期向NameNode发送心跳信息,将自身节点的信息传递给 NameNode
⑤同步数据:相互关联的 DataNode之间会复制数据,以达到数据复制
3、HDFS怎么保证高效稳定?
- 高效: 以前的数据处理是客服端发出数据存储请求,服务器有时候在处理其他的请求,就会开始等待;但是HDFS是直接对数据服务器进行操作,也就是上图的步骤③
- 稳定: 因为HDFS的DataNode之间会相互备份数据,所以即使一台服务器坏了,另外一台也可以继续顶替他的工作,数据也不会丢失。
三、MapReduce
1、什么是MapReduce?
在第一章已经说过,MapReduce相当于计算机的CPU,其实就是进行数据计算。MapReduce就可以分成两块:Map(映射)和Reduce(归纳)
在解释这两个词语之前,我们先来举个例子。
比如你现在有一堆数据(PB级别),里面包含近十年的每个城市天气信息,如果叫你找出近十年来,每个城市最高温度是多少?
如果就使用一台计算机,就是每条数据进行对比,然后找到最高的温度,由于数据数量达到了PB级别,可能你电脑的CPU都要干冒烟,而且计算的速度也会很慢。
如果换做MapReduce进行计算,第一步:我们就可以将十年的数据分成十个任务,分发给十个服务器同步计算每一年的最高温度。第二步:将十个结果进行汇总,计算出十年来每个城市的最高温度。
按照MapReduce的计算,就可以知道,我们只需要十台廉价的计算机同时进行数据计算,然后再进行数据汇总。即成本低,又效率高。
通过上面的例子,我们其实就知道第一步就是Map,第二步就是Reduce
Map
:进行数据映射,将任务分发下去进行数据计算Reduce
:进行数据汇总,将计算结果进行汇总处理,得到最终结果
上面的内容都是Hadoop的一些基础概念,想学习Hadoop的存储系统搭建,可以看
大数据存储系统搭建(一站式搭建,适合新手)
最近我都会写一些关于大数据相关的文章,都是一些简单易理解的大白话文,希望大家喜欢~