数仓面试题2
数仓与关系型数据库的区别?
1、数据库有相对复杂的表格结构,存储结构相对紧致而数据仓库则是相对简单的表格结构,存储结构相对松散
2、数据库在读和写两方面都有优化,数据仓库一般只是读优化
3、数据库单次操作作用于少量数据,数据仓库单次操作作用与大量的数据
4、数据库支持单条数据的修改,数据仓库不支持
5.数据库可以和用户进行交互,数据仓库不行
2、数据仓库为什么分层?优缺点?
分层原因:
1、用空间换时间。通过建设多层次 的数据模型供用户使用,避免用户直接使用操作型数据,可以更高效的访问数据。
2、把复杂问题简单化,将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单。而且便于维护数据的准确性,当数据出现问题之后,可以不用修改所有数据,只需要从有问题的步骤开始修复
3、便于处理业务化的变化,随着业务的变化,只需要调整底层的数据
优点:
高效的数据组织形式(易维护)
面向主题的特性决定了数据仓库拥有业务数据库所无法拥有的高效的数据组织形式,更加完整的数据体系,清洗的数据分类和分层机制。因为所有数据在进入数据仓库之前都经过清洗和过滤,使原始数据不再杂乱无章,基于优化查询的组织形式,有效提高数据获取、统计和分区的效率
时间价值(高性能)
数据仓库的构建将大大的缩短获取信息的时间,数据仓库作为数据的集合,所有的信息都可以从数据仓库之间获取,数据仓库的最大优势在于一旦底层从各类数据源到数据仓库的ETL流程构建成型,那么每天就会有来自各方面的信息通过自动任务调度的形式流入数据仓库,从而使一切基于这些底层信息的数据获取的效率达到迅速提升。
集成价值(简单化)
数据仓库是所有数据的集合,包括日志信息,数据库数据、文本数据、外部数据等都集成在数据仓库中,对于应用来说,实现各种不同数据的关联将使多为分析更加方便,为从多角度多层次地分析和决策制定提供可能。
历史数据(历史性)
记录历史是数据仓库的特性之一,数据仓库能够还原历史时间点上的产品状态、用户状态、用户行为等,以便于能更好的回溯历史,分析历史,跟踪用户的历史行为,更好的比较历史和总结历史了,同时根据历史预测未来。
缺点:
数据的大量冗余会占据大量的存储空间,增加hdfs的存储负担
6.hive与Hbase的区别与联系
Hive:
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能
Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。Hive需要用到hdfs存储文件,需要用到MapReduce计算框架
Hive可以认为是MapReduce的一个包装,Hive的意义就是把好写的Hql语句转换为复杂的MapReduce程序
HBase:
Hbase是hadoop的数据库,一个分布式、可扩展、大数据的存储
Hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作
hbase可以认为是hdfs的一个包装,他的本质是数据存储是个NoSql数据库;hbase不属于hdfs之上,并且克服了hdfs在随机读写方面的缺点
两者联系:
Hbase和hive在大数据架构中虽然处在不同位置,Hbase主要解决实时数据查询问题,HIve主要解决数据处理和计算问题,一般配合使用。
协作流程:
1.通过ETL工具将数据源抽取到HDFS存储
2.通过hive清洗、处理和计算原始数据
3.hive清洗处理后的结果,如果是面向海量数据随机查询场景的可存入Hbase
4.数据应用从Hbase查询数据