初步了解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保存的是元数据信息
核心是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保存的是元数据信息
相关文章推荐
- 详解HDFS Short Circuit Local Reads
- Hadoop_2.1.0 MapReduce序列图
- 使用Hadoop搭建现代电信企业架构
- 单机版搭建Hadoop环境图文教程详解
- 康诺云推出三款智能硬件产品,为健康管理业务搭建数据池
- MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教程
- hadoop常见错误以及处理方法详解
- hadoop 单机安装配置教程
- hadoop的hdfs文件操作实现上传文件到hdfs
- hadoop实现grep示例分享
- MongoDB中的MapReduce简介
- MongoDB学习笔记之MapReduce使用示例
- MongoDB中MapReduce编程模型使用实例
- php+ajax导入大数据时产生的问题处理
- C# 大数据导出word的假死报错的处理方法
- Apache Hadoop版本详解
- MapReduce中ArrayWritable 使用指南
- Java函数式编程(七):MapReduce
- Hadoop之HBase学习笔记