Juicy-Bigdata
未读数据仓库概念
数据仓库(Data Warehouse)是一个面向主题的、集成的、稳定的且随时间变化的数据集合,用于支持管理人员的决策
面相主题
传统数据库主要是为应用程序进行数据处理,未必会按照同一主题存储数据;
数据仓库侧重于数据分析工作,是按照主题存储的。
集成
传统数据库通常与某些特定的应用相关,数据库之间相互独立。而数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。
稳定
传统数据库中的数据通常实时更新,数据根据需要及时发生变化。数据仓库的数据主要供企业决策分析使用,所涉及的数据操作主要是数据查询,一旦某个数据进入数据仓库以后,一般情况下将被长期保留,也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新。
变化
数据仓库中的数据通常包含历史信息,它里面记录了企业从过去某一时间点(如开始应用数据仓库的时间)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和未来趋势做出分析和预测。
数据仓库不是静 ...
Juicy-Bigdata
未读Spark架构相关进程
Driver 编写的Spark程序运行的进程
Master 集群主节点
Worker: 从节点启动的进程
Executor
Task 真正干活的
![image-20230213142957569](/Users/chunpeng/Library/Application Support/typora-user-images/image-20230213142957569.png)
Juicy-Bigdata
未读HIVE存储格式
Hive支持:TextFile、SequenceFile、ORC、PARQUET
行式存储与列式存储
行存储的特点:行存储查询一行数据的时候效率更好
列存储:可以针对性的设计更好的压缩算法,查询某些字段的效率更高,减少读取
TEXTFILE
默认格式,数据不压缩,HIVE不会对数据进行切分,从而不能进行合并炒作
ORC格式
Optimized Row Columnar
一个ORC文件由若干个Stripe组成,Stripe相当于RowGroup,由三部分组成;
IndexData:记录各个字段在row data的offset
Row Data:部分行具体数据,按列进行存储
Stripe footer:元数据信息
File Footer:存储每个Stripe的行数、每个column的数据类型。
PosterScript:记录文件的压缩类型,fileFooter的长度。
在读取ORC文件的时候,会先读posterscript->FileFooter->stripte,因为文件长度从最后开始约定。
PARQUET
文件是二进制存储的
定义指定存储格式的表
s ...
Juicy-Bigdata
未读Hive介绍
Hive的数据存储
基于Hadoop的HDFS
没有专门的数据存储格式,支持TextFile,SequenceFile, RCFile
Hive的架构
数据库VS数据仓库
数据库:基本的事务处理,增删改查
数据库:注重查询
OLTP:操作性处理称为联机事务处理,关心相应时间、数据安全性、完整性
OLAP:分析型处理,称为联机分析处理,针对主题历史数据进行分析,支持管理决策
HIVE SQL
DDL 数据定义语言
对数据库的操作
创建数据库
123create database if not exists myhive;-- 指定存储位置create database myhive location '/myhvie'
修改数据库
1alter database myhive set dpproperties('createtime'='20220202');
查看数据库详细信息
1desc database [extended] myhive;
删除数据库
1drop database my ...
Juicy-Bigdata
未读Yarn集群的架构和工作原理
RM 和NM 的功能介绍
ResourceManager基本介绍
一、职能
与客户端交互,处理客户端的请求
启动和管理AM,并在它failed的时候restart
管理NN,接收来自NN的资源汇报情况,向NN下达管理指令
资源管理调度,接受来自AM的资源请求,分配资源
二、内部结构
用户交互模块
clientRMService:处理提交应用程序,终止程序,获取程序状态请求
adminService:管理员的通信信道
webApp
NM管理模块
NMLivelinessMonitor:监控NM是否活着。、
NodeListManager: 维护正常和异常的NM节点列表,默认情况下都为空
ResourceTrackerService: 处理来自NN的请求,包括注册和心跳。
AM管理模块
AMLivelinessMonitor:监控Am是否活着。
ApplicationMasterLauncher:要求某一个NM启动ApplicationMaster,处理创建和kill Am的请求
ApplicationMasterServ ...
Juicy-Bigdata
未读MapReduce
MapReduce思想
先分再合,分而治之
Map: 负责拆分,彼此之间没有依赖
Reduce:负责合并
MapReduce 设计思想
抽象编程模型:
map:对一组数据元素进行某种重复式的处理
reduce:对Map的中间结果进行处理
统一架构,隐藏底层细节
MapReduce特点
高容错性
适合海量数据的离线处理
可扩展
局限性
实时计算性能差
不能进行流式计算
实战WordCount
深入MapReduce
停止提交的任务
1yarn application -kill app_id
Shuffle过程剖析
Hadoop中的序列化机制
常用的Writeable实现类
紧凑:高效使用空间
快速:快速数据读写
可扩展:透明读取
互操作:支持多语言交互
源码解读 TODO
MapReduce 性能优化
小文件问题
使用容器
SequenceFile
MapFile
数据倾斜
数据频率倾斜:某一个区域的数据量远大于其他区域
解决方案:
数据打散
Juicy-Bigdata
未读RPC原理分析及应用
RPC接口分析
ClientProtocol: HDFS客户端与NameNode通信的接口
DatanodeProtocol: DataNode与NameNode通信的接口
NamenodeProtocol:SecondaryNameNode与NameNode通信的接口
HDFS写数据过程
Client发起文件上传请求,通过RPC与NameNode建立通讯**(ClientProtocol)**。 NameNode检查目标文件是否存在,父目录是否存在,返回是否可以上传
Client请求第一个block该传输那几个DataNode服务器上
NameNode根据配置文件中指定的备份数量以及机架感知原理进行文件分配,返回可用的DataNode地址:A,B,C
Hadoop 在设计时考虑到数据的安全与高效, 数据文件默认在HDFS 上存放三份,存储策略为本地一份,同机架内其它某一节点上一份,不同机架的某一节点上一份
Clien请求3个DataNode中的A上传数据,通过RPC**(DatanodeProtocol)**建立pipeline。A ...
Juicy-Bigdata
未读HDFS核心进程剖析
HDFS体系结构
主从结构,主节点:NameNode 从节点:DATaNode, 都支持多个
SecondaryNameNode 辅助节点
NameNode节点介绍
整个文件系统的管理节点
维护整个文件系统的文件目录树
文件/目录信息
每个文件对应的数据块列表(一个文件可能在多个块上)
负责接受用户 请求
fsimage
文件信息,目录树…
1hdfs oiv -p XML -i fsimage_ -o fsi.xml
edits
事务文件,记录上传状态
secondarynameNode做这个事情:会定期合并到fsimage
seen_txid
edits文件尾数,保证数据一致性
VERSION
格式化之后产生的信息
维护了两份关系
File和Block list的关系,元数据用150字节
DataNode与Block的关系
SecondaryNameNode
负责定期将edits中的内容合并到fsimages
secondary namenode 询问namenode 是否需要checkpoint。直接带回namenode是否检 ...
一、SQL语句
DDL
data definition language 数据定义语言
123456show databases; --显示数据库create database **; -- 创建数据库use name_of_databse; --使用数据库select database(); --显示正在使用的数据库drop database name_of_database; --删除数据库
123456SHOW TABLES; --显示数据表CREATE TABLE 表名(字段名 数据类型);DESC 表名; -- 显示表结构SHOW CREATE TABLE 表名 --显示建表语句ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO --添加/修改类型/修改名称&类型/删除/修改名称Drop table 表名;
DML
data manipulation language 数据操作语言,增删改
1234567INSERT INTO 表名(字段1,字段2)VALUES (值1,值2);INSERT INTO 表名 VALUES ...