HCNA-Big_Data1
2019-01-29 20:19:41 7 举报
AI智能生成
HCNA-BigData 华为大数据认证思维导图1
作者其他创作
大纲/内容
1.大数据行业与技术趋势
目标:了解
什么是大数据
大数据来自我们的生活
4V:
体量巨大(Volume)
类型繁多(Variety)
处理速度(Velocity)
价值密度低(Value)
大数据技术趋势及应用
华为大数据解决方案
大数据时代到来
八国集团发布《G8开放数据宪章》
欧盟力推《数据价值链战略计划》
日本安倍内阁正式公布新IT战略《创建最尖端IT国家宣言》
英国政府发布《英国数据能力发展战略规划》
大数据的应用领域
大数据时代的核心:洞见本质(业务)、预测趋势、指引未来
可应用于零售、金融、智慧城市、出行、社会安全
大数据时代的机遇和挑战
传统
大数据
人才缺口: 大数据系统研发工程师。 大数据应用开发工程师。 大数据分析师。 数据可视化工程师。 数据安全研发工程师。 数据科学研究人才。
华为大数据解决方案FusionInsight
大数据平台架构FusionInsight
分支主题
2.HDFS分布式文件系统
HDFS使用的场景
HDFS系统架构
HDFS关键特性
HDFS 概述及应用场景
HDFS(Hadoop Distributed File System)
特性
高容错性(认为硬件总是不可靠的)、
高吞吐量(为大量数据访问的应用提供支持)
大文件存储(支持存储TB-PB级别的数据)
适合场景
大文件存储与访问
流式数据访问
不适用场景
大量小文件存储
随机写入,相反,支持一次写入多次读取
低延迟读取,因为获得高吞吐量的时候会牺牲低延迟
可用于多种场景,如: 网站用户行为数据存储。 生态系统数据存储。 气象数据存储。
HDFS在FusionInsight中的位置
HDFS作为Hadoop的基础存储设施,实现了分布式、高容错、可线性扩展的文件系统
NameNode存储Metadata元数据/存储索引DataNode存储实际的数据,为Block块Client为用户提交的请求,如读写
数据写入流程
为避免某一机器宕机,所以每个文件都write3个副本,并建立3个文件的联系写完后,完成第7步,在NameNode中使元数据持久化
数据读取流程
read时只读一个,读距离最近的那个,减少网络开销
关键特性介绍
架构关键设计
HDFS高可靠性 (HA)
NameNode分两个,一个是主Active(A角),一个是备Standby(B角)在Standby中,通过EditLog同步Active,从而使元数据持久化
Zookeeper个数为3以上的奇数个,用于动态投票决定主备NameNode角色
元数据持久化
HDFS联邦 (Federation)
可并联多个HDFS(横向可扩展),且多个HDFS间互相独立
数据副本机制
默认3个副本,尽量存在不同的服务器、不同的机架,像B1、B2、B4
配置HDFS数据存储策略
一般
默认情况下,HDFS NameNode自动选择DataNode保存数据的副本
分级存储
DataNode上存在的不同的存储设备,数据需要选择一个合适的存储设备分级存储数据。
标签存储
DataNode不同目录中的数据重要程度不同,数据需要根据目录标签选择一个合适的DataNode节点保存。
节点组存储
DataNode集群使用了异构服务器,关键数据需要保存在具有高度可靠性的节点组中。
eg.机架2性能特别好,可以把每个文件的副本都存机架2中一份
HDFS数据完整性保障/元数据持久化健壮机制
Colocation同分布
将存在关联关系的数据或可能要进行关联操作的数据存储在相同的存储节点上
错误
按照下图存放,假设要将文件A和文件D进行关联操作,此时不可避免地要进行大量的数据搬迁,整个集群将由于数据传输占据大量网络带宽,严重影响大数据的处理速度与系统性能。
正确
使用同分布特性,文件A、D进行join时,由于其对应的block都在相同节点,,大大降低网络带宽的占用,大大降低资源消耗。
其他关键设计
统一的文件系统
HDFS对外仅呈现一个统一的文件系统
空间回收机制
支持回收站机制,以及副本数的动态设置机制
数据组织
数据存储以数据块为单位,存储在操作系统的HDFS文件系统上
访问方式
提供JAVA API,HTTP方式,SHELL方式访问HDFS数据
常见shell命令
3.MapReduce和YARN技术原理
目标
熟悉MapReduce和YARN是什么
掌握MapReduce使用的场景及其原理
掌握MapReduce和YARN功能与架构
熟悉YARN的新特性
MapReduce和YARN基本介绍
MapReduce
基于Google发布的MapReduce论文设计开发,用于大规模数据集(大于1TB)的并行计算,适合离线计算,不适合即时计算
特点
易于编程
程序员仅需描述做什么,具体怎么做交由系统的执行框架处理
良好的扩展性
可通过添加节点以扩展集群能力
高容错性
通过计算迁移或数据迁移等策略提高集群的可用性与容错性
YARN
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者) 是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处
YARN是Hadoop2.0中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序提供资源管理和调度功能。
MapReduce和YARN功能与架构
MapReduce过程
AM(application master)管理全部流程,但地位低,仅比container多了几个功能RM(resource manager)管理资源NM(node manager)只管理某个节点map阶段分4个,分区、排序、组合、合并,map的输出结果就是reduce的输入值reduce阶段分3个,copy,sort/merge,reduce,reduce前面的步骤都是固定的,用户只需要给出最后一步reduce的逻辑就ok
Shuffle机制
Shuffle的定义:Map阶段和Reduce阶段之间传递中间数据的过程,包括Reduce Task从各个Map Task获取MOF文件的过程,以及对MOF的排序与合并处理
典型程序WordCount
组件架构
MapReduce On YARN任务调度流程
YARN HA方案(主备方案)
YARN APPMaster容错机制前一个APP master(AM-1)宕机时,会启动新的AM-2,container的作业保留机制会使任务继续基于AM-2运行下去
YARN的资源管理和任务调度
资源管理
YARN支持内存和CPU两种资源类型的管理和分配
每个NodeManager可分配的内存和CPU的数量可以通过配置选项设置(可在YARN服务配置页面配置),如下:
Yarn.nodemanager.resource.memory-mb Yarn.nodemanager.vmem-pmem-ratio虚拟内存和物理内存的最大比值 Yarn.nodemanager.resource.cpu-vcore表示分配container核数是cpu核数的1.5-2倍
资源分配模型
就近原则分配
容量调度器
容量调度器使得Hadoop应用能够共享的、多用户的、操作简便的运行在集群上,同时最大化集群的吞吐量和利用率
以队列为单位划分资源,每个队列都有资源使用的下限和上限。每个用户可以设定资源使用上限。管理员可以约束单个队列、用户或作业的资源使用。支持作业优先级,但不支持资源抢占。
容量保证
管理员可为每个队列设置资源最低保证和资源使用上限,所有提交到该队列的应用程序共享这些资源
灵活性
如果一个队列中的资源有剩余,可以暂时共享给需要资源的队列,当该队列有新的应用程序提交,则其他队列释放的资源会归还给该队列
支持优先级
队列支持任务优先级调度(默认是FIFO)
多重租赁
支持多用户共享集群和多应用程序同时运行。为防止单个应用程序、用户或者队列独占集群资源,管理员可为之增加多重约束
动态更新配置文件
管理员可根据需要动态修改配置参数,以实现在线集群管理
任务选择策略
选择一个合适队列
资源利用量最低的队列优先
最小队列层级优先
资源回收请求队列优先
选择该队列中一个任务
按照任务优先级和提交时间顺序选择
考虑用户资源量限制和内存限制
队列资源限制
用户限制和任务限制
用户限制和任务限制的参数可通过“租户管理”“动态资源计划”“队列配置”进行配置
用户限制
每个用户最低资源保障(百分比)
当一个队列中同时运行多个用户的任务时,每个用户的可使用资源量在一个最小值与最大值之间浮动,其中,最大值取决于正在运行的任务数目,而最小值则由minimum-user-limit-percent决定。当队列A的这个值为25
每个用户最多可使用的资源量(所在队列容量的倍数)
queue容量的倍数,用来设置一个user可以获取更多的资源。Yarn.scheduler.capacity.root.QueueD.user-limit-factor=1。默认值为1,表示一个user获取的资源容量不能超过queue配置的capacity,无论集群有多少空闲资源,最多不超过maximum-capacity
任务限制
最大活跃任务数
整个集群中允许的最大活跃任务数,包括运行或挂起状态的所有任务,当提交的任务申请数据达到限制以后,新提交的任务将会被拒绝。默认值10000。
每个队列最大任务数
对于每个队列,可以提交的最大任务数,以QueueA为例,可以在队列配置页面配置,默认是1000,即此队列允许最多1000个活跃任务
每个用户可以提交的最大任务数
这个数值依赖每个队列最大任务数。根据上面的数据, QueueA最多可以提交1000个任务,那么对于每个用户而言,可以向QueueA提交的最大任务数为1000* 用户最低资源保障率(假设25%)* 用户可使用队列资源的倍数(假设1)
查看队列信息
通过YARN webUI进行查看,进入方法是“服务管理”“YARN”“ResouceManager(主)”“Scheduler”
增强特性
YARN动态内存管理
YARN基于标签调度
4.Spark2x技术原理
理解Spark应用场景,掌握Spark特点
掌握Spark计算能力及其技术架构
掌握Spark组件在FusionInsight平台中的集成
Spark 概述
简介
Apache Spark是一种基于内存的快速、通用、可扩展的大数据计算引擎。Spark 是一站式解决方案,集批处理、实时流处理、交互式查询、图计算与机器学习于一体
此处区别于MapReduce,Spark是基于内存的迭代运算,MapReduce是基于磁盘的离线计算,慢
应用场景
批处理可用于ETL(抽取、转换、加载)。 机器学习可用于自动判断淘宝的买家评论是好评还是差评。 交互式分析可用于查询Hive数据仓库。 流处理可用于页面点击流分析,推荐系统,舆情分析等实时业务。
轻
Spark 核心代码有3 万行
快
Spark 对小数据集可达到亚秒级的延迟
灵
Spark 提供了不同层面的灵活性
巧
巧妙借力现有大数据组件
Spark生态圈
Spark vs MapReduce
上图表示1.MapReduce数据存于磁盘中,慢;Spark数据存于内存中,数据不落盘,快2.
Spark原理与架构
Spark体系架构
Spark Core核心概念RDD
(Resilient Distributed Datasets) 即弹性分布式数据集,是一个只读的,可分区的分布式数据集(类似于block)
RDD 默认存储在内存,当内存不足时,溢写到磁盘。 RDD 数据以分区的形式在集群中存储。 RDD 具有血统机制( Lineage ),发生数据丢失时,可快速进行数据恢复。
RDD依赖关系
父RDD和子RDD的关系分别是窄依赖和宽依赖
RDD的Stage划分
遇到宽依赖(一对多)就断开,遇到窄依赖(一对一)就合并
RDD的算子主要分两类,而MapReduce只有2个
Transformation
Action
当代码调用该类型算子时,立即启动job。 典型算子:take、count、saveAsTextFile等。
Spark重要角色
Driver
负责应用的业务逻辑和运行规划(DAG)
ApplicationMaster
负责应用的资源管理,根据应用的需要,向ResourceManager申请资源
Client
需求提出方,负责提交需求(应用)
ResourceManager
资源管理部门,负责整个集群的资源统一调度和分配
Nodemanager
负责本节点的资源管理
Executor
实际任务的执行者。一个应用会分拆给多个Executor来进行计算
Spark on Yarn两种模式的运行流程
client
cluster
区别
Yarn-client和Yarn-cluster主要区别是Application Master进程的区别。 Yarn-client适合测试,Yarn-cluster适合生产。 Yarn-client任务提交节点宕机,整个任务会失败。Yarn-cluster不会。
Spark SQL和Dataset
Spark SQL
是Spark中用于结构化数据处理的模块。在Spark应用中,可以无缝的使用SQL语句亦或是DataFrame API对结构化数据进行查询。
Spark SQL vs Hive
区别: Spark SQL的执行引擎为Spark core,Hive默认执行引擎为MapReduce。 Spark SQL的执行速度是Hive的10-100倍。 Spark SQL不支持buckets,Hive支持。 联系: Spark SQL依赖Hive的元数据。 Spark SQL兼容绝大部分Hive的语法和函数。 Spark SQL可以使用Hive的自定义函数。
Dataset
DataSet是一个由特定域的对象组成的强类型集合,可通过功能或关系操作并行转换其中的对象。 DataSet以Catalyst逻辑执行计划表示,并且数据以编码的二进制形式存储,不需要反序列化就可以执行sort、filter、shuffle等操作。 Dataset是“懒惰”的,只在执行action操作时触发计算。当执行action操作时,Spark用查询优化程序来优化逻辑计划,并生成一个高效的并行分布式的物理计划。
与RDD高度类似,但性能更好
DataFrame
指定列名称的Dataset。DataFrame是Dataset[Row]的特例。DataFrame提供了详细的列名信息,但行信息不明确
RDD、DataFrame与Dataset区别
RDD
优点:自带scheme信息,降低序列化反序列化开销。 缺点:不是面向对象的;编译期不安全。
Spark Structured Streaming
概述
是构建在Spark SQL引擎上的流式数据处理引擎。可以像使用静态RDD数据那样编写流式计算过程。当流数据连续不断的产生时,Spark SQL将会增量的、持续不断的处理这些数据,并将结果更新到结果集中。
计算模型
示例如下
Spark Streaming
Spark Streaming是Spark核心API的一个扩展,一个实时计算框架。具有可扩展性、高吞吐量、可容错性等特点。
微批处理
Spark Streaming 计算基于DStream,将流式计算分解成一系列短小的批处理作业。
容错机制
Spark Streaming本质仍是基于RDD计算,当RDD的某些partition丢失,可以通过RDD的血统机制重新恢复丢失的RDD
Spark在FusionInsight中的集成情况
WebUI呈现
常驻进程
JDBCServer
实际上是一个长驻的spark应用,对外提供JDBC的服务。 用户可以通过执行beeline或者JDBC脚本,连接JDBCServer,执行sql语句。 主备部署,无单点故障。
JobHistory
该进程用于提供HistoryServer页面,展示历史Spark应用的执行信息。 双节点负荷分担,无单点故障。
Spark与其他组件
在FusionInsight集群中,Spark主要与以下组件进行交互: HDFS:Spark在HDFS文件系统中读写数据(必选)。 YARN:Spark任务的运行依赖Yarn来进行资源的调度管理(必选)。 Hive:Spark-sql的元数据和数据文件与Hive完全共用(必选)。 Zookeeper:JDBCServer的HA的实现依赖于Zookeeper的协调(必选)。 Kafka:Spark可以接收Kafka发送的数据流(可选)。 HBase:Spark可以操作HBase的表(可选)。
5.HBase技术原理
掌握HBase的系统架构
掌握HBase的关键特性
熟悉HBase的基本功能
熟悉HBase华为增强特性
基本介绍
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统
适合于存储大表数据(表的规模可以达到数十亿行以及数百万列),并且对大表数据的读、写访问可以达到实时级别。 利用Hadoop HDFS(Hadoop Distributed File System)作为其文件存储系统,提供实时读写的分布式数据库系统,补充HDFS的不足。 利用ZooKeeper作为协同服务。
海量数据(TB、PB)。 不需要完全拥有传统关系型数据库所具备的ACID特性。 高吞吐量。 需要在海量数据中实现高效的随机读取。 需要很好的性能伸缩能力。 能够同时处理结构化和非结构化的数据。
HBase与RDB的对比
HBase
1、分布式存储,面向列。2、列无需事先定义,可实时扩展。3、普通商用硬件支持,扩容成本低。
RDB
1、数据结构固定。2、需要预先定义好数据结构。3、需要大量IO,扩展成本大。
存储
行存储
数据按行存储在底层文件系统中。通常,每一行会被分配固定的空间。 优点:有利于增加/修改整行记录等操作;有利于整行数据的读取操作。 缺点:单列查询时,会读取一些不必要的数据。
列存储
数据以列为单位,存储在底层文件系统中。 优点:有利于面向单列数据的读取/统计等操作。 缺点:整行读取时,可能需要多次I/O操作。
KeyValue存储
具有特定的结构。Key部分被用来快速的检索一条数据记录,Value部分用来存储实际的用户数据信息。 KeyValue作为承载用户数据的基本单元,需要保存一些对自身的描述信息,例如,时间戳,类型等等。那么,势必会有一定的结构化空间开销。 支持动态增加列,容易适应数据类型和结构的变化。以块为单元操作数据,列间、表间并无关联关系。
按Key值连续范围分区
数据按照RowKey的范围(按RowKey的字典顺序)(哈希值,key/n之后的余数),划分为一个个的子区间。每一个子区间都是一个分布式存储的基本单元。
KeyValue中拥有时间戳、类型等关键信息。 同一个Key值可以关联多个Value,每一个KeyValue都拥有一个Qualifier标识。 即使是Key值相同,Qualifier也相同的多个KeyValue,也可能有多个,此时使用时间戳来区分,这就是同一条数据记录的多版本。
功能与架构
主备管理(奇数个zookeeper投票产生)
HMaster
HMaster进程负责管理所有的RegionServer。 RegionServer Failover处理。 负责建表/修改表/删除表以及一些集群操作。 HMaster进程负责所有Region的转移操作。 新表创建时的Region分配。 运行期间的负载均衡保障。 RegionServer Failover后的Region接管。
RegionServer
RegionServer是HBase的数据服务进程。负责处理用户数据的读写请求。 Region由RegionServer管理。所有用户数据的读写请求,都是和RegionServer上的Region进行交互。 Region可以在RegionServer之间迁移。
Region
将一个数据表按Key值范围连续划分为多个的子表,这个子表,在HBase中被称作“Region”。 每一个Region都关联一个Key值范围,即一个使用StartKey和EndKey描述的区间。实际上,每一个Region仅仅记录StartKey就可以了,因为它的EndKey就是下一个Region的StartKey。 Region是HBase分布式存储的最基本单元。
Region分为元数据Region以及用户Region两类元数据Meta Region记录了每一个User Region的路由信息。读写Region数据的路由,包括如下几步: 找寻Meta Region地址(在ZooKeeper中存放)。 再由Meta Region找寻User Region地址。
Column Family
ColumnFamily是Region的一个物理存储单元。同一个Region下面的多个ColumnFamily,位于不同的路径下面。 ColumnFamily信息是表级别的配置。也就是说,同一个表的多个Region,都拥有相同的ColumnFamily信息(例如,都有两个ColumnFamily,且不同Region的同一个ColumnFamily配置信息相同)。
Store:一个Region由一个或多个Store组成,每个Store对应图中的一个Column Family。 MemStore:一个Store包含一个MemStore,MemStore缓存客户端向Region插入的数据。 StoreFile:MemStore的数据flush到HDFS后成为StoreFile。逻辑存储 Hfile:HFile定义了StoreFile在文件系统中的存储格式,它是当前HBase系统中StoreFile的具体实现。物理存储 Hlog:HLog日志保证了当RegionServer故障的情况下用户写入的数据不丢失,RegionServer的多个Region共享一个相同的Hlog。
ZooKeeper提供
分布式锁的服务
多个HMaster进程都尝试着去ZooKeeper中写入一个对应的节点,该节点只能被一个HMaster进程创建成功,创建成功的HMaster进程就是Active。
事件监听机制
主HMaster进程宕掉之后,备HMaster在监听对应的ZooKeeper节点。主HMaster进程宕掉之后,该节点会被删除,其它的备HMaster就可以收到相应的消息。
微型数据库角色
ZooKeeper中存放了Region Server的地址,此时,可以将它理解成一个微型数据库。
元数据表
元数据表HBase:Meta记录用户Region的信息,用来帮助Client定位到具体的Region。 元数据表也会被切分为多个Region,Region的元数据信息保存在ZooKeeper中。
关键流程
写流程
客户端发起写数据请求
相当于图书供应商需要把图书发往到图书馆
定位Region
定位到哪些图书该发往到哪栋楼哪一层
数据分组
按照图书编号分类
“分篮子”操作: 1.根据meta表找到表的region信息,此时也得到了对应的regionserver信息。 2.根据rowkey,将数据到指定的region中。 根据regin分组,每个RegionServer上的数据一起发送。
往RegionServer发送请求
利用HBase自身封装的RPC框架,来完成数据发送操作。 往多个RegionServer发送请求是并行操作。 客户端发送完写数据请求后,会自动等待请求处理结果。 如果客户端没有捕获到任何的异常,则认为所有数据都已经被写入成功。如果全部写入失败,或者部分写入失败,客户端能够获知详细的失败Key值列表。
Region写数据流程
触发Memstore的Flush操作的场景
Region中MemStore的总大小,达到了预设的Flush Size阈值。 MemStore占用内存的总量和RegionServer总内存比值超出了预设的阈值大小。 当WALs中文件数量Hlog达到阈值时。 HBase定期刷新Memstore,默认周期为1小时。 用户可以通过shell命令分别对一个表或者一个Region进行flush。
每Flush一次,会多一个HFile文件,HFile文件数目越来越多,读取时延也越来越大。
Compaction,解决Flush引起HFile过多的问题
目的
减少同一个Region中同一个ColumnFamily下面的小文件(HFile)数目,从而提升读取的性能
分类
Minor:小范围的Compaction。有最少和最大文件数目限制(3-10个)。通常会选择一些连续时间范围的小文件进行合并。Major:涉及该Region该ColumnFamily下面的所有的HFile文件。Minor Compaction选取文件时,遵循一定的算法。
Region Split
1.指集群运行期间,某一个Region的大小超出了预设的阈值,则需要将该Region自动分裂成为两个子Region。2.分裂过程中,被分裂的Region 会暂停读写服务。3.由于分裂过程中,父Region的数据文件并不会真正的分裂,而是仅仅通过在新Region中创建引用文件的方式,来实现快速的分裂。因此,Region暂停服务的时间会比较短暂。4.客户端侧所缓存的父Region的路由信息需要被更新。
好处
维持负载均衡
客户端发起读数据请求
Get操作在提供精确的Key值的情形下,读取单行用户数据。
Scan操作是为了批量扫描限定Key值范围内的用户数据。
Hi,META,我需要查找编码范围是xxx-xxx的书籍,请根据这个信息去寻找包含这个编码范围的书架号、这些书架所在楼层。
OpenScanner
OpenScanner的过程中,会创建两种不同的Scanner来读取Hfile(磁盘中)、MemStore(内存中)的数据: HFile对应的Scanner为StoreFileScanner。 MemStore对应的Scanner为MemStoreScanner。
Filter
典型的Filter有: RowFilter SingleColumnValueFilter KeyOnlyFilter FilterList
BloomFilter
优化一些随机读取的场景,即Get场景。 它可以被用来快速的判断一条用户数据在一个大的数据集合(该数据集合的大部分数据都没法被加载到内存中)中是否存在
BloomFilter在判断一个数据是否存在时,拥有一定的误判率。但对于“用户数据 XXXX不存在” 的判断结果是可信的
HBase的BloomFilter的相关数据,被保存在HFile中
华为增强特性
支持二级索引
二级索引为HBase提供了按照某些列的值进行索引的能力
HFS
HBase文件存储模块(HBase FileStream,简称HFS)是HBase的独立模块,它作为对HBase与HDFS接口的封装,应用在FusionInsight HD的上层应用,为上层应用提供文件的存储、读取、删除等功能。
HFS的出现解决了需要在HDFS中存储海量小文件,同时也要存储一些大文件的混合的场景。简单来说,就是在HBase表中,需要存放大量的小文件(10MB以下),同时又需要存放一些比较大的文件(10MB以上)。
HBase MOB
MOB数据(即100KB到10MB大小的数据)直接以HFile的格式存储在文件系统上(eg:HDFS文件系统),然后把这个文件的地址及大小信息作为value存储在普通HBase的store上,通过工具集中管理这些文件。这样就可以大大降低HBase的compation和split频率,提升性能。
NameNode-DataNode类似于主从设备模式(Master-Slave)
华为大数据
0 条评论
下一页