Hadoop是什么?

  • A+
所属分类:赛迪思

1、Hadoop是什么?

 

(1)Hadoop是一个能够对大量数据进行分布式处理的软件框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的, Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理),Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Mapreduce代替SQL,SQL是查询语句,而Mapreduce则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。

2、Hadoop核心思想

Hadoop框架中最核心设计就是:HDFS和MapReduce,HDFS提供了海量数据的存储,MapReduce提供了对数据的计算。

HDFS

HDFS是一个分布式文件系统:传统文件系统的硬盘寻址慢,通过引入存放文件信息的服务器Namenode和实际存放数据的服务器Datanode进行串接。对数据系统进行分布式储存读取。

MapReduce

MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算\Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。

3.HDFS文件系统和MapReduce计算框架在Hadoop生态圈中的应用

Hadoop生态圈使用HDFS文件系统进行存取数据,数据被分散的保存在集群的各个服务器上,在计算数据时使用MapReduce结合HDFS进行逻辑运算取出数据。

4.Master/Slave的架构理念

Hadoop使用(Master/Slave)主从架构进行分布式储存和分布式计算。Master负责分配和管理任务,Slave负责实际执行任务。

MapReduce中装载有JobTracker的服务器负责进行Master任务,装载有TaskTracker的服务器负责进行Slave任务。

HDFS中装载有Namenode的服务器负责进行Master任务,装载有Datanode的服务器负责进行Slave任务。

5、hadoop主要特点:

1、 扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。

2、 成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。

3 、高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。

4、 可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。

6.HDFS&MapReduce的设计思路

  HDFS:

将文件进行切块处理,再通过文件信息服务器Namenode存放切块的文件信息存放地址,实际存放数据的服务器Datanode存在切块后的数据。

HDFS还设计了Secondary Namenode来更新Namenode,以避免日志文件过大

HDFS Client帮助Namenode对写入读取数据进行预处理,进行文件的分块与发送读取操作。Namenode负责为数据任务寻址

 MapReduce:

通过JobClient生成任务运行文件,并在JobTracker进行调度指派TaskTracker完成任务。

JobTracker分为把任务文件进行分解并派送到TaskTracker的程序JobinProgress和执行调度器的TaskScheduler

JobinProgress把作业分解成Map计算和Reduce计算并放置到TaskTracker服务器中

6.Hadoop运行机制

 HDFS:

Namenode使用镜像文件(Namespace image)和操作日志文件(edit log)对数据进行记录。(保存在缓存和磁盘中)

Secondary Namenode进行更新时的操作:

1.在Namenode创建一个新的操作日志,将新的操作记录写入到新的操作日志中;

2.将Namenode的镜像文件和操作日志拷贝到Secondary Namenode中;

3.在Secondary Namenode中读取镜像文件到内存,并执行日志文件中的所有操作,生产新的镜像文件;

4.把Secondary Namenode中创建的镜像文件拷贝到Namenode中;

5.Namenode中使用新的镜像文件和操作日志替代原来的文件;

 存数据:

1.HDFS Client对文件分块并向Namenode发送写数据请求

2.Namenode把block信息记录下来,并返回可写入的Datanode

3.HDFS Client向指定的Datanode传送数据

4.传送成功后,Datanode会向Namenode和HDFS Client发送成功通知

 读数据:

1.HDFS Client从Namenode中获取文件块的位置

2.HDFS Client根据Namenode返回的文件信息去Datanode相关位置中读取

 MapReduce:

通过JobClient把用户的作业任务转换成job.xml、job.jar、job.split,适合JobTracker执行的文件

1.job.xml文件记录了Job的详细配置信息

2.job.jar保存了用户定义的关于job的map、reduce操纵

3.job.split保存了job任务的切片信息

JobClient会为作业向JobTracker申请Jobid,并以Jobid命名把xml、jar、split文件放置进HDFS中

JobinProgress会把JobClient创建的Job拷贝到JobTracker本地文件系统,并创建JobStatus和Job的mapTask、reduceTask队列来跟踪Job的状态信息。

JobTracker默认执行一下调度法则

1.先进先出:集群内的资源统一进行使用,执行先进队列先执行的原则。

2.公平调度:按用户分配集群内的资源,每个用户只能在指定的资源内运行调度。

3.队列调度:可以设置多个队列,每个队列都可以进行置顶的资源调度。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的QQ
  • 这是我的QQ扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: