Hadoop是什么?
大量数据进行分布式处理的软件框架,存储HDFS和计算Map/Reduce,像使用单机一样使用分布式,用户可以不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速计算和存储。
Hadoop背景与现状?
- 大型企业将Hadoop 技术运用在自身的服务中。
- Hadoop解决方案的商业型公司也纷纷跟进,提供Hadoop的商业服务。
- 越来越多的企业将Hadoop 技术作为进入大数据领域的必备技术。
Hadoop - MR特性:
将task分解为多个碎片任务(map),将map发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里。
- 集群最大节点数–4000
- 最大并发任务数–40000
- Job Tracker负载较重
- 存在单点故障SPOF(Single Point Of Failure), 一旦故障,所有执行的任务的全部失败。
- 仅仅使用Map / Reduce一种计算方式
- 把资源强制划分为 map task slot 和 reduce task slot, 当系统中只有map task或者只有reduce task的时候,会造成资源的浪费。
Hadoop MapReduce应用程序:
一个代表客户机在单个主系统上启动的MapReduce应用程序称为JobTracker。它是 Hadoop 集群中唯一负责控制MapReduce应用程序的系统。
工作机制:在应用程序提交之后,将提供包含在 HDFS 中的输入和输出目录。JobTracker 使用文件块信息(物理量和位置)确定如何创建其他 TaskTracker 从属任务。
例子说明:输入域是 one small step for man, one giant leap for mankind
这个域上运行 Map 函数将得出以下的键/值对列表:(one,1) (small,1) (step,1) (for,1) (man,1) (one,1) (giant,1) (leap,1) (for,1) (mankind,1)
这个键/值对列表应用 Reduce函数,将得到以下一组键/值对:(one,2) (small,1) (step,1) (for,2) (man,1)(giant,1) (leap,1) (mankind,1)
解读:输入域信息分别分布在不同的map上,这时可以得到对应的reduce,在进行一个整合得到单独的reduce,将单独的reduce到输出域。Map是把输入Input分解成中间的Key/Value对,Reduce把Key/Value合成最终输出Output。
Hadoop-HDFS特性
基于一组特定的节点构建的分级文件系统,可实现增、删、改、查等功能。HDFS内部的所有通信都基于标准的 TCP/IP 协议。
一个NameNode节点:提供元数据服务,管理文件系统名称空间和控制外部客户机的访问。
大量DataNode节点:提供存储块Blocks(数据块),定期向NameNode发送心跳信息,汇报自身、block信息以及健康信息。
工作机制:实际的I/O事务并没有经过NameNode,只有表示DataNode和块的文件映射的元数据经过NameNode。当外部客户机发送请求要求创建文件时,NameNode会以块标识和该块的第一个副本的DataNode IP地址作为响应。这个NameNode还会通知其他将要接收该块的副本的DataNode。
NameNode的本地文件上包含两个文件,一个是EditLog:包含所有事务的记录文件,另一个是FsImage:存储所有关于文件系统名称空间的信息。
分布式集群
分布式是以缩短单个任务的执行时间来提升效率的,集群则是通过提高单位时间内执行的任务数来提升效率。大型网站的演变流程:从最开始的架构只有应用程序,数据库,文件服务,再到分布式服务、集群架设。
- 高可用集群(High Availability Cluster)
- 负载均衡集群(Load Balance Cluster,nginx即可实现)
- 科学计算集群(High Performance Computing Cluster)
集群中的工作分布
工作机制:将为特定节点上的每个文件块创建一个惟一的从属任务。每个 TaskTracker 将状态和完成信息报告给 JobTracker。