Hadoop大数据平台架构与实践
《Hadoop权威指南》
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。
对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。
MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。
1、主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;
2、从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。
从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理
HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,
MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务
MapReduce
Bigtable
GFS
- 成本降低 使用PC机就可以,不需要大型机和高端存储
- 软件容错,视硬件故障为常态
- 简化并行分布式计算,无需控制节点同步和数据交换
Hadoop:模仿Google的大数据技术的开源实现
Hadoop:分布式存储和分布式计算平台
核心组成:
HDFS 分布式文件系统
MapReduce 并行处理框架
Hadoop用来做什么?
日志分析 商业智能 数据挖掘
优势 1高扩展 2低成本 3成熟生态圈
Hadoop运维和开发人员 较为急需
Hadoop 生态系统及版本
Hive 小蜜蜂 SQL—>Hadoop任务
降低了使用Hadoop的门槛
HBase 存储结构化数据的分布式数据库
放弃了事务特性,追求更高的扩展
Hbase 提供数据的随机读写和实时访问
可以对表数据进行读写
ZooKeeper 监控节点 集群 状态
Hadoop1.x版本
Hadoop2.x版本
Hadoop的核心 HDFS
块
默认64M
块是文件传输处理的逻辑单元
两类节点:
NameNode 管理节点 存放文件元数据。存储;
文件—数据库块的映射表
数据块-数据节点的映射表
DataNode 工作节点 存放数据
Hbase原理、基本概念、基本架构
HBase详细概述
LSM树由来、设计思想以及应用到HBase的索引
HBase不是关系型数据库,也不支持SQL,但是它有自己的特长,这是RDBMS不能处理的,HBase巧妙地将大而稀疏的表放在商用的服务器集群上。
HBase是一个构建在HDFS上的分布式列存储系统;
HBase是基于Google BigTable模型开发的,典型的key/value系统;
HBase是Apache Hadoop生态系统中的重要一员,主要用于海量结构化数据存储;
从逻辑上讲,HBase将数据按照表、行和列进行存储。
与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力
Hbase表的特点
大:一个表可以有数十亿行,上百万列;
无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;
面向列:面向列(族)的存储和权限控制,列(族)独立检索;
稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;
数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;
数据类型单一:Hbase中的数据都是字符串,没有类型。
没有真正的索引,不存在索引膨胀的问题
Hbase:
大数据量存储,大数据量高并发操作
需要对数据随机读写操作
读写访问均是非常简单的操作
HBase上的数据是以StoreFile(HFile)二进制流的形式存储在HDFS上block块儿中;但是HDFS并不知道的hbase存的是什么,它只把存储文件是为二进制文件,也就是说,hbase的存储数据对于HDFS文件系统是透明的。
Memstore是一个按key排序的树形结构的缓冲区
StoreFile和HFile是一个东西,站的角度不同叫法不同,对于HDFS来说,叫HFile,在Hbase中叫StoreFile
1、Hive是支持SQL语句的,执行会调用Mapreduce,所以延迟比较高;
2、HBase是面向列的分布式数据库,使用集群环境的内存做处理,效率会比hive要高,但是不支持sql语句。
Hadoop开发和运行处理大规模数据,需要用hbase做数据库,但由于hbase没有类sql查询方式,所以操作和计算数据非常不方便,于是整合hive,让hive支撑在hbase数据库层面的 hql查询,hive也即做数据仓库。