这篇文章上次修改于 1181 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

Hadoop,Hadoop,Hadoop

Hadoop

hadoop整体组成&执行过程

图片1.png

Hadoop的组成主要考察三个部分,分别为最著名的分布式文件系统(HDFS)、MapReduce框架、分布式数据库(HBase)组件

hdfs

hdfs名称、数据节点功能

  • 名称节点:名称节点负责管理分布式文件系统的命名空间,它保存了两个核心的数据结构——FsImage、EditLog

    • FsImage:维护文件系统树 以及 文件树中的文件和文件夹的元数据;
    • EditLog:记录针对文件的创建、删除、重命名等这样的更新操作;
  • 数据节点:是HDFS的工作节点,负责数据的存储和读取。会根据客户端或者是名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表

hdfs从名称、数据节点读取数据与存储数据的过程

读取数据

图片2.jpg

存储数据

图片3.jpg

hbase

hbase存储的三层结构及其作用

层次名称作用
第一层Zookeeper文件记录了-ROOT-表的位置信息
第二层-ROOT-表记录了.META.表的Region位置信息,-ROOT-表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据
第三层.META.表记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息

hbase对于大数据的优势

  1. 容量巨大:可以在横向和纵向两个维度插入数据,具有很大的弹性
  2. 列存储:支持基于列的独立检索,可以大幅降低系统 I/O 吞吐量
  3. 稀疏性:数据以字符串形式存储,为空的列并不占用存储空间
  4. 扩展性强:工作在 HDFS 上,继承了 HDFS 的可扩展性
  5. 高可靠性:工作在 HDFS 上,HDFS 的多副本存储可以让它在岀现故障时自动恢复

hbase中region个数的计算

假设.META.表的每行(一个映射条目)在内存中大约占用1KB,并且每个Region限制为128MB,那么,上面的三层结构可以保存的用户数据表的Region数目的计算方法是:

(-ROOT-表能够寻址的.META.表的Region个数)×(每个.META.表的 Region可以寻址的用户数据表的Region个数)
  1. 一个-ROOT-表最多只能有一个Region,也就是最多只能有128MB,按照每行(一个映射条目)占用1KB内存计算,128MB空间可以容纳128MB/1KB=2^17行,也就是说,一个-ROOT-表可以寻址2^17个.META.表的Region。
  2. 同理,每个.META.表的 Region可以寻址的用户数据表的Region个数是128MB/1KB=2^17
  3. 最终,三层结构可以保存的Region数目是(128MB/1KB) × (128MB/1KB) = 2^34个Region

nosql(hbase)对比关系数据库的优势

比较内容传统关系数据库非关系型数据库
数据类型传统关系模型简单的数据模型
数据操作复杂,会涉及多表连接简单,不存在表与表之间的关系
存储模式基于行模式存储基于列存储,文件是分离的
数据索引针对不同列构建复杂的多个索引只有一个行键索引
数据维护更新操作中旧值会被覆盖更新操作中会生成一个新的版本数据,旧有的版本仍然保留
可伸缩性很难实现横向扩展,纵向扩展的空间也比较有限能够轻易地实现性能的伸缩

Mapredus

Mapredus四大组成部分及其功能

  1. client客户端:
    每一个Job都会在用户端通过Client类将应用程序以及参数配置打包成Jar文件存储在HDFS,并把路径提交到JobTracker的master服务,然后由master创建每一个Task,将它们分发到各个TaskTracker服务中去执行。
  2. JobTracker:
    JobTracker负责资源监控和作业调度。JobTracker监控所有的TaskTracker与job的健康状况,一旦发现失败,就将相应的任务转移到其它节点;同时JobTracker会跟踪任务的执行进度,并合理的分配计算资源。
  3. TaskTracker:
    TaskTracker会周期性地通过HeartBeat将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时执行JobTracker发送过来的命令 并执行相应的操作。
  4. Task:
    Task分为MapTask和Reduce Task两种,均由TaskTracker启动,是具体的执行部分。

Mapredus对传统框架优势

比较内容传统并行计算框架MapReduce
架构共享式资源(内存/存储),容错性差非共享式资源,容错性好
硬件多为服务器配置、网络要求高、价格贵、拓展性差普通计算机、便宜、拓展性好
学习成本what-how,高what,较低
适用场景实时、细粒度计算、计算密集型批处理、非实时、数据密集型

Mapredus每个模块如何完成输入输出

  1. Mapper:
    Mapper包含setup、map、cleanup三个函数。Mapper任务启动后首先执行setup进行初始化工作;再执行map,针对每条输入键值对执行函数定义的逻辑处理,并按照规定的键值对格式输出;在所有键值对处理完成后执行cleanup进行关闭资源。
  2. Reducer:
    reducer会取得map阶段的键值对格式输出结果,并应用于用户定义的reducer函数进行处理,将最后的结果储存到HDFS中