作者:weijun520 | 来源:互联网 | 2023-07-28 19:30
Hadoop生态系统HDFS:构建于廉价计算机集群之上的分布式文件系统,低成本、高可靠性、高吞吐量HBase:一种分布式的、按列存储的数据库,适合于非结构化海量数据存储MapRed
Hadoop 生态系统
- HDFS :构建于廉价计算机集群之上的分布式文件系统,低成本、高可靠性、高吞吐量
- HBase:一种分布式的、按列存储的数据库,适合于非结构化海量数据存储
- MapReduce: 分布式数据编程模型和执行环境
- Pig:适合海量数据分析的脚本语言工具,包括了一个数据分析语言和支持的运行环境
- Hive:一种分布式、按列存储的数据仓库,提供强大的类SQL查询功能
- ZooKeeper:一种分布式的、可用性高的协调服务,并提供分布式锁同步功能和群组管理功能
- Sqoop:在结构化数据存储和HDFS之间高效批量传输数据
- YARN:可为各类应用程序进行资源管理和调度,不同的YARN应用可以在同一个集群上共存
- Spark:基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序
Google Mapreduce的思想
- 如何对付大数据处理:分而治之
- – 对相互间不具有计算依赖关系的大数据,实现并行最自然的办法就是采取分而治之的策略
- 上升到抽象模型: Mapper与Reducer
- – MPI等并行计算方法缺少高层并行编程模型
- – 为了克服这一缺陷, MapReduce借鉴了Lisp函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型
- 上升到构架:统一构架,为程序员隐藏系统层细节
- – MPI等并行计算方法缺少统一的计算框架支持,程序员需要考虑数据存储、划分、分发、结果收集、错误恢复等诸多细节
- – MapReduce设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统层面的处理细节
HDFS的核心组成
- NameNode
- DataNode
- SecondaryNameNode
- Client客户端
Hadoop 2.0
Hadoop 2.0由HDFS、 MapReduce和YARN等构成
- HDFS: HDFS Federation、 NameNode HA
- MapReduce:运行在YARN上的MapReduce
- YARN:一个全新的通用集群资源管理系统,可为各类应用程序进行资源管理和调度,不同YARN应用可以在同一个集群上共存
YARN的工作机制
- 1.用户申请运行作业
- 2.作业客户端从资源管理器(ResourceManager)获取新的作业ID
- 3.作业客户端检查作业的输出说明,计算分片并将作业资源复制到HDFS
- 4.调用资源管理器的submitApplication()方法提交作业
- 5.1.资源管理器采用调度器为作业分配一个Container,并请求NodeManage启动该Container及MRAppManager
- 5.2.节点管理器在Container中启动应用程序的MRAppMaster进程
- 6.MRAppMaster进程创建多个对象以保持对作业进度的跟踪;向ResourceManager注册
- 7.接受来自HDFS的在客户端计算的输入分片
- 8.为该作业的所有map任务和reduce任务向资源管理器请求容器
- 9.资源管理器为任务分配容器后, applicationmaster通过与节点管理器通信来启动容器
- 10.YarnChild将任务需要的资源本地化:包括作业的配置、 JAR文件和所有来自分布式缓存的文件
- 11.运行map任务或者reduce任务
Hive
Hive 数据模型
库( Database)、表( Table)、分区( Partition)和桶( Bucket)
- – 库( Database):若干数据表的集合
- – 表( Table):表在逻辑上由存储的数据和描述表中数据形式的相关元数据组成,每张表中的数据以文件的形式存储在相应的HDFS目录下,元数据存放在关系数据库中
- – 分区( Partition):分区是为了在数据量过大时提高数据存储效率而对表进行划分的机制
- e.g., to range-partition tables by date
- – 桶( Bucket):通过对指定列值进行Hash并将结果除以桶的个数取余数的方法,将一张表或分区分到不同桶中,从而获得更高查询处理效率或者使取样更高效
- Hash partitions within ranges
HQL-Hive Query Language
- 提供给数据分析人员使用的类似SQL的命令语法
- 不是SQL语言所遵循的SQL-92标准中的全集:非全集,有扩展
Hive与Pig的对比
Hive和Pig的共同点
– 都提供了一种简单易用的脚本语言
– 都是基于MapReduce的数据分析脚本运行环境
HBase
- HBase是Hadoop数据库,它是一个可以随机访问的、 实时存储和检索大数据的平台,它的目标是在集群环境下支持大表的高性能访问
- Hbase是一个在HDFS上开发的面向列的分布式数据库。 如果需要实时的随机访问超大规模数据集,就可以使用Hbase这一Hadoop 应用
HBase物理存储结构
包括 Table、Region、Store、Hfile
Hbase 对比 关系型数据库管理系统(RDBMS)
BigTable
Big Table数据结构 - 半三维魔方结构
- Bigtable是一个经过排序的、稀疏的、分布式的、持久化存储的多维度影射表
- BigTable表通过行关键字( Row Key)、列关键字( Column Key)和时间戳( Time Stamp)三个维度来构成索引
- i.e. (row: string , column: string , qualifier:string, time:int64 ) String.
- 行通过行关键字按字典顺序排列
- 列表示为 family : qualifier.
- 单元格Cells可以通过timestamp存储多个版本的数据值.
- BigTable是一种为了管理( Semi-)结构化数据而设计的分布式存储系统,这些数据可以扩展到非常大的规模,例如在数千台商用服务器上的达到PB(Petabytes)规模的数据
- BigTable不是传统的关系型数据库,不支持JOIN这样的SQL语法, BigTable更像今日的NoSQL,优势在于扩展性和性能