Hadoop的前世今生

一. Hadoop的诞生

大数据核心问题:分布式存储和分布式处理

1.Google“三驾马车”——GFS、Big Table、Map Reduce

(1)GFS

文件存储:数据以数据块(块的大小固定为128M)的形式存储在块服务器上,元数据将文件地址和数据块位置信息存储在master服务器上,客户端程序通过向Master请求数据块的访问,Master返回块所在服务器的位置信息,客户端直接与块服务器交互进行数据读取。块服务器向Master返回心跳,表示服务器在运行。

读数据:客户端程序向Master请求读取某个文件—>Master返回文件和副本地址—>客户端程序访问最近文件所在的块服务器读取数据。

写数据:客户端程序向Master请求写入数据—>Master根据块服务器的空闲位置分配可写入数据的块位置(2+1模式)—>Master写入元数据信息(怎么写,写到哪)—>客户端将数据写给最近的块服务器,然后该服务器将新数据生成副本发送到另外两个地址存储。

(2)Big Table

保存表:a list of sorted <key,value>键值对列式存储(即首先索引列名,然后在该列中找到符合条件的行记录)表记录。

保存超大表:超大表 = a list of 小表;小表 = a list of 小小表;小小表 = a list of sorted <key,value>

读表:类似GFS读方式,客户端程序向NameNode请求表地址,NameNode返回表所在的DataNode地址,客户端在DataNode中索引表的列,找到想要的数据。

写表:类似GFS写方式。

(3)MapReduce

MapReduce程序启动(Hadoop 1.0)

客户端程序向JobTracker服务器(主)申请启动job进程,job进程根据数据块情况创建相应数量的Task任务,并与TaskTracker服务器(从)定时通信,了解从服务器CPU空闲情况,分配Task任务给数据块所在服务器(即与HDFS的DataNode进程一同出现)。TaskTracker收到任务启动Task进程并运行Map或Reduce进程,检查本地是否有jar包,没有就上HDFS上下载,并启动Map或Reduce程序。

MapReduce程序执行

Map 进程:从本机读入数据为<key,value>键值对,通过map程序输出为另一<key,value>对,并调用Partitioner接口

—>shuffle(由MapReduce计算框架完成,Partitioner接口实现):将Map产生的具有相同键的键值对通过HTTP通信发送给同个Reduce进程

—>Reduce进程:对收到的<key,value>进行排序和合并,相同key放在一起,组成<key,value集合>传递给Reduce执行。

2.Hadoop的核心组件——HDFS、MapReduce、Yarn(更新中)

 

二、Hadoop生态中各组件的应用场景和解决的问题

1.大规模数据的交互查询

Hive、Spark SQL、Impala

2.基于大规模历史数据的批处理

MapReduce、Hive

3.基于实时数据的流处理

Storm、Spark Streaming

4.基于图结构数据的图计算

三、Hadoop的未来(更新中)

1.Spark的出现

 

2.Hadoop与Spark共同部署

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值