Hadoop

熟悉大数据的同学,对Hadoop一定不会陌生,Hadoop是Apache的顶级项目。

1.概述

  Hadoop是一个对大型数据集进行存储和计算的软件系统,单个→千台计算机,联合进行计算和存储。

2.Hadoop模块

Hadoop Common:

  支持其他Hadoop模块的常用程序。

Hadoop HDFS(Hadoop Distributed File System):

  Hadoop分布式文件系统,提供应用程序数据的高吞吐量访问。HDFS有着高容错性的特点,并且设计用来部署在低廉的硬件上。

YARN:

  作业调度和集群资源管理的框架。

MapReduce:

  一种计算模型,并行处理大型数据集。Map生成键值,Reduce对中间结果中相同的“键”进行“值”归约。

核心:HDFS,MapReduce

3.HDFS架构

主/从结构
1个Master带N个Slaves
1:NameNode
N:DataNode
DN定期向NN发送心跳信息,汇报自身及所有block信息,健康状况。
NameNode:
  (1)NameNode是一个中心服务器,单一节点,负责管理文件系统的名字空间以及客户端对文件的访问。
  (2)文件操作,Namenode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经NameNode。只会询问它和那个DataNode联系,否则NameNode会成为系统的瓶颈。
  (3)副本存放在那些DataNode由NameNode控制。根据全局情况作出块放置的决定。读取文件时,NameNode尽量先让用户读取最近的副本,降低带块消耗和读取时延。
  (4)NameNode全权管理数据块的复制,它周期性地从集群中的每个DataNode接收心跳信号和块状态报告(BlockReport),接收到心跳信号以为这该DataNode节点工作正常。块状态报告包含了一个该DataNode所有的数据块列表。
DataNode:
  (1)一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
  (2)DataNode启动后向Namenode注册,通过后,周期性的向NameNode报告所有的块信息。
  (3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令,如果复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。
  (4)集群运行中可以安全加入和退出一些机器。
1个文件被拆成多个block,默认保存3份,默认每个block为128M。
130–>2个,1个128M,1个2M
如图:
avatar

4.HDFS副本机制

block默认保存3份。
block大小和备份份数都可以配置。
除了最后一个block(块),前面的块相同。
128m|128m|2m
一个DataNode存储多个block
NameNode(Filename,numReplicas,block=ids,…)
/users/sameerp/data/part-0,r:2,{1,3},…
/users/sameerp/data/part-0,r:3,{2,4,5},…
如图:
avatar

5.分布式计算框架MapReduce(并行编程模式,将任务分不到上千台集群节点)

采用“分而治之”的思想,把大规模数据集拆分吗,并行计算
多个子任务汇总。主要靠:
Map:把任务分解成多个任务。
Reduce:把分解后的多任务处理的结果汇总。
MapReduce编程模型
·input
·map&reduce
·output
距离词频统计WordCount:
avatar
Input–> //输入数据
Splitting–> //分割数据,每行一块,按空格分割单词
Mapping–> //每块每个单词处理下出现的次数
Shuffling–> //相同单词分一起,每个单词出现一次
Reducing–> //每个单词的次数求和
Final Result–> //结果汇总
MapReduce体系结构:
avatar
Client:用户编写的MR程序通过Client提交到JobTracker端。
Job Tracker:负责资源调度作业,监控所有TaskTrack和Job的健康状况。失败则转移到其他节点。跟踪任务的执行进度,资源使用,把这些信息高速TaskTracker(任务调度器),调度何时选择task执行。
TraskTracker:周期通过“心跳”(主从节点的通信时间间隔),向Job Tracker汇报任务进度,资源使用,同时接收Job Tracker的命令。如启动新Task,杀旧Task。
从节点仅负责由主节点指派的任务。
Task:Map Task,Rduce均由TrackTracker启动。
MR特点:
易于编程
良好的扩展性
高容错性
海量数据的离线处理
MR不擅长:
实时计算
流式计算
DAG计算

文件格式

avatar