Atlas-元数据和依赖
1、介绍
(1)概念
提供开放式元数据管理和治理功能
对数据资产进行分类和管理,提供围绕数据资产的协作功能
(2)功能
如insert overwrite、query等
建立表与表之间的血缘依赖、字段与字段之间的血缘依赖
(3)原理
支持Hive、HBASE、sqoop、storm、kafka提取元数据
使用admin UI查询元数据类型
(4)框架图
2、操作
(1)安装
集成外部的HBase + Solr(部署Solr的Cloud模式,并编写群起脚本)
(2)修改配置,集成外部框架
Atlas集成Hbase
Atlas集成Solr
Atlas集成Kafka
Atlas其他配置
Atlas集成Hive
(3)命令
集群启动:bin/solr start
导入元数据:bin/import-hive.sh
3、界面使用
(1)查看基本信息
查询Hive库
查询Hive进程
查询Hive表
查询Hive列
筛选查询条件
查看具有血缘依赖列的数据
(2)查看血缘依赖关系-点击Lineage
第一次查看表血缘依赖
第一次查看字段血缘依赖
启动GMV全流程任务:启动executor服务器和web服务器并上传任务
Azkaban-工作流调度器
1、介绍
任务调度服务,包括web/db/executorserver
使用KV文件建立任务依赖关系,并通过web界面维护跟踪工作流
2、操作
编写一系列job,内部调用sh文件
压缩为zip格式
创建Azkaban工程,上传并执行压缩文件
3、应用
有向无环图DAG工作流的调度器,如离线数仓sh脚本文件
使用job文件调度(指标全流程调度)
CDH
ClickHouse-列式存储数据库
1、介绍
开源的列式存储数据库(DBMS),由C++编写,用于在线分析处理查询(OLAP)
可以通过SQL查询实时生成分析数据报告
解释:
DBMS:数据库管理系统
常见的列式存储数据库:Hbase、ClickHouse、Druid
OLAP:On-Line Analytical Processing,联机分析处理,做数据统计和分析的平台
OLTP:On-Line Transaction Processing,联机事务处理,业务数据处理的平台
2、特点
列式存储适用于聚合统计操作、便于压缩和缓存
兼容SQL语法和DBMS的功能
可以根据需求选择多种引擎
顺序写+压缩,保证了高吞吐写入能力
划多个分区及索引粒度,可以实现并行处理,可以充分利用CPU,但不适用于多条查询
3、常见的数据类型
整形:(U)Int8-64
浮点型:Float32-64,存在误差,适用于精度要求不高场景
×布尔型:无专门类型,常用UInt8表示,取值0/1
Decimal类型(可保持精度的有符号浮点类型):Decimal32(s)-128
字符串类型:任意长/定长字符串FixString(N)
枚举类型:Enum8/16,例如x Enum8(‘hello’ = 1, ‘world’ = 2),插入是VALUES(‘hello’),(‘world’),或转换整形查询CAST(x,’Int8’)
时间类型:Date、Datetime、Datetime64
数组类型:array(1, 2) AS x或[1, 2] AS x
4、常见的表引擎
表引擎介绍:显式声明、决定存储方式和位置、并发索引多线程
TinyLog:保存到磁盘,无索引和并发控制,仅用于测试少量数据
Memory:存至内存,无索引,查询性能高,小数据量
MergeTree-合并树:可设置分区(不同文件、写入合并)、主键(非唯一约束,默认间隔8192)和排序字段(前缀字段必须为主键)、可设置表级别和列级别TTL生命周期
ReplacingMergeTree:去重合并树,避免了无唯一约束,重复数据保留版本字段大(参数, 常为时间)
SummingMergeTree:适用于根据维度进行汇总聚合,参数传递汇总列
5、常见操作
(1)插入
(2)更新/删除:
重操作,会改变分区(建议做批量变更)
语法:alter table t_order_smt delete/update
执行:先为新数据新建分区,把旧分区打失效标记,通过分区合并的触发,删除旧数据
(3)查询
支持子查询、CTE(Common Table Expression 公用表表达式/临时结果集,例如with a as xxx)、join、group by的各种小计操作:
with rollup:自右至左去掉维度小计
with cube:先自右至左,再自左至右进行小计
with totals: 计算合计
(4)修改字段操作
增删改字段
alter table tableName add / modify / drop column
(5)数据导出操作
clickhouse-client —query “select from t_order_mt where create_time=’2020-06-01 12:00:00’” —format CSVWithNames *> /opt/module/data/rs1.csv1
6、副本-高可用性
写入流程:写入数据后将写入日志提交到zk,副本收到zk的写入日志后从主节点下载新数据
配置步骤:同步xml配置文件,分别建表,引擎采用ReplicatedMergeTree
参数传递:engine =ReplicatedMergeTree(‘/clickhouse0225/table/01/t_order_rep’,’rep_102’)
7、分片集群
(1)解决问题:横向扩容、水平切分
(2)操作:不同分片在不同节点,使用Distributed 表引擎实现数据拼接
(3)读取流程:选择error count小的副本进行数据的读取
Druid-单表、预聚合列式存储
1、概述
(1)概念
列式、实时分析的数据存储系统OLTP(事务处理,高性能要求),(PB数据、毫秒查询、实时处理)
性能高于OLAP(分析)
(2)特点
列式存储、并行查询
预聚合和压缩
(2)应用场景
清洗好的记录录入,无需更新
一张单表(宽表),不用join
实时性要求高、数据质量不敏感
2、框架&数据结构
(1)框架
中间管理节点:接收事实数据&生成segment文件
历史节点:加载数据,提供segment查询
查询节点:接收查询请求并转发
协调节点:历史节点负载均衡及数据生命周期管理
OverlordNodes统治者:监视中间管理节点
元数据库、zookeeper
(2)数据结构
DataSource相当于表
包括时间列、维度列(源于OLAP,标识类别信息)、指标列(聚合和计算的数值列,存储时便可以进行聚合)
segment是实际存储格式,存储不同范围数据,对数据横向切割
面向列压缩存储,即对数据纵向切割
3、操作
启动采集flume和kafka
启动日志生成程序,将数据存入
使用SQL查询
Elastic Search
Impala-SQL查询HBASE
1、介绍
构建在 HBase 之上的开源 SQL 层
使用标准的 JDBC API 去建表, 插入数据和查询 HBase 中的数据
避免使用HBase 的客户端 API
2、常见操作
(1)表操作
增删查表/记录:!table,upsert
与Hbase表映射(关联)/视图映射(只读)
(2)创建Hbase二级索引
非 rowkey支持检索和查询
(3)建索引
global 全局索引:多读少写,索引表分布在不同节点,借助Phoenix选择索引表
local局部索引:写操作频繁
Kerberos
Kylin-cube分析
1、概念
(1)概述
第一个由国人主导并贡献到Apache基金会的开源项目
使用基于Spark和Hadoop的SQL查询接口及多维分析(OLAP),解决TB级别数据的数据分析需求,能在亚秒内查询巨大的Hive表。
依赖HDFS、MapReduce/Spark、Hive/Kafka、HBase等服务
理论基础是:以空间换时间。即多维分析可能用到的度量进行预计算,将计算好的结果保存成Cube并存储到HBase中,供查询时直接访问
(2)特点
支持SQL接口、超大规模数据集、亚秒级响应、可伸缩性、高吞吐率、BI工具集成
(3)架构
Cube存储数据,使用路由层与数据源交互
元数据存储在hbase中
任务构建引擎对任务进行管理与协调
2、操作
(1)安装
前提:Hadoop、Hive、Zookeeper、HBase
(2)OLAP分析
导入hive表
构建cube,选择维度表与事实表关联条件
选择构建的时间区间
编写脚本自动构建
(3)cube构建
每个维度列值,都用0/1值表示
逐层、快速构建出所有维度的组合
(4)cube优化
Row Key优化:用作where过滤的维度放在前边、基数大的维度放在基数小的维度前边
Oozie
(5)Kylin Bi工具集成
各种可视化工具:Tableau、Zepplin
使用zepplin集成,添加note,编写SQL语句查询
Phoenix
Pig
Presto-查询引擎
1、简介
(1)概念
大数据、秒级、分布式SQL查询引擎
(2)架构
coordinator(解析查询计划)和多个worker(任务执行和数据处理)组成
(3)特点
优点:基于内存,速度快,可以连接多个数据源
缺点:海量数据分析,连查表+计算+清内存,产生大量临时数据,速度会变慢,不如hive
比较:性能不如impala,但是presto支持的数据源多
2、实际使用
(1)常用操作
配置catalog、coordinator、worker
Client安装
可视化client安装
(2)注意事项
字段名反引用:MySQL对字段加反引号`、Presto对字段加双引号分割,避免和关键字冲突
时间函数:SELECT t FROM a WHERE t > timestamp ‘2017-01-01 00:00:00’;
不支持INSERT OVERWRITE语法:先delete,然后insert into
PARQUET格式:支持支持查询,但不支持insert
3、优化
(1)数据存储
合理设置分区
使用列式存储:相对于Parquet,Presto对ORC(行组分隔后在组内列式存储)支持更好(均为列式存储)
使用压缩:采用Snappy压缩
(2)查询优化
选择使用的字段
过滤条件加分区字段:where语句中优先使用分区字段进行过滤
Group By优化:合理安排Group by语句中字段顺序,按照每个字段distinct数据多少进行降序排列
Order By时使用Limit:查询Top N或者Bottom N
使用Join语句时将大表放在左边:join左边的表分割到多个worker,然后将join右边的表数据整个复制一份
Ranger-权限管理
SuperSet-chart图表展示
1、介绍
(1)概念
一个准商业级别的BI web应用
BI工具:根据配置的要求,进行数据源的配置即可
具体含义:通过dashboard(仪表盘)对图表中的数据进行展示
(2)原理
UI界面,向Flask编写的web应用发送请求
web应用处理请求,从数据源获取数据
响应数据到浏览器
使用集合NVD3(echarts)进行可视化
(3)应用场景
对接大数据分析工具,如Hive、Kylin、Druid等;
支持自定义仪表盘,也可以作为数仓的可视化工具
2、操作
(1)安装
miniconda安装,创建Python3.6环境
conda环境中环境中安装superset
(2)数据源配置
连接MySQL数据库,对Sources/Databases配置、Table配置
配置仪表盘、创建并配置图表、添加到仪表盘(可以调整仪表盘刷新时间)
(3)支持图表
柱状图、折线图、饼图
透视图、大数、趋势大数
Zabbix
1、概述
(1)介绍
监控网络参数以及服务器健康性和完整性,使用灵活的通知机制
对事件配置邮件告警
(2)基础架构
agent部署在监控目标上
server收集监控数据
2、操作
(1)安装
集群规划与节点安装
各组件&Zabbix-Web(httpd)启动
(2)使用
创建Host
创建Item(DataNode)
创建Trigger,添加表达式
创建Media type(绑定email)
Zepplin
