数仓基础理论
概念
数据仓库(Data Warehouse)是一个用于存储,报告,分析的数据系统
目的:构建面向分析的集成化数据环境
本身不生产数据 数据源于外部
数据库可以 但一般不在数据库里分析数据
很少修改数据
特征
面向主题:
集成性:主题相关的数据通常会分布在多个操作型系统中,彼此分散、独立、异构。需要集
成到数仓主题下
非易变性:也叫非易变性。数据仓库是分析数据的平台,而不是创造数据的平台
大量查询 删除和修改操作少
时变性:数据仓库的数据需要随着时间更新
OLTP、OLAP
oltp:联机事务处理
传统的关系型数据库(RDBMS)作为数据管理的主要手段,主要用于操作型数据
olap:联机分析处理
主要目标:数据分析
数据库 数据仓库区别
实际就是 OLTP与OLAP的区别
OLTP典型应用 RDBMS OLAP典型应用DW(数据仓库)
数据库为捕获数据 数据仓库为分析数据
数据仓库 数据集市
数据集市(Data Mart)
数据集市 是数据仓库子集
数据仓库 分层架构
分为三层:操作型数据层ODS、数据仓库层DW、数据应用层DA
ETL 和 ELT差别
ETL :抽取Exera 转化Transfer 装载Load
ETL
Hive基础概述
Hive不是数据库 是数据仓库
Hadoop基础之上的开源数据仓库系统
将存储在Hadoop中的结构化 半结构化数据文件映射为一张数据库表
核心:将HQL转化为MapReduce程序 并提交到Hadoop执行
Hive利用HDFS存储数据 利用MapReduce查询数据
Hive架构 组件
数据模型(文件存储位置)
数据库
Tables表
partitions分区(优化查询)
Buckets分桶
元数据(Metadata)
元数据:描述数据的数据
包含用Hive创建的database table 表的位置 类型、属性等元信息
元数据存储在关系型数据库中
Hive Metastore元数据服务
管理metadata元数据
Hive搭建
考试另外配置的话 直接看网上下载的Hei🐎文件
metastore不同服务模式(推荐远程模式部署)
每种部署之前都要
服务器基础环境配置(具体见博文Hadoop)
集群时间同步 防火墙关闭 主机Host映射 JDK安装、
关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
时间同步(所有机器执行)
yum -y install ntpdate
ntpdate ntp4.aliyun.com
Hadoop集群健康可用
启动Hadoop集群 需注意 等待HDFS安全模式关闭后在启动运行Hive
Hadoop与Hive整合
需改Hadoop中相关配置属性 修改 Hadoop中 core-site.xml
<!-- 整合hive 用户代理设置 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
启动 停止Hadoop脚本 (需要实现配置好Hadoop)
start-all.sh
stop-all.sh
加上 集群同步配置文件
metastore配置:内嵌模式
是metastore默认部署模式
每次只支持一个活动用户(适用于测试体验)
安装部署
一台机器安装
安装到/export/server下
tar zxvf apache-hive-3.1.2-bin.tar.gz
解决Hive与Hadoop之间版本差异
cd /export/server/apache-hive-3.1.2-bin/
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/
配置文件
cd /export/server/apache-hive-3.1.2-bin/conf
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
最后插入
export HADOOP_HOME=/export/server/hadoop-3.3.0
export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib
初始化元数据
cd /export/server/apache-hive-3.1.2-bin/
bin/schematool -dbType derby -initSchema
#启动hive服务
bin/hive
在linux不同目录下启动Hive数据会变
本地模式
配置
卸载Centos7自带的mariadb
rpm -qa|grep mariadb
rpm -e mariadb-libs-5.5.64-1.el7.x86_64 --nodeps
rpm -qa|grep mariadb
安装mysql
mkdir /export/software/mysql(存储mysql安装包)
上传到此文件夹下
tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
yum -y install libaio
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm
初始化
mysqld --initialize
更改所属组
chown mysql:mysql /var/lib/mysql -R
启动mysql
systemctl start mysqld.service
查看生成的临时root密码
cat /var/log/mysqld.log
[Note] A temporary password is generated for root@localhost: o+TU+KDOm004
(密码)
mysql -u root -p
输入密码
修改密码
alter user user() identified by "你的密码";(hadoop)
授权
mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'hadoop' WITH GRANT OPTION;
刷新
FLUSH PRIVILEGES
ctlr d结束推出myspl
设置为开机自启动服务
systemctl enable mysqld
查看是否已经设置自启动成功
systemctl list-unit-files | grep mysqld
mysql的启动和关闭 状态查看
systemctl stop mysqld
systemctl status mysqld
systemctl start mysqld
Hive安装
一台机器安装
安装到/export/server下
tar zxvf apache-hive-3.1.2-bin.tar.gz
解决Hive与Hadoop之间版本差异
cd /export/server/apache-hive-3.1.2-bin/
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/
#添加mysql_jdbc驱动到lib/ 文件下
配置文件
cd /export/server/apache-hive-3.1.2-bin/conf
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
export HADOOP_HOME=/export/server/hadoop-3.3.0
export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib
vim hive-site.xml(密码修改)
<configuration>
<!-- 存储元数据mysql相关配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
</property>
<!-- H2S运行绑定host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1</value>
</property>
<!-- 远程模式部署metastore metastore地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
<!-- 关闭元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
初始化
cd /export/server/apache-hive-3.1.2-bin/
bin/schematool -initSchema -dbType mysql -verbos
#启动hive服务
bin/hive
在linux不同目录下启动Hive数据不变