hadoop 框架中知识的一点总结

map-reduce 工作机制解析


一,首先用户发布一个mapreduce 作业

二,jobtracker 接收到这个作业给它一个ID,相当于进程排在要执行的进程队列中

三,通过HDFS把作业的资源(比如要处理的文件),分散到集群当中

四,通知jobtracker (submit job),该进程可以随时执行

五,jobtracker 根据该任务,把它分成很多小任务,,

六,通过心跳机制来检测有哪些jobtask活着活着有空

七,找到一批为这个任务工作的一群执行任务的节点

八,每一个执行任务的节点,到通过HDFS拿到相应的资源,并且执行完(有mapper任务和redue任务)

九,通过mapper任务和redue任务得到结果放入集群中,活着传送给客户



 ① 在处理之前,将数据集分布至各个节点(通过HDFS)。

    处理时,每个节点就近读取本地存储的数据处理 ,并进行(map),将处理后的数据进行合并(combine)、排序(shuffle and sort)后再分发,进行reduce 输出结果。。

一个MapReduce作业(job)通常会把输入的数据集切分为若干独立的数据块,由 Map任务(task)以完全并行的方式处理它们。框架会对Map的输出先进行排序,然后把结果输入给Reduce任务。通常作业的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和监控,以及重新执行已经失败的任务


② Hadoop 还提供一个分布式文件系统(HDFS)及分布式数据库(HBase)用来将数据存储或部署到各个计算节点上。所以,你可以大致认为:Hadoop=HDFS(文件系统,数据存储技术相关)+HBase(数据库)+MapReduce(数据处理

hadoop提供一个分布式文件系统(HDFS)及分布式数据库(Hbase)用来存储或部署到各个计算点上,最终在内部采取mapreduce的模式对其数据进行处理,然后输出处理结果:


客户端如何访问HDFS中一个文件呢?具体流程如下。

1)首先从Namenode获得组成这个文件的数据块位置列表。

2)接下来根据位置列表知道存储数据块的Datanode。

3)最后访问Datanode获取数据。

注意:Namenode并不参与数据实际传输。它只保存HDFS元数据(命名空间,文件目录,和对应的块位置)


数据存储系统,数据存储的可靠性至关重要。HDFS是如何保证其可靠性呢?它主要采用如下机理。

1)冗余副本策略,即所有数据都有副本,副本的数目可以在hdfs-site.xml中设置相应的复制因子。

2)机架策略,即HDFS的“机架感知”,一般在本机架存放一个副本,在其它机架再存放别的副本,这样可以防止机架失效时丢失数据,也可以提供带宽利用率。

3)心跳机制,即Namenode周期性从Datanode接受心跳信号和快报告,没有按时发送心跳的Datanode会被标记为宕机,不会再给任何I/O请求,若是Datanode失效造成副本数量下降,并且低于预先设置的阈值,Namenode会检测出这些数据块,并在合适的时机进行重新复制。

4)安全模式,Namenode启动时会先经过一个“安全模式”阶段。

5)校验和,客户端获取数据通过检查校验和,发现数据块是否损坏,从而确定是否要读取副本。

6)回收站,删除文件,会先到回收站/trash,其里面文件可以快速回复。

7)元数据保护,映像文件和事务日志是Namenode的核心数据,可以配置为拥有多个副本。

8)快照,支持存储某个时间点的映像,需要时可以使数据重返这个时间点的状态。

HDFS 文件操作

对HDFS文件操作有两种方式,一是命令行方式,二是HDFS API方式。

HDFS常用命令归总

1)列出HDFS下的文件

hadoop fs -ls

2)上传本地文件到HDFS

hadoop fs -put  dir1  dir2

说明:dir1,本地文件系统文件目录;dir2,HDFS文件系统文件目录

3)下载HDFS文件到本地

hadoop fs -get dir1  dir2

说明:dir1,本地文件系统文件目录;dir2,HDFS文件系统文件目录

4)创建HDFS文件

hadoop fs -mkdir  dir

5)删除HDFS下的文档

hadoop fs -rmr dir

6)查看HDFS下某个文件的内容

hadoop fs -cat   文件路径

7)查阅帮助

获取所用Hadoop版本关于HDFS完整的命令列表,可执行

  hadoop fs

或者

使用help来显示某个命令的用法与简短描述。

例如 要了解ls,可执行

   hadoop fs -help ls

MapReduce的整个工作过程如上图所示,它包含如下4个独立的实体。

实体一:客户端,用来提交MapReduce作业。

实体二:jobtracker,用来协调作业的运行。

实体三:tasktracker,用来处理作业划分后的任务。

实体四:HDFS,用来在其它实体间共享作业文件。

通过审阅MapReduce工作流程图,可以看出MapReduce整个工作过程有序地包含如下工作环节。

环节一:作业的提交

环节二:作业的初始化

环节三:任务的分配

环节四:任务的执行

环节五:进程和状态的更新

环节六:作业的完成 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值