温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
华为
数据
白皮书
华为FusionInsight HD
2.8
技术白皮书
文档版本
01
发布日期
2018-05-24
华为技术有限公司
版权所有 © 华为技术有限公司2018。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
商标声明
和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
华为技术有限公司
地址:
深圳市龙岗区坂田华为总部办公楼 邮编:518129
网址:
文档版本01 (2018-05-24)
华为专有和保密信息 版权所有 © 华为技术有限公司
i
华为FusionInsight HD
技术白皮书
目 录
目 录
1 简介 1
1.1 FusionInsight概述 1
1.2 FusionInsight HD组件介绍 2
2 重点组件介绍 4
2.1 集群管理Manager 4
2.2 分布式文件系统HDFS 6
2.3 统一资源管理和调度框架YARN 7
2.3.1 Yarn 7
2.3.2 Superior Scheduler 7
2.4 分布式批处理引擎MapReduce 12
2.5 分布式数据库HBase 13
2.6 数据仓库组件Hive 13
2.7 分布式内存计算引擎Spark 14
2.7.1 Spark 14
2.7.2 CarbonData 15
2.8 交互式SQL引擎Elk 16
2.9 全文检索组件Solr 19
2.10 全文检索组件Elasticsearch 21
2.11 批量数据集成Loader 22
2.12 实时数据采集Flume 25
2.13 流式事件处理(Storm) 26
2.13.1 Storm 26
2.13.2 StreamCQL 27
2.14 流处理引擎Flink 28
2.15 分布式高速缓存Redis 30
2.16 分布式消息队列Kafka 30
2.17 作业编排与调度Oozie 31
2.18 数据继承入口Hue 33
2.19 多租户 34
2.20 安全增强 36
2.21 可靠性增强 37
2.22 滚动重启、滚动升级与滚动补丁 39
文档版本01 (2018-05-24)
华为专有和保密信息 版权所有 © 华为技术有限公司
iii
华为FusionInsight HD
技术白皮书
1 简介
1 简介
1.1 FusionInsight概述
FusionInsight是华为企业级大数据存储、查询、分析的统一平台,能够帮助企业快速构建海量数据信息处理系统,通过对巨量信息数据实时与非实时的分析挖掘,发现全新价值点和企业商机。
FusionInsight解决方案由产品:FusionInsight HD、FusionInsight LibrA、FusionInsight Athena和操作运维系统FusionInsight Manager,数据使能服务:数据集成开发工具、实时决策平台,及私有云服务:HDS大数据服务、ADS数据库服务、RDS数据库服务构成。
l FusionInsight HD:企业级的大数据处理环境,是一个分布式数据处理系统,对外提供大容量的数据存储、分析查询和实时流式数据处理分析能力。
l FusionInsight LibrA:企业级的大规模并行处理关系型数据库。采用MPP(Massive Parallel Processing)架构,支持行存储和列存储,提供PB(Petabyte,2的50次方字节)级别数据量的处理能力。
l FusionInsight Athena:企业级大数据人工智能处理系统,提供大容量的图像与视频分析能力。
l FusionInsight Manager:企业级大数据的操作运维系统,提供高可靠、安全、容错、易用的集群管理能力,支持大规模集群的安装部署、监控、告警、用户管理、权限管理、审计、服务管理、健康检查、问题定位、升级和补丁等功能。
1.2 FusionInsight HD组件介绍
FusionInsight系统的整体逻辑架构图如下所示:
FusionInsight HD 需要对开源组件进行封装和增强,对外提供稳定的大容量的数据存储、查询和分析能力。各自组件提供功能如下:
l Manager:作为运维系统,为FusionInsight HD提供高可靠、安全、容错、易用的集群管理能力,支持大规模集群的安装/升级/补丁、配置管理、监控管理、告警管理、用户管理、租户管理等。
l HDFS:Hadoop分布式文件系统(Hadoop Distributed File System),提供高吞吐量的数据访问,适合大规模数据集方面的应用。
l HBase:提供海量数据存储功能,是一种构建在HDFS之上的分布式、面向列的存储系统。
l Oozie:提供了对开源Hadoop组件的任务编排、执行的功能。以Java Web应用程序的形式运行在Java servlet容器(如:Tomcat)中,并使用数据库来存储 工作流定义、当前运行的工作流实例(含实例的状态和变量)。
l ZooKeeper:提供分布式、高可用性的协调服务能力。帮助系统避免单点故障,从而建立可靠的应用程序。
l Redis:提供基于内存的高性能分布式K-V缓存系统。
l Yarn:Hadoop 2.0中的资源管理系统,它是一个通用的资源模块,可以为各类应用程序进行资源管理和调度。
l Mapreduce:提供快速并行处理大量数据的能力,是一种分布式数据处理模式和执行环境。
l Spark:基于内存进行计算的分布式计算框架。
l Hive:建立在Hadoop基础上的开源的数据仓库,提供类似SQL的Hive QL语言操作结构化数据存储服务和基本的数据分析服务。
l Loader:基于Apache Sqoop 实现FusionInsight HD与关系型数据库、ftp/sftp文件服务器之间数据批量导入/导出工具;同时提供Java API/shell任务调度接口,供第三方调度平台调用。
l Hue:提供了开源Hadoop组件的WebUI,可以通过浏览器操作HDFS的目录和文件,调用Oozie来创建、监控和编排工作流,可操作Loader组件,查看ZooKeeper集群情况。
l Flume:一个分布式、可靠和高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写入各种数据接受方(可定制)的能力。
l Solr:一个高性能,基于Lucene的全文检索服务器。Solr对Lucene进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文检索引擎。
l Elasticsearch:一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于JAVA/Lucene构建,开源、分布式、支持RESTful请求。Elasticsearch服务支持结构化、非结构化文本的多条件检索、统计和报表生成,拥有完善的监控体系,提供一系列系统,集群以及查询性能等关键指标,让用户更专注于业务逻辑的实现。多用于日志搜索和分析、时空检索、时序检索和报表、智能搜索等场景。
l Kafka:一个分布式的、分区的、多副本的实时消息发布-订阅系统。提供可扩展、高吞吐、低延迟、高可靠的消息分发服务。
l Storm:一个分布式、可靠、容错的实时流式数据处理的系统,并提供类SQL(StreamCQL)的查询语言。
l Flink:分布式的、高可用的、能保证Exactly Once语义的针对流数据和批数据的处理引擎。
l SparkSQL:基于Spark引擎的高性能SQL引擎,可与Hive实现元数据共享。
l Elk:一个分布式交互查询分析数据仓库引擎,支持标准的SQL2003规范,支持标准SQL对数据的并行插入、删除、修改、查询等功能。
l MLlib:提供基于Spark的数据挖掘算法库。
l GraphX:提供基于Spark的图处理算法库。
文档版本01 (2018-05-24)
华为专有和保密信息 版权所有 © 华为技术有限公司
3
华为FusionInsight HD
技术白皮书
2 重点组件介绍
2 重点组件介绍
2.1 集群管理Manager
Manager是FusionInsight HD的运维管理系统,为部署在集群内的服务提供统一的集群管理能力。Manager支持大规模集群的安装部署、性能监控、告警、用户管理、权限管理、审计、服务管理、健康检查、日志采集、升级和补丁等功能。
图2-1 Manager逻辑架构
FusionInsight Manager由OMS和NodeAgent组成:
l OMS:操作维护系统的管理节点,OMS一般有两个,互为主备。
l NodeAgent:操作维护系统中的所有被管理节点,每个节点上一个。
表2-1 业务模块说明
模块名称
描述
WebService
是一个部署在Tomcat下的Web服务,提供Manager的https接口,用于通过浏览器访问Manager。同时还提供基于Syslog和SNMP协议的北向接入能力
Controller
Manager的控制中心,负责汇聚来自集群中所有节点的信息,统一向管理员展示,以及负责接收来自管理员的操作指令,并且依据操作指令所影响的范围,向集群的所有相关节点同步信息
NodeAgent
l 存在于每一个集群节点,是Controller对部署在该节点上组件做一切操作的代理。
l 代表本节点上部署的所有组件与Controller交互,实现整个集群多点到单点的汇聚。
IAM
负责记录审计日志。在Manager的UI上每一个非查询类操作,都有对应的审计日志
PMS
性能监控模块,搜集每一个OMA上的性能监控数据并提供查询
CEP
汇聚功能模块。比如将所有OMA上的磁盘已用空间汇总成一个性能指标
FMS
告警模块,搜集每一个OMA上的告警并提供查询
OMMAgent
各节点上面性能监控和告警的Agent,负责收集该Agent Node上的性能监控数据和告警数据
CAS
统一认证中心,登录Web Service时需要在CAS进行登录认证,浏览器通过URL自动跳转访问CAS
AOS
权限管理模块,管理用户和用户组的权限
OMS Kerberos
提供单点登录及Controller与Node Agent间认证的功能。
OMS Ldap
在集群安装前为用户认证提供数据存储,在集群安装后作为集群中Ldap的备份
Database
Manager的数据库,负责存储配置、监控、告警等信息
NTP
负责集群内部各节点与OMS节点之间的时钟同步 和 OMS节点与外部时钟源之间的时钟同步。
支持5000+节点大集群
Manager通过支持以下特性,达到支持5000+大集群的能力:
l 快速部署安装
产品集成的集群部署规划工具,可自动生成安装模板和扩容模板,创建一个5000节点,仅需要不到5个小时时间。
l 文件分发多点续传
软件包下发给集群中各节点时采用类P2P机制,一传十、十传百,传输效率不再依赖节点规模
l 全场景容错机制
所有维护操作支持重试,安装部署支持角色级别容错,支持主机隔离。部分节点/角色故障,不影响整体维护操作。
l 大集群环境异构能力
配置集中管理,支持按实例组配置,不同硬件规格主机设置不同的配置,提升配置异构能力。
l 集群规模弹性伸缩
集群可大可小,不同集群规模应用不同系统参数,更加合理利用硬件资源
l 高性能监控指标汇聚计算能力
分布式监控汇聚计算模型,能够瞬时处理250000条并发监控指标。
l 轻松应对告警风暴
每秒支持处理高达10000条并发告警
2.2 分布式文件系统HDFS
HDFS是Hadoop的分布式文件系统,实现大规模数据可靠的分布式读写。HDFS针对的使用场景是数据读写具有“一次写,多次读”的特征,而数据“写”操作是顺序写,也就是在文件创建时的写入或者在现有文件之后的添加操作。HDFS保证一个文件在一个时刻只被一个调用者执行写操作,而可以被多个调用者执行读操作。
图2-2 分布式文件系统HDFS
2.3 统一资源管理和调度框架YARN
2.3.1 Yarn
为了实现一个 Hadoop 集群的集群共享、可伸缩性和可靠性,并消除早期MapReduce框架中的JobTracker性能瓶颈,开源社区引入了统一的资源管理框架YARN。
YARN 分层结构的本质是 ResourceManager。这个实体控制整个集群并管理应用程序向基础计算资源的分配。ResourceManager 将各个资源部分(计算、内存、带宽等)精心安排给基础 NodeManager(YARN 的每节点代理)。ResourceManager 还与 Application Master 一起分配资源,与 NodeManager 一起启动和监视它们的基础应用程序。在此上下文中,Application Master 承担了以前的 TaskTracker 的一些角色,ResourceManager 承担了 JobTracker 的角色。
Application Master 管理一个在 YARN 内运行的应用程序的每个实例。Application Master 负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。请注意,尽管目前的资源更加传统(CPU 核心、内存),但未来会带来基于手头任务的新资源类型(比如图形处理单元或专用处理设备)。从 YARN 角度讲,Application Master 是用户代码,因此存在潜在的安全问题。YARN 假设 Application Master 存在错误或者甚至是恶意的,因此将它们当作无特权的代码对待。
NodeManager 管理一个 YARN 集群中的每个节点。NodeManager 提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。MRv1 通过插槽管理 Map 和 Reduce 任务的执行,而 NodeManager 管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。
图2-3 统一资源管理和调度框架YARN
2.3.2 Superior Scheduler
Superior Scheduler是一个专门为Hadoop YARN分布式资源管理系统设计的调度引擎,是针对企业客户融合资源池,多租户的业务诉求而设计的高性能企业级调度器。
Superior Scheduler可实现开源调度器、Fair Scheduler以及Capacity Scheduler的所有功能。另外,相较于开源调度器,Superior Scheduler在企业级多租户调度策略、租户内多用户资源隔离和共享、调度性能、系统资源利用率和支持大集群扩展性方面都做了针对性的增强。设计的目标是让Superior Scheduler直接替代开源调度器。
类似于开源Fair Scheduler和Capacity Scheduler,Superior Scheduler通过YARN调度器插件接口与YARN Resource Manager组件进行交互,以提供资源调度功能。下图为其整体系统图。
图2-4 Superior Scheduler内部架构
Superior Scheduler的主要模块如下:
l Superior Scheduler Engine:具有丰富调度策略的高性能调度器引擎。
l Superior YARN Scheduler Plugin:YARN Resource Manager和Superior SchedulerEngine之间的桥梁,负责同YARN Resource Manager交互。
在调度原理上,开源的调度器都是基于计算节点心跳驱动的资源反向匹配作业的调度机制。具体来讲,每个计算节点定期发送心跳到YARN的Resource Manager通知该节点状态并同时启动调度器为这个节点分配作业。这种调度机制把调度的周期同心跳结合在一起,当集群规模增大时,会遇到系统扩展性以及调度性能瓶颈。另外,因为采用了资源反向匹配作业的调度机制,开源调度器在调度精度上也有局限性,例如数据亲和性偏于随机,另外系统也无法支持基于负载的调度策略等。主要原因是调度器在选择作业时,缺乏全局的资源视图,很难做到最优选择。
Superior Scheduler内部采用了不同的调度机制。Superior Scheduler的调度器引入了专门的调度线程,把调度同心跳剥离开,避免了系统心跳风暴问题。另外,Superior Scheduler调度流程采用了从作业到资源的正向匹配方法,这样每个调度的作业都有全局的资源视图,可以很大的提到调度的精度。相比开源调度器,Superior Scheduler在系统吞吐量、利用率、数据亲和性等方面都有很大提升。
图2-5 Superior Scheduler性能对比
Superior Scheduler除了提高系统吞吐量和利用率,还提供了以下主要调度功能:
l 多资源池
多资源池有助于在逻辑上划分集群资源并在多个租户/队列之间共享它们。资源池的划分可以基于异构的资源或完全按照应用资源隔离的诉求来划分。对于一个资源池,不同队列可配置进一步的策略。
l 每个资源池多租户调度(reserve、min、share、max)
Superior Scheduler提供了灵活的层级多租户调度策略。并允许针对不同的资源池可以访问的租户/队列,配置不同策略,如下所示。
表2-2 策略描述
策略名称
描述
reserve
预留租户资源。即使租户没有作业,其他租户也不能使用该预留的资源。其值可以是百分比或绝对值。如果两者都配置,调度系统动态计算转换为资源绝对值,并取两者的最大值。缺省的reserve值为0。相对于定义一个专用资源池并指定具体机器的方式,reserve的策略可以认为提供了一种灵活的浮动预留功能,由于并不限定具体的机器,可以提高计算的数据亲和性,也不会受具体机器故障的影响。
min
具有抢占支持的最低保证资源。其他租户可以使用这部分资源,但是本租户享有优先使用权。其值可以是百分比或绝对值。如果两者都配置,调度系统动态计算转换为资源绝对值,并取两者的最大值。缺省值是0。
share
不支持抢占的共享资源。本租户要使用这部分资源时,需要等待其他租户完成作业并释放资源。其值是百分比或绝对值。
max
允许的最大资源数量。租户无法获得比允许的最大资源多的资源。其值是百分比或绝对值。如果两者都配置,调度系统动态计算转换为资源绝对值,并取两者最大值。缺省值不受限制。
租户资源分配策略示意图,如图2-6所示。
图2-6 策略示意图
其中“total”表示总资源,不是调度策略。
同开源的调度器相比,Superior Scheduler同时提供了租户级百分比和绝对值的混配策略,可以很好的适应各种灵活的企业级租户资源调度诉求。例如,用户可以在一级租户提供最大绝对值的资源保障,这样租户的资源不会因为集群的规模改变而受影响。但在下层的子租户之间,可以提供百分比的分配策略,这样可以尽可能提升一级租户内的资源利用率。
l 异构和多维资源调度
Superior Scheduler支持CPU和内存资源的调度外,还支持扩展支持以下功能:
− 节点标签可用于识别像GPU_ENABLED,SSD_ENBALED等节点的多维属性,可以根据这些标签进行调度。
− 资源池可用于对同一类别的资源进行分组并分配给特定的租户/队列。
l 租户内多用户公平调度
在叶子租户里,多个用户可以使用相同的队列来提交作业。相比开源调度器,Superior Scheduler可以支持在同一租户内灵活配置不同用户的资源共享策略。例如可以为VIP用户配置更多的资源访问权重。
l 数据位置感知调度
Superior Scheduler采用“从作业到节点的调度策略”,即尝试在可用节点之间调度给定的作业,使得所选节点适合于给定作业。通过这样做,调度器将具有集群和数据的整体视图。如果有机会使任务更接近数据,则保证了本地化。而开源调度器采用“从节点到作业的调度策略”,在给定节点中尝试匹配适当的作业。
l Container调度时动态资源预留
在异构和多样化的计算环境中,一些container需要更多的资源或多种资源,例如Spark作业可能需要更大的内存。当这些container与其他需要较小资源的container竞争时,可能没有机会在合理的时间内获得所需的资源而处于饥饿状态。由于开源的调度器是基于资源反向匹配作业的调度方式,会为这些作业盲目的进行资源预留以防进入饥饿状态。这就导致了系统资源的整体浪费。Superior Scheduler与开源特性的不同之处在于:
− 基于需求的匹配:由于Superior Scheduler采用“从作业到节点的调度”,能够选择合适的节点来预留资源提升这些特殊container的启动时间,并避免浪费。
− 租户重新平衡:启用预留逻辑时,开源调度器并不遵循配置的共享策略。Superior Scheduler采取不同的方法。在每个调度周期中,Superior Scheduler将遍历租户,并尝试基于多租户策略重新达到平衡,且尝试满足所有策略(reserve, min, share等),以便可以释放预留的资源,将可用资源流向不同租户下的其他本应得到资源的container。
l 动态队列状态控制(Open/Closed/Active/InActive)
支持多个队列状态,有助于管理员操作和维护多个租户。
− Open状态(Open/Closed):如果是Open(默认)状态,将接受提交到此队列的应用程序,如果是Closed状态,则不接受任何应用程序。
− Active状态(Active/Inactive):如果处于Active(默认)状态,租户内的应用程序是可以被调度和分配资源。如果处于Inactive状态则不会进行调度。
l 应用等待原因
如果应用程序尚未启动,则提供作业等待原因信息。
Superior Scheduler和YARN开源调度器作了对比分析,如表2-3所示:
表2-3 对比分析
领域
YARN开源调度器
Superior Scheduler
多租户调度
在同构集群上,只能选择容量调度器(Capacity Scheduler)或公平调度器(Fair Scheduler)两者之一,且FusionInsight集群当前不支持公平调度器(Fair Scheduler)。容量调度器只支持百分比方式配置,而公平调度器只支持绝对值方式。
l 支持异构集群和多资源池。
l 支持预留,以保证直接访问资源。
数据位置感知调度
从节点到作业的调度策略导致降低数据本地话命中率,潜在影响应用的执行性能。
从作业到节点的调度策略。可具有更精确的数据位置感知,数据本地化调度的作业命中率比较高。
基于机器负载的均衡调度
不支持
Superior Scheduler在调度时考虑机器的负载和资源分配情况,做到均衡调度。
租户内多用户公平调度
不支持
租户内用户的公平调度,支持关键字default, others。
作业等待原因
不支持
作业等待原因信息可显示为什么作业需等待。
综上所述,Superior Scheduler是一个高性能调度器,拥有丰富的调度策略,在功能、性能、资源利用率和扩展性方面都优于Capacity Scheduler。
2.4 分布式批处理引擎MapReduce
MapReduce是Hadoop的核心,是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。
当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
图2-7 分布式批处理引擎
MapReduce 是用于并行处理大数据集的软件框架。MapReduce 的根源是函数性编程中的map和reduce函数。Map函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。Reduce函数接受Map函数生成的列表,然后根据它们的键缩小键/值对列表。MapReduce起到了将大事务分散到不同设备处理的能力,这样原本必须用单台较强服务器才能运行的任务,在分布式环境下也能完成了。
2.5 分布式数据库HBase
数据存储使用HBase来承接,HBase是一个开源的、面向列(Column-Oriented)、适合存储海量非结构化数据或半结构化数据的、具备高可靠性、高性能、可灵活扩展伸缩的、支持实时数据读写的分布式存储系统。
图2-8 分布式数据库HBase
存储在HBase中的表的典型特征:
1. 大表(BigTable):一个表可以有上亿行,上百万列
2. 面向列:面向列(族)的存储、检索与权限控制
3. 稀疏:表中为空(null)的列不占用存储空间
2.6 数据仓库组件Hive
Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
Hive体系结构:
用户接口:用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是 CLI,CLI启动的时候,会同时启动一个 Hive 副本。 Client 是 Hive 的客户端,用户连接至 Hive Server。在启动 Client 模式的时候, 需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server。WUI 是通过浏览器访问 Hive。
元数据存储:Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
2.7 分布式内存计算引擎Spark
2.7.1 Spark
Apache Spark是一个开源的,通用的分布式集群计算引擎。Spark发展历程:
图2-9 Spark发展历程
FusionInsight Spark是一个开源的,并行数据处理框架,能够帮助用户简单的开发快速,统一的大数据应用,对数据进行,协处理,流式处理,交互式分析等等。
Spark具有如下特点:
1. 快速:数据处理能力,比MapReduce快10-100倍。
2. 易用:可以通过Java,Scala,Python,简单快速的编写并行的应用处理大数据量,Spark提供了超过80种高层的操作符来帮助用户组件并行程序。
3. 普遍性:Spark提供了众多高层的工具,例如Spark SQL,MLib,GraphX,Spark Stream,可以在一个应用中,方便的将这些工具进行组合。
与Hadoop集成:Spark能够直接运行于Hadoop 2.0的集群,并且能够直接读取现存的Hadoop数据。尤其,Spark和FusionInsight紧密结合,可以通过FusionInsight Manager部署安装Spark。
Spark提供了一个快速的计算,写入,以及交互式查询的框架。相比于Hadoop,Spark拥有明显的性能优势。Spark使用in-memory的计算方式,通过这种方式来避免一个MapReduce工作流中的多个任务对同一个数据集进行计算时的IO瓶颈。Spark利用Scala语言实现,Scala能够使得处理分布式数据集时,能够像处理本地化数据一样。
除了交互式的数据分析,Spark还能够支持交互式的数据挖掘,由于Spark是基于内存的计算,很方便处理迭代计算,而数据挖掘的问题通常都是对同一份数据进行迭代计算。除此之外,Spark能够运行于安装Hadoop 2.0 Yarn的集群。之所以Spark能够在保留MapReduce容错性,数据本地化,可扩展性等特性的同时,能够保证性能的高效,并且避免繁忙的磁盘IO,主要原因是因为Spark创建了一种叫做RDD(Resilient Distributed Dataset)的内存抽象结构。
原有的分布式内存抽象,例如key-value store以及数据库,支持对于可变状态的细粒度更新,这一点要求集群需要对数据或者日志的更新进行备份来保障容错性。这样就会给数据密集型的工作流带来大量的IO开销。而对于RDD来说,它只有一套受限制的接口,仅仅支持粗粒度的更新,例如map,join等等。通过这种方式,Spark只需要简单的记录建立数据的转换操作的日志,而不是完整的数据集,就能够提供容错性。这种数据的转换链记录就是数据集的溯源。由于并行程序,通常是对一个大数据集应用相同的计算过程,因此之前提到的粗粒度的更新限制并没有想象中的大。事实上,Spark论文中阐述了RDD完全可以作为多种不同计算框架,例如MapReduce,Pregel等的编程模型。
并且,Spark同时提供了操作允许用户显示的将数据转换过程持久化到硬盘。对于数据本地化,是通过允许用户能够基于每条记录的键值,控制数据分区实现的。(采用这种方式的一个明显好处是,能够保证两份需要进行关联的数据将会被同样的方式进行哈希)。如果内存的使用超过了物理限制,Spark将会把这些比较大的分区写入到硬盘,由此来保证可扩展性。
2.7.2 CarbonData
CarbonData是一种新型的Apache Hadoop本地文件格式,使用先进的列式存储、索引、压缩和编码技术,以提高计算效率,有助于加速超过PB数量级的数据查询,可用于更快的交互查询。同时,CarbonData也是一种将数据源与Spark集成的高性能分析引擎。
图1 CarbonData基本架构
使用CarbonData的目的是对大数据即席查询提供超快速响应。从根本上说,CarbonData是一个OLAP引擎,采用类似于RDBMS中的表来存储数据。用户可将大量(10TB以上)的数据导入以CarbonData格式创建的表中,CarbonData将以压缩的多维索引列格式自动组织和存储数据。数据被加载到CarbonData后,就可以执行即席查询,CarbonData将对数据查询提供秒级响应。
CarbonData将数据源集成到Spark生态系统,用户可使用Spark SQL执行数据查询和分析。也可以使用Spark提供的第三方工具ThriftServer连接到Spark SQL。
CarbonData特性
l SQL功能:CarbonData与Spark SQL完全兼容,支持所有可以直接在Spark SQL上运行的SQL查询操作。
l 简单的Table数据集定义:CarbonData支持易于使用的DDL(数据定义语言)语句来定义和创建数据集。CarbonData DDL十分灵活、易于使用,并且足够强大,可以定义复杂类型的Table。
l 便捷的数据管理:CarbonData为数据加载和维护提供多种数据管理功能。CarbonData支持加载历史数据以及增量加载新数据。加载的数据可以基于加载时间进行删除,也可以撤销特定的数据加载操作。
l CarbonData文件格式是HDFS中的列式存储格式。该格式具有许多新型列存储文件的特性,例如,分割表,压缩模式等。CarbonData具有以下独有的特点:
− 伴随索引的数据存储:由于在查询中设置了过滤器,可以显著加快查询性能,减少I/O扫描次数和CPU资源占用。CarbonData索引由多个级别的索引组成,处理框架可以利用这个索引来减少需要安排和处理的任务,也可以通过在任务扫描中以更精细的单元(称为blocklet)进行skip扫描来代替对整个文件的扫描。
− 可选择的数据编码:通过支持高效的数据压缩和全局编码方案,可基于压缩/编码数据进行查询,在将结果返回给用户之前,才将编码转化为实际数据,这被称为“延迟物化”。
− 支持一种数据格式应用于多种用例场景:例如,交互式OLAP-style查询,顺序访问(big scan),随机访问(narrow scan)。
CarbonData关键技术和优势
l 快速查询响应:高性能查询是CarbonData关键技术的优势之一。CarbonData查询速度大约是Spark SQL查询的10倍。CarbonData使用的专用数据格式围绕高性能查询进行设计,其中包括多种索引技术、全局字典编码和多次的Push down优化,从而对TB级数据查询进行最快响应。
l 高效率数据压缩:CarbonData使用轻量级压缩和重量级压缩的组合压缩算法压缩数据,可以减少60%~80%数据存储空间,大大节省硬件存储成本。
2.8 交互式SQL引擎Elk
Elk是一个分布式交互查询分析数据仓库引擎,支持标准的SQL2003规范,支持标准SQL对数据的并行插入、删除、修改、查询等功能。
Elk是FusionInsight HD提供标准SQL接口的即时查询组件。
Elk具备以下特点:
l 支持SQL2003标准语法
l 采用高速分布式并行计算引擎
l 提供高性能的HDFS(Hadoop Distributed File System)结构化数据的即时及复杂分析查询功能
l 对外提供JDBC和ODBC访问接口
Elk由多个ElkServer组成,Elk结构具体如图2-10所示。
图2-10 Elk结构
表2-4 模块说明
名称
描述
ElkServer(CM)
Elk集群管理模块CM(Cluster Manager),即含CMServer进程的特殊ElkServer,负责管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。CM分为主CM和备CM。正常情况下,只由主CM提供Elk集群管理服务。当主CM发生故障的情