hdfs的介绍
hdfs的概述:
HDFS ( Hadoop Distributed File System )是 Apache Hadoop 项目的一个子项目 . Hadoop 非常适于存储大型
数据 ( 比如 TB 和 PB), 其就是使用 HDFS 作为存储系统 . HDFS 使用多台计算机存储文件 , 并且提供统一的访问接口 ,
像是访问一个普通文件系统一样使用分布式文件系统 .
hdfs的特点
- HDFS文件系统可存储超大文件,时效性稍差。
- HDFS具有硬件故障检测和自动快速恢复功能。
- HDFS为数据存储提供很强的扩展能力。
- HDFS存储一般为一次写入,多次读取,只支持追加写入,不支持随机修改。
- HDFS可在普通廉价的机器上运行。
hdfs架构
- HDFS 采用 Master/Slave 架构
- 一个 HDFS 集群有两个重要的角色,分别是 Namenode 和 Datanode 。
- HDFS 的四个基本组件 : HDFS Client 、 NameNode 、 DataNode 和 Secondary NameNode 。
hafs的副本架构
- HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。它将每个文件存储成一系列的数据块,这个数据块 被称为block,除了最后一个,所有的数据块都是同样大小的。
- hdfs 默认文件 :https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
- 为了容错,文件的所有block都会有副本。每个文件的数据块大小和副本系数都是可配置的。
- hadoop 当中, 文件的 block 块大小默认是 128M(134217728字节)。
hive介绍
hive的概述
- hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据:可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能;可以将SQL语句转换为MapReduce任务运行,通过自己的SQL查询分析需要的内容,这套SQL简称Hive SQL,使不熟悉mapreduce的用户可以很方便地利用SQL语言查询、汇总和分析数据。而mapreduce开发人员可以把自己写的mapper和reducer作为插件来支持hive做更复杂的数据分析。它与关系型数据库的SQL略有不同,但支持了绝大多数的语句如DDL、DML以及常见的聚合函数、连接查询、条件查询。它还提供了一系列的工具进行数据提取转化加载,用来存储、查询和分析存储在Hadoop中的大规模数据集,并支持UDF(User-Defined Function)、UDAF(User-Defined AggregateFunction)和UDTF(User-Defined Table-Generating Function),也可以实现对map和reduce函数的定制,为数据操作提供了良好的伸缩性和可扩展性。 [2]
- hive不适合用于联机(online)事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。hive的特点包括:可伸缩(在Hadoop的集群上动态添加设备)、可扩展、容错、输入格式的松散耦合。
体系结构
Hive架构中主要包括客户端(Client)、Hive Server、元数据存储(MetaStore)、驱动器(Driver)。
Hive的数据存储模型
Hive主要包括三类数据模型:表(Table)、分区(Partition)和桶(Bucket)。
Hive中的表类似于关系数据库中的表。表可以进行过滤、投影、连接和联合等操作。表的数据一般存储在HDFS的目录中,Hive的表实质上对应Hadoop文件系统上的一个目录。Hive将表的元数据存储在关系型数据库中,实现了元数据与数据的分离存储。
Hive根据分区列(Partition Column)的值将表以分区的形式进行划分,例如具有“日期”分区列的表可以根据日期划分为多个分区。表中的一个分区对应表所在目录下的一个子目录。