这篇文章上次修改于 1181 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
Hadoop,Hadoop,Hadoop
Hadoop
hadoop整体组成&执行过程
Hadoop的组成主要考察三个部分,分别为最著名的分布式文件系统(HDFS)、MapReduce框架、分布式数据库(HBase)组件
hdfs
hdfs名称、数据节点功能
名称节点:名称节点负责管理分布式文件系统的命名空间,它保存了两个核心的数据结构——FsImage、EditLog
- FsImage:维护文件系统树 以及 文件树中的文件和文件夹的元数据;
- EditLog:记录针对文件的创建、删除、重命名等这样的更新操作;
- 数据节点:是HDFS的工作节点,负责数据的存储和读取。会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表
hdfs从名称、数据节点读取数据与存储数据的过程
读取数据
存储数据
hbase
hbase存储的三层结构及其作用
层次 | 名称 | 作用 |
---|---|---|
第一层 | Zookeeper文件 | 记录了-ROOT-表的位置信息 |
第二层 | -ROOT-表 | 记录了.META.表的Region位置信息,-ROOT-表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据 |
第三层 | .META.表 | 记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息 |
hbase对于大数据的优势
- 容量巨大:可以在横向和纵向两个维度插入数据,具有很大的弹性
- 列存储:支持基于列的独立检索,可以大幅降低系统 I/O 吞吐量
- 稀疏性:数据以字符串形式存储,为空的列并不占用存储空间
- 扩展性强:工作在 HDFS 上,继承了 HDFS 的可扩展性
- 高可靠性:工作在 HDFS 上,HDFS 的多副本存储可以让它在岀现故障时自动恢复
hbase中region个数的计算
假设.META.表的每行(一个映射条目)在内存中大约占用1KB,并且每个Region限制为128MB,那么,上面的三层结构可以保存的用户数据表的Region数目的计算方法是:
(-ROOT-表能够寻址的.META.表的Region个数)×(每个.META.表的 Region可以寻址的用户数据表的Region个数)
- 一个-ROOT-表最多只能有一个Region,也就是最多只能有128MB,按照每行(一个映射条目)占用1KB内存计算,128MB空间可以容纳128MB/1KB=2^17行,也就是说,一个-ROOT-表可以寻址2^17个.META.表的Region。
- 同理,每个.META.表的 Region可以寻址的用户数据表的Region个数是128MB/1KB=2^17
- 最终,三层结构可以保存的Region数目是(128MB/1KB) × (128MB/1KB) = 2^34个Region
nosql(hbase)对比关系数据库的优势
比较内容 | 传统关系数据库 | 非关系型数据库 |
---|---|---|
数据类型 | 传统关系模型 | 简单的数据模型 |
数据操作 | 复杂,会涉及多表连接 | 简单,不存在表与表之间的关系 |
存储模式 | 基于行模式存储 | 基于列存储,文件是分离的 |
数据索引 | 针对不同列构建复杂的多个索引 | 只有一个行键索引 |
数据维护 | 更新操作中旧值会被覆盖 | 更新操作中会生成一个新的版本数据,旧有的版本仍然保留 |
可伸缩性 | 很难实现横向扩展,纵向扩展的空间也比较有限 | 能够轻易地实现性能的伸缩 |
Mapredus
Mapredus四大组成部分及其功能
- client客户端:
每一个Job都会在用户端通过Client类将应用程序以及参数配置打包成Jar文件存储在HDFS,并把路径提交到JobTracker的master服务,然后由master创建每一个Task,将它们分发到各个TaskTracker服务中去执行。 - JobTracker:
JobTracker负责资源监控和作业调度。JobTracker监控所有的TaskTracker与job的健康状况,一旦发现失败,就将相应的任务转移到其它节点;同时JobTracker会跟踪任务的执行进度,并合理的分配计算资源。 - TaskTracker:
TaskTracker会周期性地通过HeartBeat将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时执行JobTracker发送过来的命令 并执行相应的操作。 - Task:
Task分为MapTask和Reduce Task两种,均由TaskTracker启动,是具体的执行部分。
Mapredus对传统框架优势
比较内容 | 传统并行计算框架 | MapReduce |
---|---|---|
架构 | 共享式资源(内存/存储),容错性差 | 非共享式资源,容错性好 |
硬件 | 多为服务器配置、网络要求高、价格贵、拓展性差 | 普通计算机、便宜、拓展性好 |
学习成本 | what-how,高 | what,较低 |
适用场景 | 实时、细粒度计算、计算密集型 | 批处理、非实时、数据密集型 |
Mapredus每个模块如何完成输入输出
- Mapper:
Mapper包含setup、map、cleanup三个函数。Mapper任务启动后首先执行setup进行初始化工作;再执行map,针对每条输入键值对执行函数定义的逻辑处理,并按照规定的键值对格式输出;在所有键值对处理完成后执行cleanup进行关闭资源。 - Reducer:
reducer会取得map阶段的键值对格式输出结果,并应用于用户定义的reducer函数进行处理,将最后的结果储存到HDFS中
没有评论