Hadoop之大数据平台基础(1)

一、Hadoop是什么?

Hadoop是一个开源分布式平台,它使用HDFS文件系统(Hadoop Distributed File System)和MapReduce计算框架为核心。

HDFS是为了能够使用户使用连接的硬件平台就可以实现分布式系统,MapReduce能够是开发者在无需关心过多的底层计算框架逻辑而实现并发分布式。

二、Hapoop的作用

Hadoop是为了实现海量数据的处理,如雅虎使用作为Web搜索,广告系统;百度使用做搜索日志分析系统,网页数据挖掘;阿里用它存储海量交易数据;移动用它数据分析。

三、Hapoop的优势

1.高可靠性:正确无误的处理数据

2.高扩展性:任何计算机集群节点都可随时加入删除。

3.高效性:快速处理海量数据

4.高容错性:某个计算节点的错误不会影响最终结果。

四、Hadoop项目结构图

Hadoop项目:

架构:以Ambari作为Hadoop创建、管理和监控的web端管理工具,以Zookeeper作为项目协同服务和失效转移

failover服务。

高级程序设计语言:Pig和Hive,用于数据统计查询功能,Pig为ETL过程处理和数据模型,Hive分析型查询

Hadoop核心计算引擎:MapReduce底层处理算法

底层存储数据库:HBase高可靠性、高性能、面向列和可伸缩的分布式结构化数据库,Hcatalog元数据服务

HDFS:物理存储文件系统

五、hadoop体系结构

1.HDFS文件系统体系结构

HDFS使用Master/Slave主从结构模型,Namenode作为主服务器,用于管理系统的命名空间和客户端堆文件的访问操作,而Datanode管理存储的数据。一台主机器运行Namenode而其他从服务器分别运行一个Datanode

2.MapReduce计算架构体系

MapReduce本质是一个简单医用的并行变成框架,它同样采用主从模型,由一个单独运行的主节点JobTracker和N个运行的从节点TaskTracker共同组成。JobTracker用于管理和调度工作,TasjTracker用于具体的任务执行。

 1)执行流程:每次计算任务都可以分为两个阶段,Map阶段和Reduce阶段

  其中Map阶段接受一组键值队模式<key, value>的输入,并产生同样是键值队模式<key_m, value_m>的中间输出;Redeuce阶段负责处理接收Map产生的中间输出<key_m, value_m>,对这些结果进行处理并输出结果

sample:以最简单的WordCount统计文本中各个单词出现的次数,那么每个map任务负责提文本中所有单词并产生n个<word, 1>中间输出;而Reduce任务可以讲这些中间输出作出处理,转换成<word, n>最终输出。

在此过程中,Map产生的中间输出是直接存放在本地磁盘,job完成就会删除;Reduce产生的最终将诶过才会存放在HDFS。

 2)Hadoop流的工作原理

执行Map的应用程序会首先读取输入,并将其分成行后作为程序的standard in进行处理后,将每行第一个tab符前的内容作为key,之后的内容作为value,如果没有tab符,那么这一行中的所有内容都将作为key,value为空。

 3)MapReduce的数据流和控制流

 jobTracker(master)首先调度分配任务至Map,在MapPhase阶段,从inputFiles源文件中读取文件内容,每个worker读取并split拆分处理后,在本地作为中间物暂时存储(intermdediate files on local disk),通知master(jobTracker)完成map phase,后master启动Reduce phase,通过shuffle洗牌阶段规则,每个worker分配到不同数量的任务后,将运行结果写入OutPut Files

  <1>Master(JobTracker)负责分配日内无到下面的各个worker(TaskerTracker)

  <2>每个worker在执行的时候,总会按时返回进度报告和具体进度所处阶段,master记录管理进度

  <3>一旦出现worker失败,master将分派这些失败的任务给新的worder

六、WordCount单词统计程序

1.计算每个单词出现的频率。输出结果按照单词的字母顺序排序。

2.对该sample,我们按照原理可以看出:

 (1)Map阶段个节点完成由输入数据到单词拆分再到单词收集的工作,并自动排序

 (2)shuffle阶段完成相同单词的聚集,分发到各个Reduce节点woker(shuffle阶段是MapReduce的默认过程,在Map阶段完成后)

 (3)Reduce阶段负责接收统计单词

在默认情况下,shuffle阶段传递的中间键值队到Reduce阶段的每个worker,虽然在Map阶段默认排序了,但是 这样的默认排序也只是每个单独worker的节点内有序,整体redue全局仍然是无序的,要想保证整体reduce有序,必须重写分配Reduce节点算法逻辑:重写Partition方法:

  shuffle阶段之后分配reduce之前,将根据map中间输出键值队中的key来决定此键值队分配给那个Partition区间,即那个reduce的worker节点。当要求最后结果有序时候,只要分配reduce的决定Partition区间是按照有序的,

七、Map/Reduce执行流程

执行的总流程我们可以总结为:代码编写——>job配置——>作业提交——>Map任务分配和执行——>处理中间结果shuffle——>Reduce任务执行和分配——>ok.

猜你喜欢

转载自flycw.iteye.com/blog/2378235