hive和Hadoop、spark、HDFS、Hbase是什么?
什么是ETL:
即extract:提取
transform:转换
load:加载
ETL其实是数据清洗后的数据
什么是数据中台:
从抽取数据开始,到最终用户看到,这一系列过程都是数据中台;
指的是一套数据应用和工具,包括分布式ETL、数据资产管理、数据标签管理、数据沙箱、自助分析平台、元数据管理、数据质量管理等等,底层则已现有的数仓、大数据平台等为数据源,为企业提供数据资产管理的能力,并持续挖掘数据价值,持续提供数据智能服务。
什么是数据仓库:
数仓是存数据的,企业的各种数据往里面抽取,主要目的是为了分析数据,后续会基于它产出供分析挖掘的数据,或者数据应用需要的数据
如何理解Hive和hadoop关系?
1)从概念上来看
-> Hive是基于Hadoop的一个数据仓库工具,hadoop是海量分布式存储计算框架,底层就是hdfs分布式文件管理系统和mapreduce分布式计算框架;它是MapReduce的一个封装,底层就是MapReduce程序;
2)从本质上来看
hive是用来调用计算引擎MapReduce操作数据hdfs的;
就是把hivesql语句转化为MapReduce程序,hivesql其实就是mapreduce封装而成。Hive的出现是为了自动化编写MapReduce程序,通过sql语句让mapreduce进行查询、聚合、排序等;
3)hadoop三大组件:
Hdfs分布式文件管理系统、mapreduce分布式计算系统、yarn资源调度框架;
Hive的优缺点
1. 优点
(1)简单、只需要写SQL语句就行;
(2)Hive常用于数据分析,适合处理离线数据(静态数据);
(3)优势在于处理大数据;
ps:mysql适合处理数据的增删改查,适合处理业务型实时数据(动态数据)
2. 缺点
1)数据挖掘不擅长(擅长数据挖掘的是Spark);
2)Hive自动生成MapReduce作业,通常不够智能化,效率比较低
3)不能更新、删除、插入;只能通过文件追加数据
4)不能对列建立索引(想提高Hive的查询速度,请学习Hive的分区、桶的应用)
4)hive只适合做数据分析,不适合做业务型实时数据
Hive链接方式
只能通过jdbc来链接;
什么是JDBC
JDBC(JavaDataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。
什么都是spark
即:海量分布式存储分析框架、搜索引擎是spark,操作语言是Spark SQL ,比hadoop的mapreduce更快,效率更高;目前华为云采用的就是spark框架;他的分布式文件管理系统obs是基于hdfs封装优化的;
什么是hbase?
Hbase基于hdfs的非关系型数据库;
是一种Key/Value系统,它运行在HDFS之上
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库,HBase是一个分布式存储、数据库引擎,可以支持千万的QPS、PB级别的存储,hadoop行存储瓶颈是是几十亿级别的;不支持sql,是面向列的数据库,新增列直接insert即可
mysql/sqlserver:
关系型数据库,支持事务,支持索引,支持sql,表结构需要提前定义;想要新增列,需要ALTER TABLE 语句用于在已有的表中添加、修改或删除
mysql单表数据瓶颈是千万级的行记录
瓶颈说的是性能瓶颈,不会存在溢出情况因为都是存在磁盘上
数据本身只要磁盘够就不会溢出
但是如果我们的主键ID,是int类型(32位),自增,那int类型最大值是2,147,483,647(21亿),如果数据量超过这个,那就会数据类型溢出
所以现在业务数据表一般用bigint(64位,最大值9223372036854775807)(百亿亿),绝对够用,对于一般配置表,基础信息表这种用int也是绝对够用的
什么是flink?
分布式计算系统,处理在线的实时的大数据;
机制是:客户端通过DMS(数据库管理平台)kafka写入数据,采用flink流式处理框架计算(一条条写入),写入到rds的mysql中;
mangodb是什么?
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
也是一个数据库类型,他比sqlserver和mysql,生提供高读写的能力,吞吐量大大增强。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。类似json格式