您的位置:首页 > 大数据

初步了解HDFS与MapReduce

2015-10-15 14:32 246 查看
hadoop是一个开源框架,可编写和运行分布式应用和处理大规模数据

核心是HDFS以及MapReduce

HDFS 分布式文件系统

HDFS具备的优点:

1)高容错性,数据自动保存多个副本在不同机架上,提高容错性,副本数低于最小副本数时会自动备份,我们无需关心具体实现

2)适合批处理,通过移动计算,而不是移动数据

3)适合大数据,处理数据达到TB甚至PB级,能够处理百万以上规模的文件(由于NN的构造,不适合处理数量多的小文件)

4)流式文件访问,文件只能进行读写操作,不能进行修改操作(修改文件名不算),参考网盘的概念

5)可构建在廉价的机器上,因为是靠集群的性质来实现的,所以不需要太好的机器,通过保存多副本(增加了冗余)提高可靠性,不易丢失

不适用的场景

1)低延迟数据访问,无法做到毫秒内的读写数据,它适合高吞吐率的场景,比如某一时刻写入大量数据

2)小文件存储,这样NN会消耗大量内存,NN存储的是metadata,这些数据都在内存中,读取小文件寻道时间会超过读写时间,违反HDFS设计思路

3)并发写入,文件随机修改,不允许多线程同时写一个文件,只支持文件的增删,不能修改

HDFS如何存储数据:

HDFS采用Master/Slave的架构存储数据,由4个部分组成HDFS Client、NameNode、DataNode、SecondaryNameNode。

Client:客户端,切割文件,把文件切分成固定大小的block块(默认64MB),与NN交互获取文件位置信息,与DN交互读写文件

NameNode(NN):Master角色,管理HDFS的名称空间,管理block的映射信息,配置副本策略(block存储在哪里),处理客户端读写请求

DataNode(DN):Slave角色,存储block,NN下达命令,DN执行。

SecondaryNameNode(SNN):辅助NN,定期合并fsimage与fsedits,减少NN启动时间,并推送给DN,假如NN挂掉了,SNN可帮助其恢复一部分数据(它不是NN的备份,但是可以做备份,DNN保存了上次合并的fsimage与edits信息,推送到SNN后生成的edits文件会丢失)。 合并fsimage后把新生成的fsimage推送给DN,替换原来的文件。

------根据配置文件fs.checkpoint.period设置合并的时间间隔,默认3600s

------根据配置文件设置edits log大小fs.checkpoint.size规定edits文件的最大值合并,默认64MB

HDFS如何读写文件,以及副本保存参加下节。

MapReduce:分布式数据处理模型和执行环境

包含map函数与reduce函数,map相当于对文件进行简单的整理合并。reduce写的才是核心的业务逻辑(我暂时这么理解)

map任务处理:读取输入文件,解析成key-value,对输入文件的每一行解析成key-value形式,每个键值对调用一次map函数,用自己的逻辑处理这些数据,比如把key相同的value合并,排序。。

reduce任务处理:对多个map的输出分配到不同的reduce节点,编写自己的逻辑,最终输出到文本中

设计思想:

把大数据拆成几份,并行处理,隐藏具体的实现细节,让程序员更关注业务逻辑处理。

PS:

metedata(元数据,除文件内容外的数据,文件大小,后缀,权限。。。。)

block保存在哪个DN重不会保存在fsimage中,但是启动时DN会重新上报到内存中,fsimage保存的是元数据信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息