HCNA-Big_Data2
2019-01-29 20:20:05 7 举报
AI智能生成
HCNA-BigData 华为大数据认证思维导图2
作者其他创作
大纲/内容
6.Hive
技术原理
目标
掌握Hive应用场景与基本原理
掌握FusionInsight中Hive增强特性
熟悉常用Hive SQL语句
Hive概述
Hive是基于Hadoop的数据仓库软件,可以查询和管理PB级别的分布式数据
是一种数据仓库处理工具,使用类SQL的HiveQL语言实现数据查询
功能,所有Hive的数据都存储在HDFS中。
特性
灵活方便的ETL(extract/transform/load)
支持MapReduce,Tez,Spark等多种计算引擎
可直接访问HDFS文件以及HBase
易用易编程
应用场景
数据挖掘
用户行为分析
兴趣分区
区域展示
非实时分析
日志分析
文本分析
数据汇总
每天/每周用户点击数
流量统计
数据仓库
数据抽取
数据加载
数据转换
分支主题
Hive与传统数据仓库比较
分支主题
分支主题
优缺点
优点
高可靠、高容错
1.HiveServer采用集群模式
2.双MetaStore
3.超时重试机制
类SQL
1.类似SQL语法
2.内置大量函数
可扩展
1.自定义存储格式
2.自定义函数
多接口
1.Beeline hive的命令行客户端
2.JDBC java统一数据库接口
3.Thrift 序列化通讯协议
4.Python
5.ODBC 基于C、C++的标准化数据接口
缺点
延迟较高
1.默认MR为执行引擎
2.MR延迟较高
不支持物化视图
1.Hive支持普通视图,不支持物化视图
2.Hive不能在视图上更新、插入、删除数据
备注:物化视图本身会存储数据,因此是物化了的视图
不适用OLTP
暂不支持列级别的数据添加、更新、删除操作
分支主题
暂不支持存储过程
当前版本不支持存储过程,只能通过UDF来实现一些逻辑处理
Hive功能与架构
架构
分支主题
分支主题
FusionInsight HD
中Hive的架构
分支主题
三个角色
HiveServer
将用户提交的HQL语句进行编译,解析成对应的Yarn任务、
Spark任务或者HDFS操作,从而完成数据的提取、转换、分析
MetaStore
提供元数据服务
WebHcat
对外提供基于https协议的元数据访问、DDL查询等服务
WebHCat提供Rest接口,使用户能够通过安全的HTTPS协议执行以下操作:
执行Hive DDL操作。
运行Hive HQL任务。
运行MapReduce任务。
分支主题
Hive数据存储模型
分支主题
分区和桶
分区
数据表可以按照某个字段的值划分分区
每个分区是一个目录。
分区数量不固定。
分区下可再有分区或者桶。
桶
数据可以根据桶的方式将不同数据放入不同的桶中
每个桶是一个文件。
建表时指定桶个数,桶内可排序。
数据按照某个字段的值Hash后(键值除以桶数取余)放入某个桶中。
托管表和外部表
默认创建托管表/内部表,Hive会将数据移动到数据仓库目录。
创建外部表,这时Hive会到仓库目录以外的位置访问数据。
如果所有处理都由Hive完成,建议使用托管表。
如果要用Hive和其它工具来处理同一个数据集,建议使用外部表。
分支主题
Hive支持的函数
Hive内置函数:
数学函数,如round(),floor(),abs(),rand()等。
日期函数,如to_date(),month(),day()等。
字符串函数,如trim(),length(),substr()等。
UDF ( User- Defined Funcation)用户自定义函数
Hive增强特性
Colocation
简介
Colocation (同分布):将存在关联关系的数据或可能要进行关联操作的数据
存储在相同的存储节点上。
文件级同分布实现文件的快速访问,避免了因数据搬迁带来的大量网络开
销。
使用
步骤1:通过HDFS接口创建groupid和locatorid
hdfs colocationadmin -createGroup -groupId groupid
-locatorIds locatorid1,locatorid2,locatorid3
步骤2:在Hive中使用Colocation
CREATE TABLE tbl_1 (id INT, name STRING) stored as RCFILE
TBLPROPERTIES("groupId"="group1","locatorId"="locator1");
CREATE TABLE tbl_2 (id INT, name STRING) row
format delimited fields terminated by '\t' stored as TEXTFILE
TBLPROPERTIES("groupId"="group1","locatorId"="locator1");
列加密
步骤1:在创建表时指定相应的加密列和加密算法
create table encode_test (id INT, name STRING, phone
STRING, address STRING) row format serde
"org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"
WITH SERDEPROPERTIES(
"column.encode.columns"="phone,address","column.encode.
classname"="org.apache.hadoop.hive.serde2.AESRewriter"
);
步骤2:使用insert语法向设置列加密的表中导入数据
insert into table encode_test select id, name,
phone, address from test;
HBase记录批量删除
概要说明
在Hive on HBase功能中,FusionInsight HD Hive提供了对HBase表
的单条数据的删除功能,通过特定的语法,Hive可以将HBase表
中符合条件的一条或者多条数据批量清除
使用
如果要删除某张HBase表中的某些数据,可以执行HQL语句:
remove table HBase_table where expression;
其中expression规定要删除数据的筛选条件。
流控特性
实现
当前已经建立的总连接数阈值控制。
每个用户已经建立的连接数阈值控制。
单位时间内所建立的连接数阈值控制。
分支主题
指定行分割符
步骤1:创建表时指定InputFormat和OutputFormat
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS]
[db_name.]table_name
[(col_name data_type [COMMENT col_comment], ...)]
[ROW FORMAT row_format]
STORED AS
inputformat
"org.apache.hadoop.hive.contrib.fileformat.SpecifiedDe
limiterInputFormat"
outputformat
"org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputF
ormat";
步骤2:查询之前指定配置项
set hive.textinput.record.delimiter="!@!";
Hive基本操作
Hive SQL介绍
DDL-数据定义语言
建表,修改表,删表、分区、数据类型
DML-数据管理语言
数据导入、数据导出
DQL-数据查询语言
简单查询
复杂查询Group by,Order by,Join等
基本操作
分支主题
分支主题
分支主题
分支主题
7.Streaming
技术原理
目标:掌握
实时流处理概念
Streaming系统架构
Streaming关键特性
CQL基本概念
Streaming简介
基于开源Storm,是一个分布式、实时计算框架
区别于Mapreduce、Spark
特点
实时响应,低延迟。
数据不存储,先计算。
连续查询。
事件驱动。
应用场景
实时分析:如实时日志处理、交通流量分析等
实时统计:如网站的实时访问统计、排序等
实时推荐:如实时广告定位、事件营销等
分支主题
与Spark Streaming
的比较
分支主题
系统架构
分支主题
基本概念
Nimbus
负责资源分配和任务调度,支持主备热切换
Supervisor
负责接受Nimbus分配的任务,启动和停止属于自己管理的worker进程
Worker
Topology运行时的物理进程。每个Worker是一个JVM进程
所有的Topology都是在一个或者多个Worker中运行的。Worker启动后是长
期运行的,除非人工停止。Worker进程的个数取决于Topology的设置,且
无设置上限,具体可获得调度并启动的Worker个数则取决于Supervisor配
置的slot个数。
分支主题
Executor
在一个单独的Worker进程中会运行一个或多个Executor 线程。每个
Executor只能运行Spout或者Bolt中的一个或多个task实例(默认Executor和task是一对一的)
Task
Worker中每一个Spout/Bolt的线程称为一个task,是最终完成数据处理的实体单元
Topology里面的每一个Component(Spout/Bolt)节点都是并行运行的。 在Topology
里面,可以指定每个节点的并发度,Streaming则会在集群里面分配相应的Task来同时
计算,以增强系统的处理能力
分支主题
ZooKeeper
为Streaming服务中各进程提供分布式协作服务。主备
Nimbus、Supervisor、Worker将自己的信息注册到ZooKeeper中,
Nimbus据此感知各个角色的健康状态
Topology
Streaming中运行的一个实时应用程序
一个Topology是由一组Spout组件(数据源)和Bolt组件(逻辑处理)通过
Stream Groupings进行连接的有向无环图(DAG)。
业务处理逻辑被封装进Streaming中的Topology中。
分支主题
Spout
在一个Topology中产生源数据流的组件
Bolt
在一个Topology中接受数据然后执行处理的组件
Tuple
Streaming的核心数据结构,是消息传递的基本单元,不可
变Key-Value对,这些Tuple会以一种分布式的方式进行创建和处理
Stream
一个无边界的连续Tuple序列
消息分发策略
分支主题
关键特性介绍
Nimbus HA主备管理
分支主题
容灾能力
分支主题
消息可靠性
在streaming里面一个tuple被完全处理的意思是:这个tuple以及由这个tuple所派生的
所有的tuple都被成功处理。如果这个消息在Timeout所指定的时间内没有成功处理,
这个tuple就被认为处理失败了。
分支主题
ACK机制
Spout发送一个Tuple时,会通知Acker一个新的根消息产生了,Acker会创建一个
新的tuple tree,并初始 化校验和为0。
Bolt发送消息时向Acker发送anchor tuple,刷新tuple tree,并在发送成功
后向Acker反馈结果。如果成功则重新刷新校验和,如果失败则Acker会立即通知
Spout处理失败。
当tuple tree被完全处理(校验和为0),Acker会通知Spout处理成功。
Spout提供ack()和fail()接口方法用于处理Acker的反馈结果,需要用户实现。一般在
fail()方法中实现消息重发逻辑。
分支主题
可靠性级别设置
如果并不要求每个消息必须被处理(允许在处理过程中丢失一些信
息),那么可以关闭消息的可靠处理机制,从而可以获取较好的性能
关闭消息的可靠处理机制
将参数Config.Topology_ACKERS设置为0。
Spout发送一个消息时,使用不指定消息messageID的接口进行发送。
Bolt发送消息时使用Unanchor方式发送,使Tuple树不往下延伸,从而关
闭派生消息的可靠性。
Streaming与其他组件
整合HDFS/Hbase等外部组件,将实时结果提供给其他组件,进行离线分析
分支主题
StreamCQL介绍
StreamCQL(Stream Continuous Query Language)是建立在分布式流处理平台基础上的查询语言(CQL),架构支持构建在多种
流处理引擎之上,目前主要适配Streaming
提供了较丰富的分布式流计算功能,除了具有过滤、转换等传统的SQL基本能力之外, StreamCQL引入基于流的时
间窗口的计算,提供窗口数据的统计、关联等能力,以及流数据的拆分、合并等功能
StreamCQL易开发
分支主题
StreamCQL与流处理平台
分支主题
8.Flink
技术原理
目标:掌握
Flink原理
Flink的关键特性
Flink组件在FusionInsight平台中的集成情况
Flink 概述
Flink是一个批处理和流处理结合的统一计算框架,其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。它
的最大亮点是流处理,是业界最顶级的开源流处理引擎
与Storm类似,属于事件驱动型实时流系统
分支主题
特点
Streaming-first- 流处理引擎
Scalable- 可扩展性,1000 节点以上
Fault-tolerant- 容错,可靠性,checkpoint
Performance- 性能,高吞吐量,低延迟
应用场景
低时延的数据处理场景:高并发处理数据,时延毫秒级,且兼具可靠性
互联网金融业务。
点击流日志处理。
舆情监控。
关键特性
低时延 提供ms级时延的处理能力
Exactly Once 提供异步快照机制,保证所有数据真正只处理一次
HA JobManager支持主备模式,保证无单点故障
水平扩展能力 TaskManager支持手动水平扩展
Hadoop兼容性
Flink能够支持Yarn,能够从HDFS和HBase中获取数据;
能够使用所有的Hadoop的格式化输入和输出;
能够使用Hadoop原有的Mappers和Reducers,并且能与Flink的操作混合使用;
能够更快的运行Hadoop的作业
流式计算框架的性能对比
分支主题
Flink原理
与技术架构
Flink
架构
分支主题
Flink
技术栈
分支主题
最下层分别为本地部署、集群部署、云部署
往上一层是Runtime引擎
再往上分别是流处理、批处理接口
最上层分别是复杂事务处理、表、机器学习、图计算、表
Flink
核心概念
DataStream
Flink用类DataStream来表示程序中的流式数据。用户可以认为它们是含
有重复数据的不可修改的集合(collection),DataStream中元素的 数量是无限的
分支主题
分支主题
Data source
流数据源的接入,支持HDFS文件、kafka、文本数据等
分支主题
Transformations
流数据转换
分支主题
分支主题
Data sink
数据输出,支持HDFS、kafka、文本等
Flink
运行流程
关键角色
Client
需求提出方,负责提交需求(应用),构造流图
JobManager
负责应用的资源管理,根据应用的需要,
向资源管理部门( ResourceManager )申请资源
TaskManager
负责实际计算工作,一个应用会分拆给多个TaskManager来进行计算
Task slot
类似于Yarn的Container,不过只封装内存的资源,每个task有3个slot
Yarn的ResourceManager
资源管理部门,负责整个集群的资源统一调度和分配
分支主题
Flink on YARN
分支主题
Flink原理
用户实现的Flink程序是由Stream数据和Transformation算子组成
Stream是一个中间结果数据,而Transformation是算子,它对一个或
多个输入Stream进行计算处理,输出一个或多个结果Stream
分支主题
Source(输入)操作符载入数据,通过map()、keyBy()、apply()等Transformation 操作
符处理stream。数据处理完成后,调用sink(输出)写入相关存储系统,如hdfs、
hbase、kafka等
分支主题
并行数据流
操作符链
上面代表紧密程度高的算子串行
下面代表算子先并行,后串行
Flink窗口
分支主题
Tumbling Windows
滚动窗口,窗口之间时间点不重叠
分支主题
Sliding Windows
滑动窗口,窗口之间时间点存在重叠
分支主题
Session Windows
会话窗口,经过一段设置时间无数据认为窗口完成
分支主题
容错功能
checkpoint机制是Flink运行过程中容错的重要手段。
checkpoint机制不断绘制流应用的快照,流应用的状态快照被保存
在配置的位置(如:JobManager的内存里,或者HDFS上)。
Flink分布式快照机制的核心是barriers,这些barriers周期性插入到数
据流中,并作为数据流的一部分随之流动。
分支主题
Checkpoint
机制
Checkpoint机制是Flink可靠性的基石,可以保证Flink集群在某个算子因为某些原因(如异常退出)
出现故障时,能够将整个应用流图的状态恢复到故障之前的某一状态,保证应用流图状态的一致性。
该机制可以保证应用在运行过程中出现失败时,应用的所有状态能够从某一个检查点恢复,保证数据仅被处理一次
(Exactly Once)。另外,也可以选择至少处理一次(at leastonce)。
分支主题
多输入源的checkpoint机制
分支主题
要A和B的barrier都到了才进行快照
Flink在FusionInsight HD中的集成情况
分支主题
WebUI呈现
FusionInsight HD平台为Flink服务提供了管理监控的可视化界
面接口,通过Yarn的Web UI界面,可查看Flink任务运行
分支主题
与其他组件交互
HDFS:Flink在HDFS文件系统中读写数据(必选)。
YARN:Flink任务的运行依赖Yarn来进行资源的调度管理(必选)。
Zookeeper:Flink的checkpoint的实现依赖于Zookeeper(必选)。
Kafka:Flink可以接收Kafka发送的数据流(可选)。
9.Loader
技术原理
目标
熟悉Loader是什么
熟悉Loader能干什么
熟悉Loader在FusionInsight产品的位置
掌握Loader的系统架构
掌握Loader的主要特性
掌握如何管理Loader作业
掌握如何监控Loader作业
Loader
简介
Loader是实现FusionInsight HD与关系型数据库、文件系统之间交换数据和文件的数据加载工具。
提供可视化向导式的作业配置管理界面;
提供定时调度任务,周期性执行Loader作业;
在界面中可指定多种不同的数据源、配置数据的清洗和转换步骤、配置集群存储系统等。
应用场景
分支主题
支持导入Hive,不支持导出Hive
在FusionInsight
中的位置
分支主题
分支主题
Loader是Porter的一部分
特点
图形化
提供图形化配置、监控界面,操作简便
高可靠
Loader Server采用主备双机
作业通过MapReduce执行,支持失败重试
作业失败后,不会残留数据
高性能
利用MapReduce并行处理数据
安全
Kerberos认证
作业权限管理
Loader
模块架构
分支主题
分支主题
Loader作业管理
服务状态界面
分支主题
点击“LoaderServer(主)”,进入Loader 作业管理界面
作业用来描述将数据从数据源经过抽取、转换和加载至目的
端的过程。它包括数据源位置及数据源属性、从源数据到目
标数据的转换规则、目标端属性
作业转换规则
Loader转换算子:
长整型时间转换:实现长整型数值与日期类型的互换。
空值转换:将空值替换成指定值。
增加常量字段:生成常量字段。
随机值转换:生成随机数字段。
拼接转换:拼接已有字段,生成新字段。
分隔转换:将已有字段,按指定分隔符,分隔出新字段。
取模转换:对已有字段取模,生成新字段。
剪切字符串:通过指定起止位置,截取已有字符串类型的字段,生成新字段。
分支主题
转换步骤可以省略
创建Loader作业
分支主题
分支主题
分支主题
分支主题
监控作业执行状态
查看所有作业执行状态:
1. 进入Loader作业管理界面。
2. 界面会显示当前的所有作业和作业最后一次执行状态。
3. 选中一个作业,可以点击上方或右方“操作”一栏中的按钮执
行相应的操作。
查看指定作业历史执行记录:
1. 选中一个作业,点击“操作”中的“历史记录”按钮,进入作
业历史查看界面。
2. 该界面显示作业每次执行的开始时间、运行时间(秒)、状态、
失败原因、行/文件读取数、行/文件 写入数、行/文件 跳过数、
脏数据链接、MapReduce日志链接。
脏数据是指不符合Loader转换规则
的数据,查看方式如下:
1. 在作业历史查看界面上,发现跳过记录数不为0时,点击“脏数据”按
钮,进入该次作业执行产生的脏数据目录。
2. 脏数据存放在HDFS,每个Map Task处理的脏数据分别记录到相应文件。
MapReduce日志
在作业历史查看界面,点击“日志”按钮,进入该次执行的
MapReduce日志界面。
作业运行失败,会上报告警
客户端脚本介绍
Loader除了提供图形化操作界面外,还提供了一套完整的shell脚本,
通过这些脚本,可实现数据源的增删查改,作业的增删查改、启动
作业、停止作业、查看作业状态,判断作业是否正在运行等功能
脚本介绍如下:
lt-ctl :简称作业控制工具,用于查询作业状态、启动作业、停止作业
以及判断作业是否在运行中。
lt-ucj:简称作业管理工具,用于查询、创建、修改和删除作业。
lt-ucc:简称数据源管理工具,用于查询、创建、修改和删除数据源连
接信息。
0 条评论
下一页