Hadoop介绍

whulovely 2019-06-27

1. 发展简要

Hadoop包含了HDFS(用于分布式储存)和Map-Reduce(用于并行计算)。Hadoop主要分为两个大版本,1.0和2.0

1.0版本

  • Map-Reduce不仅负责并行计算,还用来整合底层CPU、内存等资源,把计算内容分配到这些资源上去。这种框架导致了Map-Reduce需要管理的太多,运行效率低下
  • HDFS可扩展性不够好,且只有一个NameNode,单点失效后,整个系统都会不可用

2.0版本

  • 将Map-Reduce的资源调度管理部分专门抽离,做成了Yarn,而Map-Reduce只负责并行计算的部分。同时Yarn还可以支持其它并行计算的框架,如Storm(流计算)和Spark(同样运用了Map-Reduce思想,但主要是将计算放在内存中,不同MapReduce在硬盘中,速度更快)
  • HDFS引入NameNode Federation(多个NameNode共同管理数据)和High Avalability(对NameNode做热备份,保证容灾)

2. Hadoop项目结构

Hadoop介绍

  • Tez会将MapReduce作业进行分析优化,并构建一个有向无环图,提高任务处理效率
  • 因MapReduce的计算是在硬盘中,所以现在主要进行一些实时性不高的离线计算和大量数据的批处理
  • Hive将SQL语句转化为MapReduce作业,方便使用。主要提供批量处理
  • Pig提供流数据处理
Hive和Pig是构建于MapReduce上的,因MapReduce虽然已经封装屏蔽了很多复杂操作,但是其编程仍然复杂。一个简单的作业需要编写较多内容
  • Hbase支持随机和实时读写的非关系型数据库,NoSQL
  • Sqoop将以前的关系数据库中的数据快速导入到HDFS和Hbase这些里面

1) HDFS

HDFS: Hadoop Distributed File System

2) HBase

HBase:Hadoop DataBase
主要用于存储非结构化和半结构化的松散数据

  1. 因Hadoop主要用于解决大规模数据离线批量处理,而无法满足大数据实时处理的需求。
  2. 传统关系型数据库扩展能力有限,难以应对大规模数据存储要求
  3. 大数据背景下,数据零散且价值密度小,导致很多数据结构会经常性变化,而关系数据库的结构模式一旦确定后变更较难,甚至需要暂停整个数据库来完成变更操作

以上原因以及其他,促使了HBase的诞生

与关系数据库比较

  1. 数据类型:关系数据库采用非常经典的关系数据模型,具备text、LongText、char等,而HBase中只有一种数据类型(Bytes),所有数据均储存为未经解释的字符串
  2. 数据操作:关系数据库中的操作很多,如查询、更新、删除等
  3. 存储模式:关系数据库是基于行模式储存,HBase基于列模式
  4. 数据索引:关系数据库大于大规模(涉及多表)查询时,需要构建出非常复杂的索引。HBase中的数据经常就存储在一张表中,所以在查询时无需跨表,查询速度快
  5. 数据维护:关系数据在进行数据更新操作时,实际上旧的值会被新的值覆盖掉。而HBase中的所有值都会被存储,只有超过了设定的超时时间后,旧的数据才会被自动清除
  6. 可伸缩性:关系数据水平很难扩展,只能在纵向扩展。而HBase中的数据可以水平扩展

相关推荐