最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

华为FusionInsight HD 6.5.1 技术白皮书 01

IT圈 admin 36浏览 0评论

2024年2月7日发(作者:西门振锐)

华为FusionInsight HD

6.5.1

技术白皮书

文档版本

发布日期

01

2019-06-30

华为技术有限公司

版权所有 © 华为技术有限公司2020。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

华为技术有限公司

地址:

网址:

深圳市龙岗区坂田华为总部办公楼 邮编:518129

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

i

华为FusionInsight HD

技术白皮书 目 录

目 录

1 简介 .................................................................................................................................................. 1

1.1 FusionInsight概述 ....................................................................................................................................................... 1

1.2 FusionInsight HD组件介绍 ......................................................................................................................................... 2

2 重点组件介绍.................................................................................................................................. 4

2.1 集群管理Manager ...................................................................................................................................................... 5

2.2 分布式文件系统HDFS .............................................................................................................................................. 8

2.3 统一资源管理和调度框架YARN .............................................................................................................................. 8

2.3.1 Yarn ............................................................................................................................................................................ 8

2.3.2 Superior Scheduler ..................................................................................................................................................... 9

2.4 分布式批处理引擎MapReduce ............................................................................................................................... 14

2.5 分布式数据库HBase ................................................................................................................................................ 14

2.6 数据仓库组件Hive ................................................................................................................................................... 15

2.7 分布式内存计算引擎Spark ..................................................................................................................................... 15

2.7.1 Spark ........................................................................................................................................................................ 15

2.7.2 CarbonData .............................................................................................................................................................. 17

2.8 交互式SQL引擎Elk ............................................................................................................................................... 18

2.9 全文检索组件Solr .................................................................................................................................................... 21

2.10 全文检索组件Elasticsearch ................................................................................................................................... 23

2.11 批量数据集成Loader ............................................................................................................................................. 24

2.12 实时数据采集Flume .............................................................................................................................................. 27

2.13 流式事件处理(Storm) ........................................................................................................................................ 28

2.13. 28

2.13.2 StreamCQL ............................................................................................................................................................ 29

2.14 流处理引擎Flink .................................................................................................................................................... 30

2.15 分布式高速缓存Redis ........................................................................................................................................... 32

2.16 分布式消息队列Kafka ........................................................................................................................................... 32

2.17 作业编排与调度Oozie ........................................................................................................................................... 33

2.18 数据继承入口Hue .................................................................................................................................................. 35

2.19 分布式图数据库GraphBase ................................................................................................................................... 36

2.20 多租户 ..................................................................................................................................................................... 38

2.21 安全增强 ................................................................................................................................................................. 39

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

ii

华为FusionInsight HD

技术白皮书 目 录

2.22 可靠性增强 ............................................................................................................................................................. 41

2.23 滚动重启、滚动升级与滚动补丁 .......................................................................................................................... 43

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

iii

华为FusionInsight HD

技术白皮书 1 简介

1

1.1 FusionInsight概述

1.2 FusionInsight HD组件介绍

简介

1.1 FusionInsight概述

FusionInsight是华为企业级大数据存储、查询、分析的统一平台,能够帮助企业快速构建海量数据信息处理系统,通过对巨量信息数据实时与非实时的分析挖掘,发现全新价值点和企业商机。

FusionInsight解决方案由2个子产品FusionInsight HD、GaussDB 200和1个操作运维系统FusionInsight Manager构成。

FusionInsight HD:企业级的大数据处理环境,是一个分布式数据处理系统,对外提供大容量的数据存储、分析查询和实时流式数据处理分析能力。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

1

华为FusionInsight HD

技术白皮书

1 简介

GaussDB 200:企业级的大规模并行处理关系型数据库。GaussDB 200采用MPP(Massive Parallel Processing)架构,支持行存储和列存储,提供PB(Petabyte,2的50次方字节)级别数据量的处理能力。

FusionInsight Manager:企业级大数据的操作运维系统,提供高可靠、安全、容错、易用的集群管理能力,支持大规模集群的安装部署、监控、告警、用户管理、权限管理、审计、服务管理、健康检查、问题定位、升级和补丁等功能。

1.2 FusionInsight HD组件介绍

FusionInsight系统的整体逻辑架构图如下所示:

FusionInsight HD 需要对开源组件进行封装和增强,对外提供稳定的大容量的数据存储、查询和分析能力。各自组件提供功能如下:

Manager:作为运维系统,为FusionInsight HD提供高可靠、安全、容错、易用的集群管理能力,支持大规模集群的安装/升级/补丁、配置管理、监控管理、告警管理、用户管理、租户管理等。

HDFS:Hadoop分布式文件系统(Hadoop Distributed File System),提供高吞吐量的数据访问,适合大规模数据集方面的应用。

HBase:提供海量数据存储功能,是一种构建在HDFS之上的分布式、面向列的存储系统。

Oozie:提供了对开源Hadoop组件的任务编排、执行的功能。以Java Web应用程序的形式运行在Java servlet容器(如:Tomcat)中,并使用数据库来存储 工作流定义、当前运行的工作流实例(含实例的状态和变量)。

ZooKeeper:提供分布式、高可用性的协调服务能力。帮助系统避免单点故障,从而建立可靠的应用程序。

Redis:提供基于内存的高性能分布式K-V缓存系统。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

2

华为FusionInsight HD

技术白皮书

1 简介

Yarn:Hadoop 2.0中的资源管理系统,它是一个通用的资源模块,可以为各类应用程序进行资源管理和调度。

Mapreduce:提供快速并行处理大量数据的能力,是一种分布式数据处理模式和执行环境。

Spark:基于内存进行计算的分布式计算框架。

Hive:建立在Hadoop基础上的开源的数据仓库,提供类似SQL的Hive QL语言操作结构化数据存储服务和基本的数据分析服务。

Loader:基于Apache Sqoop 实现FusionInsight HD与关系型数据库、ftp/sftp文件服务器之间数据批量导入/导出工具;同时提供Java API/shell任务调度接口,供第三方调度平台调用。

Hue:提供了开源Hadoop组件的WebUI,可以通过浏览器操作HDFS的目录和文件,调用Oozie来创建、监控和编排工作流,可操作Loader组件,查看ZooKeeper集群情况。

Flume:一个分布式、可靠和高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写入各种数据接受方(可定制)的能力。

Solr:一个高性能,基于Lucene的全文检索服务器。Solr对Lucene进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文检索引擎。

Elasticsearch:一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于JAVA/Lucene构建,开源、分布式、支持RESTful请求。Elasticsearch服务支持结构化、非结构化文本的多条件检索、统计和报表生成,拥有完善的监控体系,提供一系列系统,集群以及查询性能等关键指标,让用户更专注于业务逻辑的实现。多用于日志搜索和分析、时空检索、时序检索和报表、智能搜索等场景。

Kafka:一个分布式的、分区的、多副本的实时消息发布-订阅系统。提供可扩展、高吞吐、低延迟、高可靠的消息分发服务。

Storm:一个分布式、可靠、容错的实时流式数据处理的系统,并提供类SQL(StreamCQL)的查询语言。

Flink:分布式的、高可用的、能保证Exactly Once语义的针对流数据和批数据的处理引擎。

SparkSQL:基于Spark引擎的高性能SQL引擎,可与Hive实现元数据共享。

Elk:一个分布式交互查询分析数据仓库引擎,支持标准的SQL2003规范,支持标准SQL对数据的并行插入、删除、修改、查询等功能。

MLlib:提供基于Spark的数据挖掘算法库。

GraphX:提供基于Spark的图处理算法库。

GraphBase : 提供关系数据存储、查询、分析能力。

Pollux: 一个兼容相同数据中心和跨数据中心多数据源协助查询的系统。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

3

华为FusionInsight HD

技术白皮书 2 重点组件介绍

2

2.1 集群管理Manager

2.2 分布式文件系统HDFS

2.3 统一资源管理和调度框架YARN

2.4 分布式批处理引擎MapReduce

2.5 分布式数据库HBase

2.6 数据仓库组件Hive

2.7 分布式内存计算引擎Spark

2.8 交互式SQL引擎Elk

2.9 全文检索组件Solr

2.10 全文检索组件Elasticsearch

2.11 批量数据集成Loader

2.12 实时数据采集Flume

2.13 流式事件处理(Storm)

2.14 流处理引擎Flink

2.15 分布式高速缓存Redis

2.16 分布式消息队列Kafka

2.17 作业编排与调度Oozie

2.18 数据继承入口Hue

2.19 分布式图数据库GraphBase

2.20 多租户

2.21 安全增强

2.22 可靠性增强

重点组件介绍

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

4

华为FusionInsight HD

技术白皮书 2 重点组件介绍

2.23 滚动重启、滚动升级与滚动补丁

2.1 集群管理Manager

Manager是FusionInsight HD的运维管理系统,为部署在集群内的服务提供统一的集群管理能力。Manager支持大规模集群的安装部署、性能监控、告警、用户管理、权限管理、审计、服务管理、健康检查、日志采集、升级和补丁等功能。

图2-1 Manager逻辑架构

FusionInsight Manager由OMS和NodeAgent组成:

OMS:操作维护系统的管理节点,OMS一般有两个,互为主备。

NodeAgent:操作维护系统中的所有被管理节点,每个节点上一个。

表2-1 业务模块说明

模块名称

WebService

描述

是一个部署在Tomcat下的Web服务,提供Manager的https接口,用于通过浏览器访问Manager。同时还提供基于Syslog和SNMP协议的北向接入能力

Manager的控制中心,负责汇聚来自集群中所有节点的信息,统一向管理员展示,以及负责接收来自管理员的操作指令,并且依据操作指令所影响的范围,向集群的所有相关节点同步信息

Controller

NodeAgent

存在于每一个集群节点,是Controller对部署在该节点上组件做一切操作的代理。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

5

华为FusionInsight HD

技术白皮书 2 重点组件介绍

模块名称 描述

代表本节点上部署的所有组件与Controller交互,实现整个集群多点到单点的汇聚。

IAM

PMS

CEP

FMS

OMMAgent

CAS

AOS

负责记录审计日志。在Manager的UI上每一个非查询类操作,都有对应的审计日志

性能监控模块,搜集每一个OMA上的性能监控数据并提供查询

汇聚功能模块。比如将所有OMA上的磁盘已用空间汇总成一个性能指标

告警模块,搜集每一个OMA上的告警并提供查询

各节点上面性能监控和告警的Agent,负责收集该Agent Node上的性能监控数据和告警数据

统一认证中心,登录Web Service时需要在CAS进行登录认证,浏览器通过URL自动跳转访问CAS

权限管理模块,管理用户和用户组的权限

OMS Kerberos

提供单点登录及Controller与Node Agent间认证的功能。

OMS Ldap

Database

NTP

在集群安装前为用户认证提供数据存储,在集群安装后作为集群中Ldap的备份

Manager的数据库,负责存储配置、监控、告警等信息

负责集群内部各节点与OMS节点之间的时钟同步 和 OMS节点与外部时钟源之间的时钟同步。

支持5000+节点大集群

Manager通过支持以下特性,达到支持5000+大集群的能力:

快速部署安装

产品集成的集群部署规划工具,可自动生成安装模板和扩容模板,创建一个5000节点,仅需要不到5个小时时间。

文件分发多点续传

软件包下发给集群中各节点时采用类P2P机制,一传十、十传百,传输效率不再依赖节点规模

全场景容错机制

所有维护操作支持重试,安装部署支持角色级别容错,支持主机隔离。部分节点/角色故障,不影响整体维护操作。

大集群环境异构能力

配置集中管理,支持按实例组配置,不同硬件规格主机设置不同的配置,提升配置异构能力。

集群规模弹性伸缩

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

6

华为FusionInsight HD

技术白皮书 2 重点组件介绍

集群可大可小,不同集群规模应用不同系统参数,更加合理利用硬件资源

高性能监控指标汇聚计算能力

分布式监控汇聚计算模型,能够瞬时处理250000条并发监控指标。

轻松应对告警风暴

每秒支持处理高达10000条并发告警

支持多服务

多服务特性是指组件不需要定义多套,由Manager直接支持在一个集群内,将同一组件安装多套,以便更好地解决资源隔离问题或性能问题。

新添加的服务实例拥有与原服务相同的功能模块,例如日志、运行用户或Shell命令。Manager可以统一管理HBase、Hive和Spark/Spark2x等不同服务实例,例如监控、告警和启动停止服务的功能。在使用Loader导入导出数据、使用Metadata抽取元数据、创建角色、备份恢复或者应用开发的场景中,系统管理员需要根据实际情况,选择对应的服务实例进行操作。

支持在线日志检索

支持在线检索并显示组件的日志内容,用于问题定位等其他日志查看场景。

检索内容支持关键字、正则表达式。

支持服务、文件、日志级别、主机范围、时间范围的选择。

支持检索返回结果的最大条数和检索超时的配置功能。

针对检索结果支持排序、二次检索功能。

支持检索结果的导出。

支持多集群统一管理

支持多集群统一管理,使用一套FusionInsight Manager可创建、管理多个集群,减少运维人员管理多个集群需要操作多套界面的繁琐。

FusionInsight Manager支持同时管理多个相同产品类型的集群,也支持不同产品类型的集群。

多集群部署

多个集群统一部署一套OMS,所有集群共用管理节点,非首个安装的集群不需要额外准备管理节点。

部署集群时,一台主机只能属于一个集群,管理节点可单独部署,不归属于任何一个集群。

多集群任务并发

多个集群的运维任务可并发执行,互不影响,FusionInsight Manager支持在任务管理中心显示集群名称,支持按集群检索任务。

统一用户权限管理

多个集群共用一套用户权限管理体系,用户通过关联不同集群角色的权限,可访问各集群内的资源。

多集群运维监控

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

7

华为FusionInsight HD

技术白皮书 2 重点组件介绍

管理员可通过FusionInsight Manager同时对多个集群进行服务管理、主机管理、租户资源管理、日常监控、告警查看等操作。

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 存在错误或者甚至是恶意的,因此将它们当作无特权的代码对待。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

8

华为FusionInsight HD

技术白皮书 2 重点组件介绍

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组件进行交互,以提供资源调度功能。下图为其整体系统图。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

9

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-4 Superior Scheduler内部架构

Superior Scheduler的主要模块如下:

Superior Scheduler Engine:具有丰富调度策略的高性能调度器引擎。

Superior YARN Scheduler Plugin:YARN Resource Manager和Superior

SchedulerEngine之间的桥梁,负责同YARN Resource Manager交互。

在调度原理上,开源的调度器都是基于计算节点心跳驱动的资源反向匹配作业的调度机制。具体来讲,每个计算节点定期发送心跳到YARN的Resource Manager通知该节点状态并同时启动调度器为这个节点分配作业。这种调度机制把调度的周期同心跳结合在一起,当集群规模增大时,会遇到系统扩展性以及调度性能瓶颈。另外,因为采用了资源反向匹配作业的调度机制,开源调度器在调度精度上也有局限性,例如数据亲和性偏于随机,另外系统也无法支持基于负载的调度策略等。主要原因是调度器在选择作业时,缺乏全局的资源视图,很难做到最优选择。

Superior Scheduler内部采用了不同的调度机制。Superior Scheduler的调度器引入了专门的调度线程,把调度同心跳剥离开,避免了系统心跳风暴问题。另外,Superior Scheduler调度流程采用了从作业到资源的正向匹配方法,这样每个调度的作业都有全局的资源视图,可以很大的提到调度的精度。相比开源调度器,Superior Scheduler在系统吞吐量、利用率、数据亲和性等方面都有很大提升。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

10

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-5 Superior Scheduler性能对比

Superior Scheduler除了提高系统吞吐量和利用率,还提供了以下主要调度功能:

多资源池

多资源池有助于在逻辑上划分集群资源并在多个租户/队列之间共享它们。资源池的划分可以基于异构的资源或完全按照应用资源隔离的诉求来划分。对于一个资源池,不同队列可配置进一步的策略。

每个资源池多租户调度(reserve、min、share、max)

Superior Scheduler提供了灵活的层级多租户调度策略。并允许针对不同的资源池可以访问的租户/队列,配置不同策略,如下所示。

表2-2 策略描述

策略名称

reserve

描述

预留租户资源。即使租户没有作业,其他租户也不能使用该预留的资源。其值可以是百分比或绝对值。如果两者都配置,调度系统动态计算转换为资源绝对值,并取两者的最大值。缺省的reserve值为0。相对于定义一个专用资源池并指定具体机器的方式,reserve的策略可以认为提供了一种灵活的浮动预留功能,由于并不限定具体的机器,可以提高计算的数据亲和性,也不会受具体机器故障的影响。

具有抢占支持的最低保证资源。其他租户可以使用这部分资源,但是本租户享有优先使用权。其值可以是百分比或绝对值。如果两者都配置,调度系统动态计算转换为资源绝对值,并取两者的最大值。缺省值是0。

不支持抢占的共享资源。本租户要使用这部分资源时,需要等待其他租户完成作业并释放资源。其值是百分比或绝对值。

允许的最大资源数量。租户无法获得比允许的最大资源多的资源。min

share

max

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

11

华为FusionInsight HD

技术白皮书 2 重点组件介绍

策略名称 描述

其值是百分比或绝对值。如果两者都配置,调度系统动态计算转换为资源绝对值,并取两者最大值。缺省值不受限制。

租户资源分配策略示意图,如图2-6所示。

图2-6 策略示意图

其中“total”表示总资源,不是调度策略。

同开源的调度器相比,Superior Scheduler同时提供了租户级百分比和绝对值的混配策略,可以很好的适应各种灵活的企业级租户资源调度诉求。例如,用户可以在一级租户提供最大绝对值的资源保障,这样租户的资源不会因为集群的规模改变而受影响。但在下层的子租户之间,可以提供百分比的分配策略,这样可以尽可能提升一级租户内的资源利用率。

异构和多维资源调度

Superior Scheduler支持CPU和内存资源的调度外,还支持扩展支持以下功能:

节点标签可用于识别像GPU_ENABLED,SSD_ENBALED等节点的多维属性,可以根据这些标签进行调度。

资源池可用于对同一类别的资源进行分组并分配给特定的租户/队列。

租户内多用户公平调度

在叶子租户里,多个用户可以使用相同的队列来提交作业。相比开源调度器,Superior Scheduler可以支持在同一租户内灵活配置不同用户的资源共享策略。例如可以为VIP用户配置更多的资源访问权重。

数据位置感知调度

Superior Scheduler采用“从作业到节点的调度策略”,即尝试在可用节点之间调度给定的作业,使得所选节点适合于给定作业。通过这样做,调度器将具有集群和数据的整体视图。如果有机会使任务更接近数据,则保证了本地化。而开源调度器采用“从节点到作业的调度策略”,在给定节点中尝试匹配适当的作业。

Container调度时动态资源预留

在异构和多样化的计算环境中,一些container需要更多的资源或多种资源,例如Spark作业可能需要更大的内存。当这些container与其他需要较小资源的container竞争时,可能没有机会在合理的时间内获得所需的资源而处于饥饿状态。由于开源的调度器是基于资源反向匹配作业的调度方式,会为这些作业盲目的进行资源文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

12

华为FusionInsight HD

技术白皮书 2 重点组件介绍

预留以防进入饥饿状态。这就导致了系统资源的整体浪费。Superior Scheduler与开源特性的不同之处在于:

基于需求的匹配:由于Superior Scheduler采用“从作业到节点的调度”,能够选择合适的节点来预留资源提升这些特殊container的启动时间,并避免浪费。

租户重新平衡:启用预留逻辑时,开源调度器并不遵循配置的共享策略。Superior Scheduler采取不同的方法。在每个调度周期中,Superior Scheduler将遍历租户,并尝试基于多租户策略重新达到平衡,且尝试满足所有策略(reserve, min, share等),以便可以释放预留的资源,将可用资源流向不同租户下的其他本应得到资源的container。

动态队列状态控制(Open/Closed/Active/InActive)

支持多个队列状态,有助于管理员操作和维护多个租户。

Open状态(Open/Closed):如果是Open(默认)状态,将接受提交到此队列的应用程序,如果是Closed状态,则不接受任何应用程序。

Active状态(Active/Inactive):如果处于Active(默认)状态,租户内的应用程序是可以被调度和分配资源。如果处于Inactive状态则不会进行调度。

应用等待原因

如果应用程序尚未启动,则提供作业等待原因信息。

Superior Scheduler和YARN开源调度器作了对比分析,如表2-3所示:

表2-3 对比分析

领域

多租户调度

YARN开源调度器

在同构集群上,只能选择容量调度器(Capacity Scheduler)或公平调度器(Fair Scheduler)两者之一,且FusionInsight集群当前不支持公平调度器(Fair

Scheduler)。容量调度器只支持百分比方式配置,而公平调度器只支持绝对值方式。

从节点到作业的调度策略导致降低数据本地话命中率,潜在影响应用的执行性能。

不支持

Superior Scheduler

支持异构集群和多资源池。

支持预留,以保证直接访问资源。

数据位置感知调度

基于机器负载的均衡调度

租户内多用户公平调度

作业等待原因

从作业到节点的调度策略。可具有更精确的数据位置感知,数据本地化调度的作业命中率比较高。

Superior Scheduler在调度时考虑机器的负载和资源分配情况,做到均衡调度。

租户内用户的公平调度,支持关键字default, others。

作业等待原因信息可显示为什么作业需等待。

不支持

不支持

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

13

华为FusionInsight HD

技术白皮书 2 重点组件介绍

综上所述,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)、适合存储海量非结构化数据或半结构化数据的、具备高可靠性、高性能、可灵活扩展伸缩的、支持实时数据读写的分布式存储系统。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

14

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图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发展历程:

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

15

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图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同时提供了操作允许用户显示的将数据转换过程持久化到硬盘。对于数据本地化,是通过允许用户能够基于每条记录的键值,控制数据分区实现的。(采用这种方式的一个明显好处是,能够保证两份需要进行关联的数据将会被同样的方式进行哈文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

16

华为FusionInsight HD

技术白皮书 2 重点组件介绍

希)。如果内存的使用超过了物理限制,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特性

SQL功能:CarbonData与Spark SQL完全兼容,支持所有可以直接在Spark SQL上运行的SQL查询操作。

简单的Table数据集定义:CarbonData支持易于使用的DDL(数据定义语言)语句来定义和创建数据集。CarbonData DDL十分灵活、易于使用,并且足够强大,可以定义复杂类型的Table。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

17

华为FusionInsight HD

技术白皮书

2 重点组件介绍

便捷的数据管理:CarbonData为数据加载和维护提供多种数据管理功能。CarbonData支持加载历史数据以及增量加载新数据。加载的数据可以基于加载时间进行删除,也可以撤销特定的数据加载操作。

CarbonData文件格式是HDFS中的列式存储格式。该格式具有许多新型列存储文件的特性,例如,分割表,压缩模式等。CarbonData具有以下独有的特点:

伴随索引的数据存储:由于在查询中设置了过滤器,可以显著加快查询性能,减少I/O扫描次数和CPU资源占用。CarbonData索引由多个级别的索引组成,处理框架可以利用这个索引来减少需要安排和处理的任务,也可以通过在任务扫描中以更精细的单元(称为blocklet)进行skip扫描来代替对整个文件的扫描。

可选择的数据编码:通过支持高效的数据压缩和全局编码方案,可基于压缩/编码数据进行查询,在将结果返回给用户之前,才将编码转化为实际数据,这被称为“延迟物化”。

支持一种数据格式应用于多种用例场景:例如,交互式OLAP-style查询,顺序访问(big scan),随机访问(narrow scan)。

CarbonData关键技术和优势

快速查询响应:高性能查询是CarbonData关键技术的优势之一。CarbonData查询速度大约是Spark SQL查询的10倍。CarbonData使用的专用数据格式围绕高性能查询进行设计,其中包括多种索引技术、全局字典编码和多次的Push down优化,从而对TB级数据查询进行最快响应。

高效率数据压缩:CarbonData使用轻量级压缩和重量级压缩的组合压缩算法压缩数据,可以减少60%~80%数据存储空间,大大节省硬件存储成本。

2.8 交互式SQL引擎Elk

Elk是一个分布式交互查询分析数据仓库引擎,支持标准的SQL2003规范,支持标准SQL对数据的并行插入、删除、修改、查询等功能。

Elk是FusionInsight HD提供标准SQL接口的即时查询组件。

Elk具备以下特点:

支持SQL2003标准语法

采用高速分布式并行计算引擎

提供高性能的HDFS(Hadoop Distributed File System)结构化数据的即时及复杂分析查询功能

对外提供JDBC和ODBC访问接口

Elk由多个ElkServer组成,Elk结构具体如图2-10所示。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

18

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-10 Elk结构

表2-4 模块说明

名称

ElkServer(CM)

描述

Elk集群管理模块CM(Cluster Manager),即含CMServer进程的特殊ElkServer,负责管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。CM分为主CM和备CM。正常情况下,只由主CM提供Elk集群管理服务。当主CM发生故障的情况下,备CM会主动升为主CM提供Elk集群管理服务。

CM通过CM服务完成对各个ElkServer管理。CM服务由CMServer、CMAgent、Monitor组成。

CMServer是整个Elk集群的大脑,它会根据CMAgent上报上来的各ElkServer状态信息来决定是否需要状态变更。CMServer只部署在主备CM上。

CMAgent是ElkServer上面部署的实例代理线程,负责接收CMServer下发的命令和上报ElkServer的Coordinator、Datanode、GTM的状态给CMServer。每个ElkServer均会部署一个CMAgent,也包括主备CM和主备GTM。

Monitor是watchdog定时任务,其唯一的任务是在CMAgent停止的情况下将CMAgent重启。每个ElkServer均会部署一个Monitor,也包括主备CM和主备GTM。

ElkServer(GTM)

全局事务管理模块GTM(Global Transaction Manager),即含GTM进程的特殊ElkServer,负责生成和维护全局事务ID、事务快照、时间戳等需要全局唯一的信息。GTM分为主GTM和备GTM。正常情况下,只由主GTM提供全局事务管理服务。当主GTM发生故障的情况下,备GTM会主动升为主GTM提供服务。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

19

华为FusionInsight HD

技术白皮书 2 重点组件介绍

名称

ElkServer

描述

业务模块,即除ElkServer(CM)、ElkServer(GTM)以外的ElkServer,由Coordinator及多个Datanode组成,负责执行CM、GTM下发的任务。业务模块与ElkServer(CM)、ElkServer(GTM)主要区别是不包含CMServer与GTM进程。

说明

本手册的Coordinator简称为CN。

Coordinator(CN)

负责提供外部应用接口、优化全局执行计划、向Datanode分发执行计划,以及汇总、处理执行结果。

Datanode(DN)

说明

本手册的Datanode简称为DN。

负责存储业务数据、执行数据查询任务以及向Coordinator返回执行结果。

Datanode实例分为主Datanode实例、备Datanode实例和从备Datanode实例,它们之间的工作原理如下:

主、备实例间可以正常同步数据时,主实例不会同步数据到从备实例。

主、备实例间无法正常同步数据时,主实例会将数据同步到从备实例。

主、备实例间数据同步恢复正常后,主实例会将异常期间的数据同步到备实例上,并在完成后知会从备实例清空之前同步的这部分数据。备实例同步主实例数据期间,如果主实例发生故障不可用,备实例将升为主实例,并在升为主实例成功后从备实例上同步之前异常期间的数据。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

20

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-11 Elk查询HDFS数据原理

Elk查询HDFS数据原理如图2-11所示,具体步骤如下:

1. 用户通过应用程序发出查询HDFS数据的SQL请求到Coordinator。

2. Coordinator接收用户的SQL请求,访问HDFS的NameNode的元数据信息。

3. NameNode返回元数据信息到Coordinator,Coordinator获取外表数据在HDFS集群上的分布信息。

4. Coordinator分配服务进程,向GTM请求分配全局事务信息。

5. GTM接收到Coordinator的请求,返回全局事务信息给Coordinator。

6. Coordinator根据数据分布信息以及系统元信息,解析SQL为查询计划树,从查询计划树中提取可以发送到Datanode的执行步骤,封装成SQL语句或者子执行计划树,发送到Datanode执行。

7. Datanode接收到读取任务后,查询分析读取的具体HDFS的数据块。

8. Datanode任务执行后,将执行结果返回给Coordinator。

9. Coordinator将查询结果通过应用程序返回给用户。

2.9 全文检索组件Solr

Solr是基于Apache Lucene的独立的企业级应用搜索服务器。它对外提供了类似于REST的HTTP/XML和JSON的API。其主要功能包括强大的全文检索,高亮显示,层面搜索,近实时索引,动态聚类,数据库整合,丰富的文档(如Word中,PDF格式)处理和地理信息搜索等。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

21

华为FusionInsight HD

技术白皮书 2 重点组件介绍

Solr作为业界优秀的企业搜索服务器具有以下特性:

1. 先进的全文搜索功能

2. 优化的高容量网络流量

3. 基于标准的开放接口——XML,JSON和HTTP

4. 综合的HTML管理界面

5. 采用JMX监控服务器统计信息

6. 线性可扩展性,自动索引复制,自动故障转移和恢复

7. 近实时索引

8. 采用XML配置达到灵活性和适配性

9. 可扩展的插件架构

Solr集群方案逻辑组成

表2-5 Solr组成

名称

Client

说明

Client使用HTTP协议同Solr集群(SolrCloud)中的SolrServer 进行通信,进行分布式索引和分布式搜索操作。

SolrServer负责提供创建索引和全文检索等服务,是Solr集群中的数据计算和处理单元。

SolrServer一般与HDFS集群中的DataNode合并。从而可以提供更高性能的索引和搜索服务。

ZooKeeper集群

ZooKeeper为Solr集群中各进程提供分布式协作服务。各SolrServer将自己的信SolrServer

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

22

华为FusionInsight HD

技术白皮书 2 重点组件介绍

名称 说明

息(collection配置信息、SolrServer健康信息等)注册到Zookeeper中,Client据此感知各个SolrServer的健康状态来决定索引和搜索请求的分发。

HDFS集群 HDFS为Solr提供高可靠的文件存储服务,Solr的索引文件全部存储在HDFS中。

2.10 全文检索组件Elasticsearch

添加Elasticsearch后,可以接入Elasticsearch集群开始使用Elasticsearch引擎,如定义索引数据、加载数据或搜索数据等。Elasticsearch集群可以包含多个索引(indices)(数据库),一个索引包含一个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。

表2-6 Elasticsearch 基本概念

术语 描述

索引在Elasticsearch中存储数据的行为就叫做索引(indexing),索引在(Index)

Elasticsearch中只是一个逻辑命名空间,指向一个或多个分片,内部Apache Lucene实现索引中数据的读写。索引与关系数据库实例Database相当。

说明

索引(名词) 如上文所述,一个索引(index)就像是传统关系数据库中的数据库,它是相关文档存储的地方,index的复数是indices 或indexes。

索引(动词) 「索引一个文档」表示把一个文档存储到索引(名词)里,以便它可以被检索或者查询。这很像SQL中的 INSERT 关键字,差别是,如果文档已经存在,新的文档将覆盖旧的文档。

倒排索引 传统数据库为特定列增加一个索引,例如B-Tree索引来加速检索。Elasticsearch和Lucene使用一种叫做倒排索引(inverted index)的数据结构来达到相同目的。默认情况下,文档中的所有字段都会被索引(拥有一个倒排索引),只有这样他们才是可被搜索的。

文档类型(Type)

文档(Document)

每个文档在Elasticsearch中都必须设定它的类型。文档类型使得同一个索引中在存储结构不同的文档时,只需要依据文档类型就可以找到对应的参数映射信息,方便文档的存储。相当于数据库中的Table。

是可以被索引的基本单位,特指最顶层结构或根对象序列化成的JSON数据。通过相当于数据库中的Row。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

23

华为FusionInsight HD

技术白皮书 2 重点组件介绍

术语

映射(Mapping)

字段(Field)

描述

用来约束字段的类型,可以根据数据自动创建。相当于数据库中的Shema。

组成文档的最小单位。相当于数据库中的Column。

在Elasticsearch中,我们可以画一些简单的对比图来类比传统关系型数据库:

Relational DB -> Databases -> Tables -> Rows -> Columns

Elasticsearch -> Indices -> Types -> Documents -> Fields

使用Elasticsearch服务中引擎搜索数据的基本流程如下所示:

1. 场景描述

2. 第一步:新建集群

3. 第二步:定义数据

4. 第三步:加载数据建立索引

5. 第四步:搜索数据

6. 第五步:删除集群

2.11 批量数据集成Loader

Loader是在开源Sqoop组件的基础上进行了一些扩展,实现FusionInsight 与关系型数据库、文件系统之间交换“数据”、“文件”,同时也可以将数据从关系型数据库或者文件服务器导入到FusionInsight 的HDFS/HBase中,或者反过来从HDFS/HBase导出到关系型数据库或者文件服务器中。

Loader模型主要由Loader Client和Loader Server组成,如图2-12所示。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

24

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-12 Loader模型

图2-12中各部分的功能说明如表2-7所示。

表2-7 Loader模型组成

名称

Loader Client

Loader Server

描述

Loader的客户端,包括WebUI和CLI版本两种交互界面。

Loader的服务端,主要功能包括:处理客户端操作请求、管理连接器和元数据、提交MapReduce作业和监控MapReduce作业状态等。

实现RESTful(HTTP + JSON)接口,处理来自客户端的操作请求。

简单的作业调度模块,支持周期性的执行Loader作业。

数据转换处理引擎,支持字段合并、字符串剪切、字符串反序等。

Loader作业执行引擎,支持以REST API

Job Scheduler

Transform Engine

Execution Engine

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

25

华为FusionInsight HD

技术白皮书 2 重点组件介绍

名称 描述

MapReduce方式执行Loader作业。

Submission Engine

Job Manager

Loader作业提交引擎,支持将作业提交给MapReduce执行。

管理Loader作业,包括创建作业、查询作业、更新作业、删除作业、激活作业、去激活作业、启动作业、停止作业。

元数据仓库,存储和管理Loader的连接器、转换步骤、作业等数据。

管理Loader Server进程的主备状态,Loader Server包含2个节点,以主备方式部署。

Metadata Repository

HA Manager

通过MapReduce实现并行执行和容错

Loader通过MapReduce作业实现并行的导入或者导出作业任务,不同类型的导入导出作业可能只包含Map阶段或者同时Map和Reduce阶段。

Loader同时利用MapReduce实现容错,在作业任务执行失败时,可以重新调度。

数据导入到HBase

在MapReduce作业的Map阶段中从外部数据源抽取数据。

在MapReduce作业的Reduce阶段中,按Region的个数启动同样个数的Reduce Task,Reduce Task从Map接收数据,然后按Region生成HFile,存放在HDFS临时目录中。

在MapReduce作业的提交阶段,将HFile从临时目录迁移到HBase目录中。

数据导入HDFS

在MapReduce作业的Map阶段中从外部数据源抽取数据,并将数据输出到HDFS临时目录下(以“输出目录-ldtmp”命名)。

在MapReduce作业的提交阶段,将文件从临时目录迁移到输出目录中。

数据导出到关系型数据库

在MapReduce作业的Map阶段,从HDFS或者HBase中抽取数据,然后将数据通过JDBC接口插入到临时表(Staging Table)中。

在MapReduce作业的提交阶段,将数据从临时表迁移到正式表中。

数据导出到文件系统

在MapReduce作业的Map阶段,从HDFS或者HBase中抽取数据,然后将数据写入到文件服务器临时目录中。

在MapReduce作业的提交阶段,将文件从临时目录迁移到正式目录

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

26

华为FusionInsight HD

技术白皮书 2 重点组件介绍

2.12 实时数据采集Flume

Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。其中Flume-NG是Flume

的一个分支,其目的是要明显简单,体积更小,更容易部署。其最基本的架构如下图所示:

Flume-NG由一个个Agent来组成,而每个Agent由Source、Channel、Sink三个模块组成,其中Source负责接收数据,Channel负责数据的传输,Sink则负责数据向下一端的发送。

Source:完成对日志数据的收集,分成transtion 和 event 打入到channel之中。

Channel: 主要提供一个队列的功能,对source提供中的数据进行简单的缓存。

Sink: 取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器

Flume的可靠性基于Agent间事务的交换,下一个Agent down掉,Channel可以持久化数据, Agent恢复后再传输。可用性则基于内建的Load balancing和Failover机制。Channel及Agent都可以配多个实体,实体之间可以使用负载分担等策略

每个agent为一个JVM进程,同一台服务器可以有多个agent。收集节点(agent1,2,3)负责处理日志,汇聚节点(agent4)负责写入HDFS,每个收集节点的agent可以选择多个汇聚节点,这样可以实现负载均衡。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

27

华为FusionInsight HD

技术白皮书 2 重点组件介绍

2.13 流式事件处理(Storm)

2.13.1 Storm

Apache Storm是一个分布式、可靠、容错的实时流式数据处理的系统。在Storm中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology)。这个拓扑将会被提交给集群,由集群中的主控节点(master node)分发代码,将任务分配给工作节点(worker node)执行。一个拓扑中包括spout和bolt两种角色,其中spout发送消息,负责将数据流以tuple元组的形式发送出去;而bolt则负责转换这些数据流,在bolt中可以完成计算、过滤等操作,bolt自身也可以随机将数据发送给其他bolt。由spout发射出的tuple是不可变数组,对应着固定的键值对。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

28

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-13 Storm系统架构

业务处理逻辑被封装进Storm中的topology中。一个topology是由一组Spout组件(数据源)和Bolt组件(逻辑处理)通过Stream Groupings进行连接的有向无环图(DAG)。Topology里面的每一个Component(Spout/Bolt)节点都是并行运行的。 在topology里面, 可以指定每个节点的并行度, storm则会在集群里面分配相应的Task来同时计算,以增强系统的处理能力。

图2-14 Topology

2.13.2 StreamCQL

StreamCQL (Steam Continuous Query Language),流式查询语言,是一种用于实时数据流上的查询语言,它是一种类SQL语言,相对于SQL,StreamCQL中增加了(时序)窗口的概念,将待处理的数据保存在内存中,进行快速的内存计算,StreamCQL的输文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

29

华为FusionInsight HD

技术白皮书 2 重点组件介绍

出结果为数据流在某一时刻的计算结果。使用StreamCQL,可以快速进行业务开发,并方便地将业务提交到Storm平台开启实时数据的接收、处理及结果输出;并可以在合适的时候中止业务。

StreamCQL具有如下几个特点:

使用简单:StreamCQL语法和标准SQL语法类似,只要具备SQL基础,都可以快速进行开发。

功能丰富:StreamCQL除了包含标准SQL的各类基本表达式等功能之外,还特别针对流处理场景增加了窗口,窗口前过滤,窗口后过滤,并发度设置等功能,满足多种实时业务处理场景。

易于拓展:StreamCQL提供了拓展接口,以支撑日益复杂的业务场景,用户可以自定义输入、输出、序列化、反序列化等并结合已有功能来满足灵活的业务场景。

易于调试:StreamCQL提供了详细的异常码说明,降低了用户对于各种错误的处理难度,提升了易用性

图2-15 Storm原生API与StreamCQL比较

2.14 流处理引擎Flink

Flink是一个批处理和流处理结合的统一计算框架,其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。它的最大亮点是流处理,是业界最顶级的开源流处理引擎。

Flink最适合的应用场景是低时延的数据处理(Data Processing)场景:高并发pipeline处理数据,时延毫秒级,且兼具可靠性。

Flink技术栈如图1所示。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

30

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-16 Flink技术栈

Flink整个系统包含三个部分:

Client

Flink Client主要给用户提供向Flink系统提交用户任务(流式作业)的能力。

TaskManager

Flink系统的业务执行节点,执行具体的用户任务。TaskManager可以有多个,各个TaskManager都平等。

JobManager

Flink系统的管理节点,管理所有的TaskManager,并决策用户任务在哪些Taskmanager执行。JobManager在HA模式下可以有多个,但只有一个主JobManager。

Flink系统提供的关键能力:

低时延

提供ms级时延的处理能力。

Exactly Once

提供异步快照机制,保证所有数据真正只处理一次。

HA

JobManager支持主备模式,保证无单点故障。

水平扩展能力

TaskManager支持手动水平扩展。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

31

华为FusionInsight HD

技术白皮书 2 重点组件介绍

2.15 分布式高速缓存Redis

Redis(REmote DIctionary Service),是C语言编写的高性能Key-Value内存数据库,支持多种数据类型,包括 string(字符串)、 list(链表)、 set(集合)、 zset(有序集合)、hash等。Redis集群模式具有更多优点,适合生产环境使用,但Redis集群管理复杂,容易出错,社区版本部分功能不完善。FusionInsight HD提供图形化的Redis集群管理功能。

向导式创建Redis集群系统

FusionInsight HD支持一主一从模式的Redis集群,系统自动计算节点上可安装的Redis实例个数并分配主从关系。

集群扩容、减容

当集群需要提供大规模的处理能力时,可以一键式扩容一对或多对主从实例。在此过程中,系统会自动完成数据迁移和数据平衡,用户无需其他操作。

Balance

出现扩容异常、部分实例掉线等异常场景时,Redis集群中的数据可能会分布不均匀,此时可以通过管理界面上提供的Balance功能,让系统自动对集群数据进行平衡,保证集群的健康运行。

性能监控与告警

系统提供Redis集群的性能监控功能,可以通过直观的曲线图方式,了解当前Redis集群、实例的TPS吞吐量情况。

集群可靠性保证

社区自带的集群创建工具还不完善,只是按顺序在节点上分配主从实例。有可能将同一组主从实例排在同一节点上,如此不能处理节点故障场景。

FusionInsight HD在创建Redis集群的时候,能够自动将同一组主从实例安排在不同节点上,同时在进行扩容和减容的操作时,仍然会保证该原则。这样可以保证集群内任意一节点发生故障,都能够通过主从实例倒换来保证业务不中断。

优化集群性能

内置了OS层、应用层的性能调优;比社区版性能更好,此调优开箱即用,不需额外开发、操作。

2.16 分布式消息队列Kafka

Kafka是一个分布式的、分区的、多副本的消息发布-订阅系统,它提供了类似于JMS的特性,但在设计上完全不同,它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性,适用于离线和在线的消息消费,如常规的消息收集、网站活性跟踪、聚合统计系统运营数据(监控数据)、日志收集等大量数据的互联网服务的数据收集场景。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

32

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-17 Kafka架构

Broker

Topic/主题

说明

在Kafka集群上一个服务器称为一个Broker。

一个Topic就是一个类别或者一个可订阅的条目名称,也即一类消息。一个主题可以有多个分区,这些分区可以作为并行的一个单元。

是一个有序的、不可变的消息序列,这个序列可以被连续地追加—个提交日志。在分区内的每条消息都有一个有序的ID号,这个ID号被称为偏移(Offset),这个偏移量可以唯一确定每条消息在分区内的位置。

向Kafka的主题发布消息。

向Topic订阅,并且接收发布到这些Topic的消息。

Partition/分区

Producer/生产者

Consumer/消费者

2.17 作业编排与调度Oozie

Oozie是一个基于工作流引擎的开源框架,它能够提供对Hadoop作业的任务调度与协调。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

33

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-18 Oozie架构

名称称

Console

Client

SDK

说明

提供对Oozie流程的查看和监控功能。

通过接口控制workflow流程:可以执行提交流程,启动流程,运行流程,终止流程,恢复流程等操作。

软件开发工具包SDK(SoftwareDevelopmentKit)是被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。

pg数据库。

可以用内置的Tomcat容器,也可以用外部的,记录的信息比如日志等放在数据库中。

Tomcat服务器是免费的开放源代码的Web应用服务器。

底层执行Oozie编排流程的各个组件,包括MapReduce、Hive等。

Database

Oozie server

Tomcat

Hadoop组件

Oozie是一个工作流引擎服务器,用于运行HD MapReduce任务工作流。同时Oozie还是一个Java Web程序,运行在Tomcat容器中。

Oozie工作流通过HPDL(一种通过XML自定义处理的语言,类似JBOSS JBPM的JPDL)来构造。包含Control Node(可控制的工作流节点)、Action Node。

Control Node用于控制工作流的编排,如start/开始、end/关闭、error/异常、decision/选择、fork/并行、join/合并等。

Oozie工作流中拥有多个Action Node,如MapReuce、Java等。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

34

华为FusionInsight HD

技术白皮书 2 重点组件介绍

所有的Action Node以有向无环图(DAG Direct Acyclic Graph)的模式部署运行。所以在Action Node的运行步骤上是有方向的,当上一个Action Node运行完成后才能运行下一个Action Node。一旦当前Action Node完成,远程服务器将回调Oozie的接口,这时Oozie又会以同样的方式执行工作流中的下一个Action Node,直到工作流中所有Action Node都完成(完成包括失败)。

Oozie工作流提供各种类型的Action Node用于支持不同的业务需要,如MapReduce,HDFS,SSH,Java以及Oozie子流程。

2.18 数据继承入口Hue

Hue是一组web应用,用于和FusionInsight平台进行交互,能够帮助用户浏览HDFS,进行Hive、SparkSQL查询,启动MapReduce任务以及Oozie工作流等。

Hue运行于浏览器,在FusionInsight中,HUE被集成在FusionInsight Manager中。

下图是Hue的整体架构,描述了Hue的工作机制。Hue Server是一个集成在FusionInsight Manager上的web应用的容器。它承载了与所有FusionInsight 组件交互的应用。

图2-19 集成开发工具Hue

Hue主要包括了如下的组件及功能:

1. 文件浏览器——该应用能够允许用户直接通过界面浏览以及操作HDFS的不同目录,主要包含如下功能:

创建文件及目录,上传下载文件,重命名,移动,删除文件及目录。修改文件以及目录的属主,权限。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

35

华为FusionInsight HD

技术白皮书

2 重点组件介绍

搜索文件,目录,文件所有人,所属用户组。

查看编辑文件。

2. 查询编辑器——用户能够通过查询查询编辑器,编写简单的SQL,查询存储在Hadoop之上的数据。例如HDFS,HBase,Hive,Impala。 用户可以方便的,创建,管理,执行SQL,并且能够以Excel的形式下载执行的结果。主要功能如下:

SQL编辑,执行,SQL模板保存,模板复制,模板编辑。SQL解释,查询,历史记录。

数据库展示,数据表展示。

支持多种Hadoop存储。

任务浏览器

3. 工作流控制——主要包含如下功能:

a.

提供任务列表,根据具体任务找到对应子任务的相关信息,状态,开始,结束时间

查看任务日志

能够帮助用户方便的创建提交任务。

可以给具体的任务输入变量,参数

工作流是一组任务的结合,控制任务执行顺序。工作流能够自动控制所属节点任务的执行,停止,克隆等等操作。

协调器应用允许用户定义和执行周期性以及相互依赖的工作流任务,并配置工作流能够执行的条件。

用户管理——类似于常规的Web应用,Hue也提供了用户管理的功能,能够添加删除管理用户信息。

b. 任务定制器

c. Oozie编辑器——Oozie编辑器允许用户定义Oozie工作流以及协调器。

2.19 分布式图数据库GraphBase

简介

互联网时代,随着网络技术的发展,企业积累的数据越来越多。伴随着数据集的不断增加,传统的关系型数据库查询性能会随之变差,特别是针对一些特殊的业务场景,所以迫切的需要一种新的解决方案去应对这种危机。为了解决复杂的关系问题,图数据库应运而生。

图数据库,是指以“图”这种数据结构存储和查询数据,图包含节点和关系,节点和关系可以存在标签和属性,且边可以有方向,FusionInsight GraphBase是基于FusionInsight HD的分布式图数据库,基于HBase的分布式存储机制,能够支持百亿节点,千亿关系的海量数据,提供基于Spark的数据导入和基于Elasticsearch的索引机制,在推荐、关系分析和金融反欺诈等领域有广泛应用。系统具有如下特点:

全分布式,Hadoop生态无缝集成。

百亿点千亿边,妙级查询。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

36

华为FusionInsight HD

技术白皮书

2 重点组件介绍

提供易用的Rest接口,方便数据的查询分析。

提供强大的Gremlin图遍历功能,可实现复杂的业务逻辑。

支持离线批量导入和实时流导入,对导入性能进行深度优化。

架构

GraphBase架构如图2-20所示。

图2-20 GraphBase架构

接入层

Gremlin API:引入开源的Apache TinkerPop Gremlin组件,提供开源标准图交互式查询语言接口;

REST API:提供包含图查询、图修改、图管理和华为增强的在线分析图算法在内的全套接口;

通过Load Balancer提供多实例GraphServer的负荷分担。

提供图数据库核心引擎,包括数据管理、元数据管理等;

后端存储和索引接口适配层;

分布式KV存储:提供海量图数据存储能力;

搜索引擎提供二级索引,全文检索、模糊检索等能力。

计算层

存储层

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

37

华为FusionInsight HD

技术白皮书 2 重点组件介绍

GraphBase典型应用场景:

金融反欺诈

知识图谱

关系分析

2.20 多租户

定义

多租户是FusionInsight HD大数据集群中的多个资源集合(每个资源集合是一个租户),具有分配和调度资源的能力。资源包括计算资源和存储资源。

背景

现代企业的数据集群在向集中化和云化方向发展,企业级大数据集群需要满足:

不同用户在集群上运行不同类型的应用和作业(分析、查询、流处理等),同时存放不同类型和格式的数据。

某些类型的用户(例如银行、政府单位等)对数据安全非常关注,很难容忍将自己的数据与其他用户放在一起。

这给大数据集群带来了以下挑战:

合理地分配和调度资源,以支持多种应用和作业在集群上平稳运行。

对不同的用户进行严格的访问控制,以保证数据和业务的安全。

多租户将大数据集群的资源隔离成一个个资源集合,彼此互不干扰,用户通过“租用”需要的资源集合,来运行应用和作业,并存放数据。在大数据集群上可以存在多个资源集合来支持多个用户的不同需求。

对此,华为FusionInsight HD企业级大数据集群提供了完整的企业级大数据多租户解决方案。

优势

合理配置和隔离资源

租户之间的资源是隔离的,一个租户对资源的使用不影响其它租户,保证了每个租户根据业务需求去配置相关的资源,可提高资源利用效率。

测量和统计资源消费

系统资源以租户为单位进行计划和分配,租户是系统资源的申请者和消费者,其资源消费能够被测量和统计。

保证数据安全和访问安全

多租户场景下,分开存放不同租户的数据,以保证数据安全;控制用户对租户资源的访问权限,以保证访问安全。

调度器

多租户根据调度器类型分为开源的Capacity调度器和华为公司自主研发的增强型Superior调度器。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

38

华为FusionInsight HD

技术白皮书 2 重点组件介绍

Capacity调度器为开源的容量调节器。

Superior调度器为增强型,Superior取名源自苏必利尔湖,意指由该调度器管理的数据足够大。

为满足企业需求,克服Yarn社区在调度上遇到的挑战与困难,华为公司自主研发的Superior调度器,不仅集合了当前Capacity调度器与Fair调度器的优点,还做了以下增强:

增强资源共享策略

Superior调度器支持队列层级,在同集群集成开源调度器的特性,并基于可配置策略进一步共享资源。针对实例,管理员可通过Superior调度器为队列同时配置绝对值或百分比的资源策略计划。Superior调度器的资源共享策略将YARN的标签调度增强为资源池特性,YARN集群中的节点可根据容量或业务类型不同,进行分组以使队列更有效地利用资源。

基于租户的资源预留策略

部分租户可能在某些时间中运行关键任务,租户所需的资源应保证可用。Superior调度器构建了支持资源预留策略的机制,在这些租户队列运行的任务可立即获取到预留资源,以保证计划的关键任务可正常执行。

租户和资源池的用户公平共享

Superior调度器提供了队列内用户间共享资源的配置能力。每个租户中可能存在不同权重的用户,高权重用户可能需要更多共享资源。

大集群环境下的调度性能优势

Superior调度器接收到各个NodeManager上报的心跳信息,并将资源信息保存在内存中,使得调度器能够全局掌控集群的资源使用情况。Superior调度器采用了push调度模型,令调度更加精确、高效,大大提高了大集群下的资源使用率。另外,Superior调度器在NodeManager心跳间隔较大的情况下,调度性能依然优异,不牺牲调度性能,也能避免大集群环境下的“心跳风暴”。

优先策略

当某个服务在获取所有可用资源后还无法满足最小资源的要求,则会发生优先抢占。抢占功能默认关闭。

2.21 安全增强

华为FusionInsight HD作为一个海量数据管理和分析的平台,具备高安全性。主要从以下几个方面保障用户的数据和业务运行安全。

网络隔离

整个系统网络划分为2个平面,即业务平面和管理平面。两个平面采用物理隔离的方式进行部署,保证业务、管理各自网络的安全性。

业务平面通过业务网络接入,主要为用户和上层用户提供业务通道,对外提供数据存取、任务提交及计算的能力。

管理平面通过运维网络接入,提供系统管理和维护功能,主要用于集群的管理,对外提供集群监控、配置、审计、用户管理等服务。

主机安全

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

39

华为FusionInsight HD

技术白皮书 2 重点组件介绍

用户可以根据自己业务的需要部署第三方的防病毒软件。针对操作系统和端口部分,华为提供如下安全措施。

操作系统内核安全加固

更新操作系统最新补丁

操作系统权限控制

操作系统端口管理

操作系统协议与端口防攻击

应用安全

通过如下措施保证大数据业务正常运行:

身份鉴别和认证

Web应用安全

访问控制

审计安全

密码安全

数据安全

针对海量用户数据,提供如下措施保障客户数据的机密性、完整性和可用性。

容灾:FusionInsight HD通过配置主、备集群关系和需要同步的数据表,提供异地实时容灾功能。当主集群数据遭到破坏(例如,洪水、地震等),备集群可以立即接管业务。

备份:FusionInsight HD支持针对OMS、Kafka、DBService、NameNode、LDAP的元数据备份和对HDFS、HBase、Hive的业务数据备份。

数据完整性

通过数据校验,保证数据在存储、传输过程中的数据完整性。

用户数据保存在HDFS上,HDFS默认采用CRC32C校验数据的正确性。

HDFS的DataNode节点负责存储校验数据,如果发现客户端传递过来的数据有异常(不完整)就上报异常给客户端,让客户端重新写入数据。

客户端从DataNode读数据的时候同会检查数据是否完整,如果发现数据不完整,尝试从其他的DataNode节点上读取数据。

数据保密性

FusionInsight HD分布式文件系统在Apache Hadoop版本基础上,提供对文件内容的加密存储功能,避免敏感数据明文存储,提升数据安全性。业务应用只需对指定的敏感数据进行加密,加解密过程业务完全不感知。在文件系统数据加密基础上,Hive实现表级加密,HBase实现列族级加密,在创建表时指定采用的加密算法,即可实现对敏感数据的加密存储。

从数据的存储加密、访问控制来保障用户数据的保密性。

HBase支持将业务数据存储到HDFS前进行压缩处理,且用户可以配置AES和SM4算法加密存储。

各组件支持本地数据目录访问权限设置,无权限用户禁止访问数据。

所有集群内部用户信息提供密文存储。

同时,FusionInsight Management引入Hadoop KMS服务并进行增强,通过对接第三方KMS,可实现数据的透明加密,保障用户数据安全。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

40

华为FusionInsight HD

技术白皮书

2 重点组件介绍

HDFS支持透明加密,Hive、HBase等在HDFS保存数据的上层组件也将通过HDFS加密保护,加密密钥通过HadoopKMS从第三方KMS获取。

对于Kafka、Redis、Storm等业务数据直接持久化存储到本地磁盘的组件,通过基于LUKS的分区加密机制保护用户数据安全。

基于用户和角色的认证统一体系,遵从帐户/角色RBAC(Role-Based Access

Control)模型,实现通过角色进行权限管理,对用户进行批量授权管理。

支持安全协议Kerberos,FusionInsight HD使用LDAP作为帐户管理系统,并通过Kerberos对帐户信息进行安全认证。

提供单点登录,统一了FusionInsight HD系统用户和组件用户的管理及认证。

对登录FusionInsight Manager的用户进行审计。

提供统一证书管理功能,并基于界面进行整个集群的证书配置和更换,解决了用户针对单个组件需要依次更换证书的繁琐操作。

安全认证

2.22 可靠性增强

FusionInsight HD 在基于Apache Hadoop开源软件的基础上,在主要业务部件的可靠性、性能调优等方面进行了优化和提升。

系统可靠性

所有组件的管理节点均实现HA

Hadoop开源版本的数据、计算节点已经是按照分布式系统进行设计的,单节点故障不影响系统整体运行;而以集中模式运作的管理节点可能出现的单点故障,就成为整个系统可靠性的短板。

华为FusionInsight HD 产品对所有业务组件的管理节点都提供了类似的双机的机制,包括OMS Server、HDFS NameNode、Hive Server、HBase HMaster、YARN

Resources Manager、Kerberos Server、Ldap Server等,全部采用主备或负荷分担配置,有效避免了单点故障场景对系统可靠性的影响。

异常场景下的可靠性保证

通过可靠性分析方法,梳理软件、硬件异常场景下的处理措施,提升系统的可靠性。

保障意外掉电时的数据可靠性,不论是单节点意外掉电,还是整个集群意外断电,恢复供电后系统能够正常恢复业务,除非硬盘介质损坏,否则关键数据不会丢失。

硬盘亚健康检测和故障处理,对业务不造成实际影响。

自动处理文件系统的故障,自动恢复受影响的业务。

自动处理进程和节点的故障,自动恢复受影响的业务。

自动处理网络故障,自动恢复受影响的业务。

HBase集群异地容灾

HBase集群通过实时异地容灾来提高HBase集群系统的可靠性,是业界第一个实现1000公里以上的大数据集群HBase容灾系统。主备容灾系统之间相互进行健康状态监视和功能切换,当一处系统因意外(如火灾、洪水、地震、人为蓄意破坏等)文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

41

华为FusionInsight HD

技术白皮书 2 重点组件介绍

停止工作时,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。

HBase集群容灾对外还提供了基础的运维工具,包含灾备关系维护、重建、数据校验、数据同步进展查看等功能。

数据备份与恢复

为应对数据丢失或损坏对用户业务造成不利影响,在异常情况下快速恢复系统,FusionInsight HD根据用户业务的需要提供全量备份、增量备份和恢复功能。

自动备份

FusionInsight HD对集群管理系统Manager上的数据提供自动备份功能,根据制定的备份策略可自动备份集群上的数据,包括HBase、OMSServer、LDAPServer、DBService的数据以及ESN编码。

手动备份

在系统进行扩容、升级、打补丁等重大操作前,需要通过手动备份集群管理系统的数据,以便在系统故障时,恢复集群管理系统功能。

为进一步提供系统的可靠性,在将Manager、HBase上的数据备份到第三方服务器时,也需要通过手动备份。

节点可靠性

操作系统健康状态监控

FusionInsight HD针对操作系统提供了如下监控措施:

支持开启硬件看门狗功能。

支持对操作系统内核参数进行微调,在操作系统出现致命异常,如内存耗尽、非法地址访问、内核死锁、调度器失效时,重启操作系统,恢复业务。

周期采集操作系统运行状况数据,包括处理器状态、内存状态、硬盘状态、网络状态等。

进程健康状态监控

FusionInsight HD在各节点上部署了代理进程NodeAgent,负责监控业务实例的状态以及业务实例进程的健康指标信息

硬盘故障的自动处理

FusionInsight HD对开源版本进行了增强,可以监控各节点上的硬盘状态,以及文件系统状态。如果出现异常,立即将相关分区移出存储池;如果硬盘恢复正常(通常是因为用户更换了新硬盘),也会采取措施,将新硬盘重新加入业务运作。这样,极大简化了维护人员的工作,更换故障硬盘可以在线完成;同时,用户可以设置热备盘,从而极大缩减了故障硬盘的修复时间,有利于提高系统的可靠性。

节点RAID组的配置

FusionInsight HD建议按照实际业务需要,合理规划节点的硬盘资源,以提高系统对硬盘故障的抵御能力。

各节点的操作系统,建议安装在两块硬盘做成的RAID1上,以保障系统盘的稳定。

如果条件允许,管理节点关键进程使用的硬盘(如HDFS NameNode、数据库、ZooKeeper等)尽量做成RAID1,以保证元数据的可靠性。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

42

华为FusionInsight HD

技术白皮书

2 重点组件介绍

数据盘(HDFS DataNode、Kafka 、Storm Supervisor、Redis、SolrServerAdmin、SolrServer N)做成NonRaid,如有必须配置Raid的场景(不做Raid系统无法识别磁盘),可做成单盘RAID0(即每个Raid组只有1块硬盘)。

数据可靠性

FusionInsight HD通过对节点硬件(特别是硬盘)、操作系统、进程的监控,及时发现相关部件的异常状况,缩短了对应部件的故障检测时间和修复时间,从而提高了系统整体的数据持久度。

2.23 滚动重启、滚动升级与滚动补丁

滚动重启

滚动重启指当集群中服务或角色实例进行软件更新或配置修改后,在尽可能不中断业务的前提下对相关对象进行的重启操作。

与传统的普通重启(同时重启所有实例)会直接中断业务相比,滚动重启通过针对实例运行特点采用以下不同的滚动重启策略,可保证业务不受中断。但是滚动重启耗时比较长,且对应服务的吞吐量、性能等会受到影响。

各实例滚动重启前后的接口需要保证兼容(包括对内和对外的接口),若跨大版本更新时接口不兼容,则不能使用滚动重启,只能使用普通重启。

主备实例滚动重启策略

对于支持HA的角色(例如HDFS的NameNode),首先滚动重启备实例,然后主动触发一次主备倒换,倒换完成后再重启原来的主实例。

Leader实例滚动重启策略

角色内不同实例区分Leader节点(唯一)和Follower节点(多个),重启某个实例时不会造成服务业务中断。此时将采用逐一重启实例的方式进行重启,其中Leader实例最后重启。

分批并发滚动重启策略

在同一个角色内部,每一个批次并发滚动重启m(m>=1)个实例,以保证对应服务的业务不会中断。该策略适用于实例之间通常不存在功能上的差异的角色。

例如HDFS的Zkfc,一次重启1个Zkfc,业务不会中断,所以可使用分批并发策略,并发值为1。

动态策略

RegionServer滚动重启时,根据RegionServer部署的实例数来设置每个批次的并发数。

机架并发滚动重启策略

角色支持机架感知功能(例如HDFS的DataNode),且角色下的实例归属于2个或2个以上的机架,重启某个机架时不会造成服务业务中断。角色满足上述条件时将依次并发重启每个机架上的所有对应实例。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

43

华为FusionInsight HD

技术白皮书 2 重点组件介绍

如果每个机架内实例数较多,则按机架策略中配置的最大并发实例数再划分子批次。

滚动升级

滚动升级是一种在线升级方式,在升级过程中,将尽可能的减小服务的中断时间。

支持滚动升级的服务,在滚动升级过程中可以提供全部或部分业务;而不支持滚动升级的服务,在升级过程中服务会中断。相比之前的离线升级方式,滚动升级可以在保证部分服务可用的前提下完成产品版本的升级。

各服务的滚动升级操作及注意事项请参见对应版本的升级指导书。

滚动补丁

滚动补丁是指在不中断或尽可能短的中断集群各个服务业务的前提下完成对集群中单个或多个服务的补丁安装操作。

集群中的服务根据对滚动补丁的支持程度,分为三种:

支持滚动补丁的服务

不支持滚动补丁的服务

部分角色支持滚动补丁的服务

对支持滚动补丁的服务,在安装补丁过程中,服务的全部业务或部分业务(因服务而异,不同服务存在差别)不中断;对不支持滚动补丁的服务,安装补丁过程中服务的业务会中断;对部分角色支持滚动补丁的服务,在安装补丁过程中,服务的部分业务不中断。

滚动补丁的安装操作及注意事项请参见对应版本的补丁安装指导书。

滚动重启对系统的影响

滚动升级和滚动补丁均依赖于滚动重启,滚动重启对系统的影响对于滚动升级和滚动补丁同样适用。

各服务滚动重启时的影响如下表所示,表格中的服务支持滚动重启(KrbServer/LdapServer/DBService为集群内部服务,不在表格体现)。

表2-8 滚动重启服务和实例期间对系统影响清单

服务名称

ZooKeeper

HDFS

不中断业务

滚动重启过程中,ZooKeeper的读写业务正常

由于NameNode节点会主备倒换,导致系统在短暂时间内出现无主现象(主备倒换过渡期),可能会受影响的业务

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

44

华为FusionInsight HD

技术白皮书 2 重点组件介绍

服务名称

不中断业务

出现HDFS服务不可用告警信息,运行的读写任务会抛异常,但是不会中断业务。

受影响的业务

Yarn

滚动升级过程中,由于ResourceManager节点会切主,运行任务会抛异常,但是不会中断业务

滚动重启过程中,HBase的读写业务正常

HBase

HMaster滚动重启过程中,除实时读写(不包括BulkLoad)以外的业务都会受影响。

创建表(create)

创建namespace(create_namespace)

禁用表(disable, diable_all)

重建表(truncate, truncate_preserve)

移动region(move)

下线region(unassign,close_region)

合并region(merge_region)

分裂region(split)

开启balance(balance_switch)

容灾操作(add_peer,remove_peer,enable_table_replication,disable_peer,show_peer_tableCFs,set_peer_tableCFs,enable_peer,disable_table_replication,set_clusterState_active,set_clusterState_standby)

恢复操作(restore)

集群状态查询(status)

在HBase进行滚动重启过程中,不能在Spark中创建或删除Spark on HBase表。

在HBase执行滚动重启过程中,会进行HMaster的主备倒换,在HMaster主备倒换期间,Spark on HBase功能不可用。

如果用户使用了Kafka高级api,则在滚动重启过程中,不能保证Spark读写Kafka不中断,以及数据不丢失。

Spark/Spark2x

除列出的几项限制外,其他业务均不受影响

Kafka

滚动重启过程中,Kafka的读写业务正常

禁止进行增删改topic、partion信息操作

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

45

2024年2月7日发(作者:西门振锐)

华为FusionInsight HD

6.5.1

技术白皮书

文档版本

发布日期

01

2019-06-30

华为技术有限公司

版权所有 © 华为技术有限公司2020。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

华为技术有限公司

地址:

网址:

深圳市龙岗区坂田华为总部办公楼 邮编:518129

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

i

华为FusionInsight HD

技术白皮书 目 录

目 录

1 简介 .................................................................................................................................................. 1

1.1 FusionInsight概述 ....................................................................................................................................................... 1

1.2 FusionInsight HD组件介绍 ......................................................................................................................................... 2

2 重点组件介绍.................................................................................................................................. 4

2.1 集群管理Manager ...................................................................................................................................................... 5

2.2 分布式文件系统HDFS .............................................................................................................................................. 8

2.3 统一资源管理和调度框架YARN .............................................................................................................................. 8

2.3.1 Yarn ............................................................................................................................................................................ 8

2.3.2 Superior Scheduler ..................................................................................................................................................... 9

2.4 分布式批处理引擎MapReduce ............................................................................................................................... 14

2.5 分布式数据库HBase ................................................................................................................................................ 14

2.6 数据仓库组件Hive ................................................................................................................................................... 15

2.7 分布式内存计算引擎Spark ..................................................................................................................................... 15

2.7.1 Spark ........................................................................................................................................................................ 15

2.7.2 CarbonData .............................................................................................................................................................. 17

2.8 交互式SQL引擎Elk ............................................................................................................................................... 18

2.9 全文检索组件Solr .................................................................................................................................................... 21

2.10 全文检索组件Elasticsearch ................................................................................................................................... 23

2.11 批量数据集成Loader ............................................................................................................................................. 24

2.12 实时数据采集Flume .............................................................................................................................................. 27

2.13 流式事件处理(Storm) ........................................................................................................................................ 28

2.13. 28

2.13.2 StreamCQL ............................................................................................................................................................ 29

2.14 流处理引擎Flink .................................................................................................................................................... 30

2.15 分布式高速缓存Redis ........................................................................................................................................... 32

2.16 分布式消息队列Kafka ........................................................................................................................................... 32

2.17 作业编排与调度Oozie ........................................................................................................................................... 33

2.18 数据继承入口Hue .................................................................................................................................................. 35

2.19 分布式图数据库GraphBase ................................................................................................................................... 36

2.20 多租户 ..................................................................................................................................................................... 38

2.21 安全增强 ................................................................................................................................................................. 39

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

ii

华为FusionInsight HD

技术白皮书 目 录

2.22 可靠性增强 ............................................................................................................................................................. 41

2.23 滚动重启、滚动升级与滚动补丁 .......................................................................................................................... 43

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

iii

华为FusionInsight HD

技术白皮书 1 简介

1

1.1 FusionInsight概述

1.2 FusionInsight HD组件介绍

简介

1.1 FusionInsight概述

FusionInsight是华为企业级大数据存储、查询、分析的统一平台,能够帮助企业快速构建海量数据信息处理系统,通过对巨量信息数据实时与非实时的分析挖掘,发现全新价值点和企业商机。

FusionInsight解决方案由2个子产品FusionInsight HD、GaussDB 200和1个操作运维系统FusionInsight Manager构成。

FusionInsight HD:企业级的大数据处理环境,是一个分布式数据处理系统,对外提供大容量的数据存储、分析查询和实时流式数据处理分析能力。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

1

华为FusionInsight HD

技术白皮书

1 简介

GaussDB 200:企业级的大规模并行处理关系型数据库。GaussDB 200采用MPP(Massive Parallel Processing)架构,支持行存储和列存储,提供PB(Petabyte,2的50次方字节)级别数据量的处理能力。

FusionInsight Manager:企业级大数据的操作运维系统,提供高可靠、安全、容错、易用的集群管理能力,支持大规模集群的安装部署、监控、告警、用户管理、权限管理、审计、服务管理、健康检查、问题定位、升级和补丁等功能。

1.2 FusionInsight HD组件介绍

FusionInsight系统的整体逻辑架构图如下所示:

FusionInsight HD 需要对开源组件进行封装和增强,对外提供稳定的大容量的数据存储、查询和分析能力。各自组件提供功能如下:

Manager:作为运维系统,为FusionInsight HD提供高可靠、安全、容错、易用的集群管理能力,支持大规模集群的安装/升级/补丁、配置管理、监控管理、告警管理、用户管理、租户管理等。

HDFS:Hadoop分布式文件系统(Hadoop Distributed File System),提供高吞吐量的数据访问,适合大规模数据集方面的应用。

HBase:提供海量数据存储功能,是一种构建在HDFS之上的分布式、面向列的存储系统。

Oozie:提供了对开源Hadoop组件的任务编排、执行的功能。以Java Web应用程序的形式运行在Java servlet容器(如:Tomcat)中,并使用数据库来存储 工作流定义、当前运行的工作流实例(含实例的状态和变量)。

ZooKeeper:提供分布式、高可用性的协调服务能力。帮助系统避免单点故障,从而建立可靠的应用程序。

Redis:提供基于内存的高性能分布式K-V缓存系统。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

2

华为FusionInsight HD

技术白皮书

1 简介

Yarn:Hadoop 2.0中的资源管理系统,它是一个通用的资源模块,可以为各类应用程序进行资源管理和调度。

Mapreduce:提供快速并行处理大量数据的能力,是一种分布式数据处理模式和执行环境。

Spark:基于内存进行计算的分布式计算框架。

Hive:建立在Hadoop基础上的开源的数据仓库,提供类似SQL的Hive QL语言操作结构化数据存储服务和基本的数据分析服务。

Loader:基于Apache Sqoop 实现FusionInsight HD与关系型数据库、ftp/sftp文件服务器之间数据批量导入/导出工具;同时提供Java API/shell任务调度接口,供第三方调度平台调用。

Hue:提供了开源Hadoop组件的WebUI,可以通过浏览器操作HDFS的目录和文件,调用Oozie来创建、监控和编排工作流,可操作Loader组件,查看ZooKeeper集群情况。

Flume:一个分布式、可靠和高可用的海量日志聚合系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写入各种数据接受方(可定制)的能力。

Solr:一个高性能,基于Lucene的全文检索服务器。Solr对Lucene进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文检索引擎。

Elasticsearch:一个兼有搜索引擎和NoSQL数据库功能的开源系统,基于JAVA/Lucene构建,开源、分布式、支持RESTful请求。Elasticsearch服务支持结构化、非结构化文本的多条件检索、统计和报表生成,拥有完善的监控体系,提供一系列系统,集群以及查询性能等关键指标,让用户更专注于业务逻辑的实现。多用于日志搜索和分析、时空检索、时序检索和报表、智能搜索等场景。

Kafka:一个分布式的、分区的、多副本的实时消息发布-订阅系统。提供可扩展、高吞吐、低延迟、高可靠的消息分发服务。

Storm:一个分布式、可靠、容错的实时流式数据处理的系统,并提供类SQL(StreamCQL)的查询语言。

Flink:分布式的、高可用的、能保证Exactly Once语义的针对流数据和批数据的处理引擎。

SparkSQL:基于Spark引擎的高性能SQL引擎,可与Hive实现元数据共享。

Elk:一个分布式交互查询分析数据仓库引擎,支持标准的SQL2003规范,支持标准SQL对数据的并行插入、删除、修改、查询等功能。

MLlib:提供基于Spark的数据挖掘算法库。

GraphX:提供基于Spark的图处理算法库。

GraphBase : 提供关系数据存储、查询、分析能力。

Pollux: 一个兼容相同数据中心和跨数据中心多数据源协助查询的系统。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

3

华为FusionInsight HD

技术白皮书 2 重点组件介绍

2

2.1 集群管理Manager

2.2 分布式文件系统HDFS

2.3 统一资源管理和调度框架YARN

2.4 分布式批处理引擎MapReduce

2.5 分布式数据库HBase

2.6 数据仓库组件Hive

2.7 分布式内存计算引擎Spark

2.8 交互式SQL引擎Elk

2.9 全文检索组件Solr

2.10 全文检索组件Elasticsearch

2.11 批量数据集成Loader

2.12 实时数据采集Flume

2.13 流式事件处理(Storm)

2.14 流处理引擎Flink

2.15 分布式高速缓存Redis

2.16 分布式消息队列Kafka

2.17 作业编排与调度Oozie

2.18 数据继承入口Hue

2.19 分布式图数据库GraphBase

2.20 多租户

2.21 安全增强

2.22 可靠性增强

重点组件介绍

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

4

华为FusionInsight HD

技术白皮书 2 重点组件介绍

2.23 滚动重启、滚动升级与滚动补丁

2.1 集群管理Manager

Manager是FusionInsight HD的运维管理系统,为部署在集群内的服务提供统一的集群管理能力。Manager支持大规模集群的安装部署、性能监控、告警、用户管理、权限管理、审计、服务管理、健康检查、日志采集、升级和补丁等功能。

图2-1 Manager逻辑架构

FusionInsight Manager由OMS和NodeAgent组成:

OMS:操作维护系统的管理节点,OMS一般有两个,互为主备。

NodeAgent:操作维护系统中的所有被管理节点,每个节点上一个。

表2-1 业务模块说明

模块名称

WebService

描述

是一个部署在Tomcat下的Web服务,提供Manager的https接口,用于通过浏览器访问Manager。同时还提供基于Syslog和SNMP协议的北向接入能力

Manager的控制中心,负责汇聚来自集群中所有节点的信息,统一向管理员展示,以及负责接收来自管理员的操作指令,并且依据操作指令所影响的范围,向集群的所有相关节点同步信息

Controller

NodeAgent

存在于每一个集群节点,是Controller对部署在该节点上组件做一切操作的代理。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

5

华为FusionInsight HD

技术白皮书 2 重点组件介绍

模块名称 描述

代表本节点上部署的所有组件与Controller交互,实现整个集群多点到单点的汇聚。

IAM

PMS

CEP

FMS

OMMAgent

CAS

AOS

负责记录审计日志。在Manager的UI上每一个非查询类操作,都有对应的审计日志

性能监控模块,搜集每一个OMA上的性能监控数据并提供查询

汇聚功能模块。比如将所有OMA上的磁盘已用空间汇总成一个性能指标

告警模块,搜集每一个OMA上的告警并提供查询

各节点上面性能监控和告警的Agent,负责收集该Agent Node上的性能监控数据和告警数据

统一认证中心,登录Web Service时需要在CAS进行登录认证,浏览器通过URL自动跳转访问CAS

权限管理模块,管理用户和用户组的权限

OMS Kerberos

提供单点登录及Controller与Node Agent间认证的功能。

OMS Ldap

Database

NTP

在集群安装前为用户认证提供数据存储,在集群安装后作为集群中Ldap的备份

Manager的数据库,负责存储配置、监控、告警等信息

负责集群内部各节点与OMS节点之间的时钟同步 和 OMS节点与外部时钟源之间的时钟同步。

支持5000+节点大集群

Manager通过支持以下特性,达到支持5000+大集群的能力:

快速部署安装

产品集成的集群部署规划工具,可自动生成安装模板和扩容模板,创建一个5000节点,仅需要不到5个小时时间。

文件分发多点续传

软件包下发给集群中各节点时采用类P2P机制,一传十、十传百,传输效率不再依赖节点规模

全场景容错机制

所有维护操作支持重试,安装部署支持角色级别容错,支持主机隔离。部分节点/角色故障,不影响整体维护操作。

大集群环境异构能力

配置集中管理,支持按实例组配置,不同硬件规格主机设置不同的配置,提升配置异构能力。

集群规模弹性伸缩

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

6

华为FusionInsight HD

技术白皮书 2 重点组件介绍

集群可大可小,不同集群规模应用不同系统参数,更加合理利用硬件资源

高性能监控指标汇聚计算能力

分布式监控汇聚计算模型,能够瞬时处理250000条并发监控指标。

轻松应对告警风暴

每秒支持处理高达10000条并发告警

支持多服务

多服务特性是指组件不需要定义多套,由Manager直接支持在一个集群内,将同一组件安装多套,以便更好地解决资源隔离问题或性能问题。

新添加的服务实例拥有与原服务相同的功能模块,例如日志、运行用户或Shell命令。Manager可以统一管理HBase、Hive和Spark/Spark2x等不同服务实例,例如监控、告警和启动停止服务的功能。在使用Loader导入导出数据、使用Metadata抽取元数据、创建角色、备份恢复或者应用开发的场景中,系统管理员需要根据实际情况,选择对应的服务实例进行操作。

支持在线日志检索

支持在线检索并显示组件的日志内容,用于问题定位等其他日志查看场景。

检索内容支持关键字、正则表达式。

支持服务、文件、日志级别、主机范围、时间范围的选择。

支持检索返回结果的最大条数和检索超时的配置功能。

针对检索结果支持排序、二次检索功能。

支持检索结果的导出。

支持多集群统一管理

支持多集群统一管理,使用一套FusionInsight Manager可创建、管理多个集群,减少运维人员管理多个集群需要操作多套界面的繁琐。

FusionInsight Manager支持同时管理多个相同产品类型的集群,也支持不同产品类型的集群。

多集群部署

多个集群统一部署一套OMS,所有集群共用管理节点,非首个安装的集群不需要额外准备管理节点。

部署集群时,一台主机只能属于一个集群,管理节点可单独部署,不归属于任何一个集群。

多集群任务并发

多个集群的运维任务可并发执行,互不影响,FusionInsight Manager支持在任务管理中心显示集群名称,支持按集群检索任务。

统一用户权限管理

多个集群共用一套用户权限管理体系,用户通过关联不同集群角色的权限,可访问各集群内的资源。

多集群运维监控

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

7

华为FusionInsight HD

技术白皮书 2 重点组件介绍

管理员可通过FusionInsight Manager同时对多个集群进行服务管理、主机管理、租户资源管理、日常监控、告警查看等操作。

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 存在错误或者甚至是恶意的,因此将它们当作无特权的代码对待。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

8

华为FusionInsight HD

技术白皮书 2 重点组件介绍

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组件进行交互,以提供资源调度功能。下图为其整体系统图。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

9

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-4 Superior Scheduler内部架构

Superior Scheduler的主要模块如下:

Superior Scheduler Engine:具有丰富调度策略的高性能调度器引擎。

Superior YARN Scheduler Plugin:YARN Resource Manager和Superior

SchedulerEngine之间的桥梁,负责同YARN Resource Manager交互。

在调度原理上,开源的调度器都是基于计算节点心跳驱动的资源反向匹配作业的调度机制。具体来讲,每个计算节点定期发送心跳到YARN的Resource Manager通知该节点状态并同时启动调度器为这个节点分配作业。这种调度机制把调度的周期同心跳结合在一起,当集群规模增大时,会遇到系统扩展性以及调度性能瓶颈。另外,因为采用了资源反向匹配作业的调度机制,开源调度器在调度精度上也有局限性,例如数据亲和性偏于随机,另外系统也无法支持基于负载的调度策略等。主要原因是调度器在选择作业时,缺乏全局的资源视图,很难做到最优选择。

Superior Scheduler内部采用了不同的调度机制。Superior Scheduler的调度器引入了专门的调度线程,把调度同心跳剥离开,避免了系统心跳风暴问题。另外,Superior Scheduler调度流程采用了从作业到资源的正向匹配方法,这样每个调度的作业都有全局的资源视图,可以很大的提到调度的精度。相比开源调度器,Superior Scheduler在系统吞吐量、利用率、数据亲和性等方面都有很大提升。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

10

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-5 Superior Scheduler性能对比

Superior Scheduler除了提高系统吞吐量和利用率,还提供了以下主要调度功能:

多资源池

多资源池有助于在逻辑上划分集群资源并在多个租户/队列之间共享它们。资源池的划分可以基于异构的资源或完全按照应用资源隔离的诉求来划分。对于一个资源池,不同队列可配置进一步的策略。

每个资源池多租户调度(reserve、min、share、max)

Superior Scheduler提供了灵活的层级多租户调度策略。并允许针对不同的资源池可以访问的租户/队列,配置不同策略,如下所示。

表2-2 策略描述

策略名称

reserve

描述

预留租户资源。即使租户没有作业,其他租户也不能使用该预留的资源。其值可以是百分比或绝对值。如果两者都配置,调度系统动态计算转换为资源绝对值,并取两者的最大值。缺省的reserve值为0。相对于定义一个专用资源池并指定具体机器的方式,reserve的策略可以认为提供了一种灵活的浮动预留功能,由于并不限定具体的机器,可以提高计算的数据亲和性,也不会受具体机器故障的影响。

具有抢占支持的最低保证资源。其他租户可以使用这部分资源,但是本租户享有优先使用权。其值可以是百分比或绝对值。如果两者都配置,调度系统动态计算转换为资源绝对值,并取两者的最大值。缺省值是0。

不支持抢占的共享资源。本租户要使用这部分资源时,需要等待其他租户完成作业并释放资源。其值是百分比或绝对值。

允许的最大资源数量。租户无法获得比允许的最大资源多的资源。min

share

max

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

11

华为FusionInsight HD

技术白皮书 2 重点组件介绍

策略名称 描述

其值是百分比或绝对值。如果两者都配置,调度系统动态计算转换为资源绝对值,并取两者最大值。缺省值不受限制。

租户资源分配策略示意图,如图2-6所示。

图2-6 策略示意图

其中“total”表示总资源,不是调度策略。

同开源的调度器相比,Superior Scheduler同时提供了租户级百分比和绝对值的混配策略,可以很好的适应各种灵活的企业级租户资源调度诉求。例如,用户可以在一级租户提供最大绝对值的资源保障,这样租户的资源不会因为集群的规模改变而受影响。但在下层的子租户之间,可以提供百分比的分配策略,这样可以尽可能提升一级租户内的资源利用率。

异构和多维资源调度

Superior Scheduler支持CPU和内存资源的调度外,还支持扩展支持以下功能:

节点标签可用于识别像GPU_ENABLED,SSD_ENBALED等节点的多维属性,可以根据这些标签进行调度。

资源池可用于对同一类别的资源进行分组并分配给特定的租户/队列。

租户内多用户公平调度

在叶子租户里,多个用户可以使用相同的队列来提交作业。相比开源调度器,Superior Scheduler可以支持在同一租户内灵活配置不同用户的资源共享策略。例如可以为VIP用户配置更多的资源访问权重。

数据位置感知调度

Superior Scheduler采用“从作业到节点的调度策略”,即尝试在可用节点之间调度给定的作业,使得所选节点适合于给定作业。通过这样做,调度器将具有集群和数据的整体视图。如果有机会使任务更接近数据,则保证了本地化。而开源调度器采用“从节点到作业的调度策略”,在给定节点中尝试匹配适当的作业。

Container调度时动态资源预留

在异构和多样化的计算环境中,一些container需要更多的资源或多种资源,例如Spark作业可能需要更大的内存。当这些container与其他需要较小资源的container竞争时,可能没有机会在合理的时间内获得所需的资源而处于饥饿状态。由于开源的调度器是基于资源反向匹配作业的调度方式,会为这些作业盲目的进行资源文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

12

华为FusionInsight HD

技术白皮书 2 重点组件介绍

预留以防进入饥饿状态。这就导致了系统资源的整体浪费。Superior Scheduler与开源特性的不同之处在于:

基于需求的匹配:由于Superior Scheduler采用“从作业到节点的调度”,能够选择合适的节点来预留资源提升这些特殊container的启动时间,并避免浪费。

租户重新平衡:启用预留逻辑时,开源调度器并不遵循配置的共享策略。Superior Scheduler采取不同的方法。在每个调度周期中,Superior Scheduler将遍历租户,并尝试基于多租户策略重新达到平衡,且尝试满足所有策略(reserve, min, share等),以便可以释放预留的资源,将可用资源流向不同租户下的其他本应得到资源的container。

动态队列状态控制(Open/Closed/Active/InActive)

支持多个队列状态,有助于管理员操作和维护多个租户。

Open状态(Open/Closed):如果是Open(默认)状态,将接受提交到此队列的应用程序,如果是Closed状态,则不接受任何应用程序。

Active状态(Active/Inactive):如果处于Active(默认)状态,租户内的应用程序是可以被调度和分配资源。如果处于Inactive状态则不会进行调度。

应用等待原因

如果应用程序尚未启动,则提供作业等待原因信息。

Superior Scheduler和YARN开源调度器作了对比分析,如表2-3所示:

表2-3 对比分析

领域

多租户调度

YARN开源调度器

在同构集群上,只能选择容量调度器(Capacity Scheduler)或公平调度器(Fair Scheduler)两者之一,且FusionInsight集群当前不支持公平调度器(Fair

Scheduler)。容量调度器只支持百分比方式配置,而公平调度器只支持绝对值方式。

从节点到作业的调度策略导致降低数据本地话命中率,潜在影响应用的执行性能。

不支持

Superior Scheduler

支持异构集群和多资源池。

支持预留,以保证直接访问资源。

数据位置感知调度

基于机器负载的均衡调度

租户内多用户公平调度

作业等待原因

从作业到节点的调度策略。可具有更精确的数据位置感知,数据本地化调度的作业命中率比较高。

Superior Scheduler在调度时考虑机器的负载和资源分配情况,做到均衡调度。

租户内用户的公平调度,支持关键字default, others。

作业等待原因信息可显示为什么作业需等待。

不支持

不支持

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

13

华为FusionInsight HD

技术白皮书 2 重点组件介绍

综上所述,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)、适合存储海量非结构化数据或半结构化数据的、具备高可靠性、高性能、可灵活扩展伸缩的、支持实时数据读写的分布式存储系统。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

14

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图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发展历程:

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

15

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图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同时提供了操作允许用户显示的将数据转换过程持久化到硬盘。对于数据本地化,是通过允许用户能够基于每条记录的键值,控制数据分区实现的。(采用这种方式的一个明显好处是,能够保证两份需要进行关联的数据将会被同样的方式进行哈文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

16

华为FusionInsight HD

技术白皮书 2 重点组件介绍

希)。如果内存的使用超过了物理限制,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特性

SQL功能:CarbonData与Spark SQL完全兼容,支持所有可以直接在Spark SQL上运行的SQL查询操作。

简单的Table数据集定义:CarbonData支持易于使用的DDL(数据定义语言)语句来定义和创建数据集。CarbonData DDL十分灵活、易于使用,并且足够强大,可以定义复杂类型的Table。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

17

华为FusionInsight HD

技术白皮书

2 重点组件介绍

便捷的数据管理:CarbonData为数据加载和维护提供多种数据管理功能。CarbonData支持加载历史数据以及增量加载新数据。加载的数据可以基于加载时间进行删除,也可以撤销特定的数据加载操作。

CarbonData文件格式是HDFS中的列式存储格式。该格式具有许多新型列存储文件的特性,例如,分割表,压缩模式等。CarbonData具有以下独有的特点:

伴随索引的数据存储:由于在查询中设置了过滤器,可以显著加快查询性能,减少I/O扫描次数和CPU资源占用。CarbonData索引由多个级别的索引组成,处理框架可以利用这个索引来减少需要安排和处理的任务,也可以通过在任务扫描中以更精细的单元(称为blocklet)进行skip扫描来代替对整个文件的扫描。

可选择的数据编码:通过支持高效的数据压缩和全局编码方案,可基于压缩/编码数据进行查询,在将结果返回给用户之前,才将编码转化为实际数据,这被称为“延迟物化”。

支持一种数据格式应用于多种用例场景:例如,交互式OLAP-style查询,顺序访问(big scan),随机访问(narrow scan)。

CarbonData关键技术和优势

快速查询响应:高性能查询是CarbonData关键技术的优势之一。CarbonData查询速度大约是Spark SQL查询的10倍。CarbonData使用的专用数据格式围绕高性能查询进行设计,其中包括多种索引技术、全局字典编码和多次的Push down优化,从而对TB级数据查询进行最快响应。

高效率数据压缩:CarbonData使用轻量级压缩和重量级压缩的组合压缩算法压缩数据,可以减少60%~80%数据存储空间,大大节省硬件存储成本。

2.8 交互式SQL引擎Elk

Elk是一个分布式交互查询分析数据仓库引擎,支持标准的SQL2003规范,支持标准SQL对数据的并行插入、删除、修改、查询等功能。

Elk是FusionInsight HD提供标准SQL接口的即时查询组件。

Elk具备以下特点:

支持SQL2003标准语法

采用高速分布式并行计算引擎

提供高性能的HDFS(Hadoop Distributed File System)结构化数据的即时及复杂分析查询功能

对外提供JDBC和ODBC访问接口

Elk由多个ElkServer组成,Elk结构具体如图2-10所示。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

18

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-10 Elk结构

表2-4 模块说明

名称

ElkServer(CM)

描述

Elk集群管理模块CM(Cluster Manager),即含CMServer进程的特殊ElkServer,负责管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。CM分为主CM和备CM。正常情况下,只由主CM提供Elk集群管理服务。当主CM发生故障的情况下,备CM会主动升为主CM提供Elk集群管理服务。

CM通过CM服务完成对各个ElkServer管理。CM服务由CMServer、CMAgent、Monitor组成。

CMServer是整个Elk集群的大脑,它会根据CMAgent上报上来的各ElkServer状态信息来决定是否需要状态变更。CMServer只部署在主备CM上。

CMAgent是ElkServer上面部署的实例代理线程,负责接收CMServer下发的命令和上报ElkServer的Coordinator、Datanode、GTM的状态给CMServer。每个ElkServer均会部署一个CMAgent,也包括主备CM和主备GTM。

Monitor是watchdog定时任务,其唯一的任务是在CMAgent停止的情况下将CMAgent重启。每个ElkServer均会部署一个Monitor,也包括主备CM和主备GTM。

ElkServer(GTM)

全局事务管理模块GTM(Global Transaction Manager),即含GTM进程的特殊ElkServer,负责生成和维护全局事务ID、事务快照、时间戳等需要全局唯一的信息。GTM分为主GTM和备GTM。正常情况下,只由主GTM提供全局事务管理服务。当主GTM发生故障的情况下,备GTM会主动升为主GTM提供服务。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

19

华为FusionInsight HD

技术白皮书 2 重点组件介绍

名称

ElkServer

描述

业务模块,即除ElkServer(CM)、ElkServer(GTM)以外的ElkServer,由Coordinator及多个Datanode组成,负责执行CM、GTM下发的任务。业务模块与ElkServer(CM)、ElkServer(GTM)主要区别是不包含CMServer与GTM进程。

说明

本手册的Coordinator简称为CN。

Coordinator(CN)

负责提供外部应用接口、优化全局执行计划、向Datanode分发执行计划,以及汇总、处理执行结果。

Datanode(DN)

说明

本手册的Datanode简称为DN。

负责存储业务数据、执行数据查询任务以及向Coordinator返回执行结果。

Datanode实例分为主Datanode实例、备Datanode实例和从备Datanode实例,它们之间的工作原理如下:

主、备实例间可以正常同步数据时,主实例不会同步数据到从备实例。

主、备实例间无法正常同步数据时,主实例会将数据同步到从备实例。

主、备实例间数据同步恢复正常后,主实例会将异常期间的数据同步到备实例上,并在完成后知会从备实例清空之前同步的这部分数据。备实例同步主实例数据期间,如果主实例发生故障不可用,备实例将升为主实例,并在升为主实例成功后从备实例上同步之前异常期间的数据。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

20

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-11 Elk查询HDFS数据原理

Elk查询HDFS数据原理如图2-11所示,具体步骤如下:

1. 用户通过应用程序发出查询HDFS数据的SQL请求到Coordinator。

2. Coordinator接收用户的SQL请求,访问HDFS的NameNode的元数据信息。

3. NameNode返回元数据信息到Coordinator,Coordinator获取外表数据在HDFS集群上的分布信息。

4. Coordinator分配服务进程,向GTM请求分配全局事务信息。

5. GTM接收到Coordinator的请求,返回全局事务信息给Coordinator。

6. Coordinator根据数据分布信息以及系统元信息,解析SQL为查询计划树,从查询计划树中提取可以发送到Datanode的执行步骤,封装成SQL语句或者子执行计划树,发送到Datanode执行。

7. Datanode接收到读取任务后,查询分析读取的具体HDFS的数据块。

8. Datanode任务执行后,将执行结果返回给Coordinator。

9. Coordinator将查询结果通过应用程序返回给用户。

2.9 全文检索组件Solr

Solr是基于Apache Lucene的独立的企业级应用搜索服务器。它对外提供了类似于REST的HTTP/XML和JSON的API。其主要功能包括强大的全文检索,高亮显示,层面搜索,近实时索引,动态聚类,数据库整合,丰富的文档(如Word中,PDF格式)处理和地理信息搜索等。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

21

华为FusionInsight HD

技术白皮书 2 重点组件介绍

Solr作为业界优秀的企业搜索服务器具有以下特性:

1. 先进的全文搜索功能

2. 优化的高容量网络流量

3. 基于标准的开放接口——XML,JSON和HTTP

4. 综合的HTML管理界面

5. 采用JMX监控服务器统计信息

6. 线性可扩展性,自动索引复制,自动故障转移和恢复

7. 近实时索引

8. 采用XML配置达到灵活性和适配性

9. 可扩展的插件架构

Solr集群方案逻辑组成

表2-5 Solr组成

名称

Client

说明

Client使用HTTP协议同Solr集群(SolrCloud)中的SolrServer 进行通信,进行分布式索引和分布式搜索操作。

SolrServer负责提供创建索引和全文检索等服务,是Solr集群中的数据计算和处理单元。

SolrServer一般与HDFS集群中的DataNode合并。从而可以提供更高性能的索引和搜索服务。

ZooKeeper集群

ZooKeeper为Solr集群中各进程提供分布式协作服务。各SolrServer将自己的信SolrServer

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

22

华为FusionInsight HD

技术白皮书 2 重点组件介绍

名称 说明

息(collection配置信息、SolrServer健康信息等)注册到Zookeeper中,Client据此感知各个SolrServer的健康状态来决定索引和搜索请求的分发。

HDFS集群 HDFS为Solr提供高可靠的文件存储服务,Solr的索引文件全部存储在HDFS中。

2.10 全文检索组件Elasticsearch

添加Elasticsearch后,可以接入Elasticsearch集群开始使用Elasticsearch引擎,如定义索引数据、加载数据或搜索数据等。Elasticsearch集群可以包含多个索引(indices)(数据库),一个索引包含一个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。

表2-6 Elasticsearch 基本概念

术语 描述

索引在Elasticsearch中存储数据的行为就叫做索引(indexing),索引在(Index)

Elasticsearch中只是一个逻辑命名空间,指向一个或多个分片,内部Apache Lucene实现索引中数据的读写。索引与关系数据库实例Database相当。

说明

索引(名词) 如上文所述,一个索引(index)就像是传统关系数据库中的数据库,它是相关文档存储的地方,index的复数是indices 或indexes。

索引(动词) 「索引一个文档」表示把一个文档存储到索引(名词)里,以便它可以被检索或者查询。这很像SQL中的 INSERT 关键字,差别是,如果文档已经存在,新的文档将覆盖旧的文档。

倒排索引 传统数据库为特定列增加一个索引,例如B-Tree索引来加速检索。Elasticsearch和Lucene使用一种叫做倒排索引(inverted index)的数据结构来达到相同目的。默认情况下,文档中的所有字段都会被索引(拥有一个倒排索引),只有这样他们才是可被搜索的。

文档类型(Type)

文档(Document)

每个文档在Elasticsearch中都必须设定它的类型。文档类型使得同一个索引中在存储结构不同的文档时,只需要依据文档类型就可以找到对应的参数映射信息,方便文档的存储。相当于数据库中的Table。

是可以被索引的基本单位,特指最顶层结构或根对象序列化成的JSON数据。通过相当于数据库中的Row。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

23

华为FusionInsight HD

技术白皮书 2 重点组件介绍

术语

映射(Mapping)

字段(Field)

描述

用来约束字段的类型,可以根据数据自动创建。相当于数据库中的Shema。

组成文档的最小单位。相当于数据库中的Column。

在Elasticsearch中,我们可以画一些简单的对比图来类比传统关系型数据库:

Relational DB -> Databases -> Tables -> Rows -> Columns

Elasticsearch -> Indices -> Types -> Documents -> Fields

使用Elasticsearch服务中引擎搜索数据的基本流程如下所示:

1. 场景描述

2. 第一步:新建集群

3. 第二步:定义数据

4. 第三步:加载数据建立索引

5. 第四步:搜索数据

6. 第五步:删除集群

2.11 批量数据集成Loader

Loader是在开源Sqoop组件的基础上进行了一些扩展,实现FusionInsight 与关系型数据库、文件系统之间交换“数据”、“文件”,同时也可以将数据从关系型数据库或者文件服务器导入到FusionInsight 的HDFS/HBase中,或者反过来从HDFS/HBase导出到关系型数据库或者文件服务器中。

Loader模型主要由Loader Client和Loader Server组成,如图2-12所示。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

24

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-12 Loader模型

图2-12中各部分的功能说明如表2-7所示。

表2-7 Loader模型组成

名称

Loader Client

Loader Server

描述

Loader的客户端,包括WebUI和CLI版本两种交互界面。

Loader的服务端,主要功能包括:处理客户端操作请求、管理连接器和元数据、提交MapReduce作业和监控MapReduce作业状态等。

实现RESTful(HTTP + JSON)接口,处理来自客户端的操作请求。

简单的作业调度模块,支持周期性的执行Loader作业。

数据转换处理引擎,支持字段合并、字符串剪切、字符串反序等。

Loader作业执行引擎,支持以REST API

Job Scheduler

Transform Engine

Execution Engine

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

25

华为FusionInsight HD

技术白皮书 2 重点组件介绍

名称 描述

MapReduce方式执行Loader作业。

Submission Engine

Job Manager

Loader作业提交引擎,支持将作业提交给MapReduce执行。

管理Loader作业,包括创建作业、查询作业、更新作业、删除作业、激活作业、去激活作业、启动作业、停止作业。

元数据仓库,存储和管理Loader的连接器、转换步骤、作业等数据。

管理Loader Server进程的主备状态,Loader Server包含2个节点,以主备方式部署。

Metadata Repository

HA Manager

通过MapReduce实现并行执行和容错

Loader通过MapReduce作业实现并行的导入或者导出作业任务,不同类型的导入导出作业可能只包含Map阶段或者同时Map和Reduce阶段。

Loader同时利用MapReduce实现容错,在作业任务执行失败时,可以重新调度。

数据导入到HBase

在MapReduce作业的Map阶段中从外部数据源抽取数据。

在MapReduce作业的Reduce阶段中,按Region的个数启动同样个数的Reduce Task,Reduce Task从Map接收数据,然后按Region生成HFile,存放在HDFS临时目录中。

在MapReduce作业的提交阶段,将HFile从临时目录迁移到HBase目录中。

数据导入HDFS

在MapReduce作业的Map阶段中从外部数据源抽取数据,并将数据输出到HDFS临时目录下(以“输出目录-ldtmp”命名)。

在MapReduce作业的提交阶段,将文件从临时目录迁移到输出目录中。

数据导出到关系型数据库

在MapReduce作业的Map阶段,从HDFS或者HBase中抽取数据,然后将数据通过JDBC接口插入到临时表(Staging Table)中。

在MapReduce作业的提交阶段,将数据从临时表迁移到正式表中。

数据导出到文件系统

在MapReduce作业的Map阶段,从HDFS或者HBase中抽取数据,然后将数据写入到文件服务器临时目录中。

在MapReduce作业的提交阶段,将文件从临时目录迁移到正式目录

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

26

华为FusionInsight HD

技术白皮书 2 重点组件介绍

2.12 实时数据采集Flume

Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。其中Flume-NG是Flume

的一个分支,其目的是要明显简单,体积更小,更容易部署。其最基本的架构如下图所示:

Flume-NG由一个个Agent来组成,而每个Agent由Source、Channel、Sink三个模块组成,其中Source负责接收数据,Channel负责数据的传输,Sink则负责数据向下一端的发送。

Source:完成对日志数据的收集,分成transtion 和 event 打入到channel之中。

Channel: 主要提供一个队列的功能,对source提供中的数据进行简单的缓存。

Sink: 取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器

Flume的可靠性基于Agent间事务的交换,下一个Agent down掉,Channel可以持久化数据, Agent恢复后再传输。可用性则基于内建的Load balancing和Failover机制。Channel及Agent都可以配多个实体,实体之间可以使用负载分担等策略

每个agent为一个JVM进程,同一台服务器可以有多个agent。收集节点(agent1,2,3)负责处理日志,汇聚节点(agent4)负责写入HDFS,每个收集节点的agent可以选择多个汇聚节点,这样可以实现负载均衡。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

27

华为FusionInsight HD

技术白皮书 2 重点组件介绍

2.13 流式事件处理(Storm)

2.13.1 Storm

Apache Storm是一个分布式、可靠、容错的实时流式数据处理的系统。在Storm中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology)。这个拓扑将会被提交给集群,由集群中的主控节点(master node)分发代码,将任务分配给工作节点(worker node)执行。一个拓扑中包括spout和bolt两种角色,其中spout发送消息,负责将数据流以tuple元组的形式发送出去;而bolt则负责转换这些数据流,在bolt中可以完成计算、过滤等操作,bolt自身也可以随机将数据发送给其他bolt。由spout发射出的tuple是不可变数组,对应着固定的键值对。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

28

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-13 Storm系统架构

业务处理逻辑被封装进Storm中的topology中。一个topology是由一组Spout组件(数据源)和Bolt组件(逻辑处理)通过Stream Groupings进行连接的有向无环图(DAG)。Topology里面的每一个Component(Spout/Bolt)节点都是并行运行的。 在topology里面, 可以指定每个节点的并行度, storm则会在集群里面分配相应的Task来同时计算,以增强系统的处理能力。

图2-14 Topology

2.13.2 StreamCQL

StreamCQL (Steam Continuous Query Language),流式查询语言,是一种用于实时数据流上的查询语言,它是一种类SQL语言,相对于SQL,StreamCQL中增加了(时序)窗口的概念,将待处理的数据保存在内存中,进行快速的内存计算,StreamCQL的输文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

29

华为FusionInsight HD

技术白皮书 2 重点组件介绍

出结果为数据流在某一时刻的计算结果。使用StreamCQL,可以快速进行业务开发,并方便地将业务提交到Storm平台开启实时数据的接收、处理及结果输出;并可以在合适的时候中止业务。

StreamCQL具有如下几个特点:

使用简单:StreamCQL语法和标准SQL语法类似,只要具备SQL基础,都可以快速进行开发。

功能丰富:StreamCQL除了包含标准SQL的各类基本表达式等功能之外,还特别针对流处理场景增加了窗口,窗口前过滤,窗口后过滤,并发度设置等功能,满足多种实时业务处理场景。

易于拓展:StreamCQL提供了拓展接口,以支撑日益复杂的业务场景,用户可以自定义输入、输出、序列化、反序列化等并结合已有功能来满足灵活的业务场景。

易于调试:StreamCQL提供了详细的异常码说明,降低了用户对于各种错误的处理难度,提升了易用性

图2-15 Storm原生API与StreamCQL比较

2.14 流处理引擎Flink

Flink是一个批处理和流处理结合的统一计算框架,其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。它的最大亮点是流处理,是业界最顶级的开源流处理引擎。

Flink最适合的应用场景是低时延的数据处理(Data Processing)场景:高并发pipeline处理数据,时延毫秒级,且兼具可靠性。

Flink技术栈如图1所示。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

30

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-16 Flink技术栈

Flink整个系统包含三个部分:

Client

Flink Client主要给用户提供向Flink系统提交用户任务(流式作业)的能力。

TaskManager

Flink系统的业务执行节点,执行具体的用户任务。TaskManager可以有多个,各个TaskManager都平等。

JobManager

Flink系统的管理节点,管理所有的TaskManager,并决策用户任务在哪些Taskmanager执行。JobManager在HA模式下可以有多个,但只有一个主JobManager。

Flink系统提供的关键能力:

低时延

提供ms级时延的处理能力。

Exactly Once

提供异步快照机制,保证所有数据真正只处理一次。

HA

JobManager支持主备模式,保证无单点故障。

水平扩展能力

TaskManager支持手动水平扩展。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

31

华为FusionInsight HD

技术白皮书 2 重点组件介绍

2.15 分布式高速缓存Redis

Redis(REmote DIctionary Service),是C语言编写的高性能Key-Value内存数据库,支持多种数据类型,包括 string(字符串)、 list(链表)、 set(集合)、 zset(有序集合)、hash等。Redis集群模式具有更多优点,适合生产环境使用,但Redis集群管理复杂,容易出错,社区版本部分功能不完善。FusionInsight HD提供图形化的Redis集群管理功能。

向导式创建Redis集群系统

FusionInsight HD支持一主一从模式的Redis集群,系统自动计算节点上可安装的Redis实例个数并分配主从关系。

集群扩容、减容

当集群需要提供大规模的处理能力时,可以一键式扩容一对或多对主从实例。在此过程中,系统会自动完成数据迁移和数据平衡,用户无需其他操作。

Balance

出现扩容异常、部分实例掉线等异常场景时,Redis集群中的数据可能会分布不均匀,此时可以通过管理界面上提供的Balance功能,让系统自动对集群数据进行平衡,保证集群的健康运行。

性能监控与告警

系统提供Redis集群的性能监控功能,可以通过直观的曲线图方式,了解当前Redis集群、实例的TPS吞吐量情况。

集群可靠性保证

社区自带的集群创建工具还不完善,只是按顺序在节点上分配主从实例。有可能将同一组主从实例排在同一节点上,如此不能处理节点故障场景。

FusionInsight HD在创建Redis集群的时候,能够自动将同一组主从实例安排在不同节点上,同时在进行扩容和减容的操作时,仍然会保证该原则。这样可以保证集群内任意一节点发生故障,都能够通过主从实例倒换来保证业务不中断。

优化集群性能

内置了OS层、应用层的性能调优;比社区版性能更好,此调优开箱即用,不需额外开发、操作。

2.16 分布式消息队列Kafka

Kafka是一个分布式的、分区的、多副本的消息发布-订阅系统,它提供了类似于JMS的特性,但在设计上完全不同,它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性,适用于离线和在线的消息消费,如常规的消息收集、网站活性跟踪、聚合统计系统运营数据(监控数据)、日志收集等大量数据的互联网服务的数据收集场景。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

32

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-17 Kafka架构

Broker

Topic/主题

说明

在Kafka集群上一个服务器称为一个Broker。

一个Topic就是一个类别或者一个可订阅的条目名称,也即一类消息。一个主题可以有多个分区,这些分区可以作为并行的一个单元。

是一个有序的、不可变的消息序列,这个序列可以被连续地追加—个提交日志。在分区内的每条消息都有一个有序的ID号,这个ID号被称为偏移(Offset),这个偏移量可以唯一确定每条消息在分区内的位置。

向Kafka的主题发布消息。

向Topic订阅,并且接收发布到这些Topic的消息。

Partition/分区

Producer/生产者

Consumer/消费者

2.17 作业编排与调度Oozie

Oozie是一个基于工作流引擎的开源框架,它能够提供对Hadoop作业的任务调度与协调。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

33

华为FusionInsight HD

技术白皮书 2 重点组件介绍

图2-18 Oozie架构

名称称

Console

Client

SDK

说明

提供对Oozie流程的查看和监控功能。

通过接口控制workflow流程:可以执行提交流程,启动流程,运行流程,终止流程,恢复流程等操作。

软件开发工具包SDK(SoftwareDevelopmentKit)是被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。

pg数据库。

可以用内置的Tomcat容器,也可以用外部的,记录的信息比如日志等放在数据库中。

Tomcat服务器是免费的开放源代码的Web应用服务器。

底层执行Oozie编排流程的各个组件,包括MapReduce、Hive等。

Database

Oozie server

Tomcat

Hadoop组件

Oozie是一个工作流引擎服务器,用于运行HD MapReduce任务工作流。同时Oozie还是一个Java Web程序,运行在Tomcat容器中。

Oozie工作流通过HPDL(一种通过XML自定义处理的语言,类似JBOSS JBPM的JPDL)来构造。包含Control Node(可控制的工作流节点)、Action Node。

Control Node用于控制工作流的编排,如start/开始、end/关闭、error/异常、decision/选择、fork/并行、join/合并等。

Oozie工作流中拥有多个Action Node,如MapReuce、Java等。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

34

华为FusionInsight HD

技术白皮书 2 重点组件介绍

所有的Action Node以有向无环图(DAG Direct Acyclic Graph)的模式部署运行。所以在Action Node的运行步骤上是有方向的,当上一个Action Node运行完成后才能运行下一个Action Node。一旦当前Action Node完成,远程服务器将回调Oozie的接口,这时Oozie又会以同样的方式执行工作流中的下一个Action Node,直到工作流中所有Action Node都完成(完成包括失败)。

Oozie工作流提供各种类型的Action Node用于支持不同的业务需要,如MapReduce,HDFS,SSH,Java以及Oozie子流程。

2.18 数据继承入口Hue

Hue是一组web应用,用于和FusionInsight平台进行交互,能够帮助用户浏览HDFS,进行Hive、SparkSQL查询,启动MapReduce任务以及Oozie工作流等。

Hue运行于浏览器,在FusionInsight中,HUE被集成在FusionInsight Manager中。

下图是Hue的整体架构,描述了Hue的工作机制。Hue Server是一个集成在FusionInsight Manager上的web应用的容器。它承载了与所有FusionInsight 组件交互的应用。

图2-19 集成开发工具Hue

Hue主要包括了如下的组件及功能:

1. 文件浏览器——该应用能够允许用户直接通过界面浏览以及操作HDFS的不同目录,主要包含如下功能:

创建文件及目录,上传下载文件,重命名,移动,删除文件及目录。修改文件以及目录的属主,权限。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

35

华为FusionInsight HD

技术白皮书

2 重点组件介绍

搜索文件,目录,文件所有人,所属用户组。

查看编辑文件。

2. 查询编辑器——用户能够通过查询查询编辑器,编写简单的SQL,查询存储在Hadoop之上的数据。例如HDFS,HBase,Hive,Impala。 用户可以方便的,创建,管理,执行SQL,并且能够以Excel的形式下载执行的结果。主要功能如下:

SQL编辑,执行,SQL模板保存,模板复制,模板编辑。SQL解释,查询,历史记录。

数据库展示,数据表展示。

支持多种Hadoop存储。

任务浏览器

3. 工作流控制——主要包含如下功能:

a.

提供任务列表,根据具体任务找到对应子任务的相关信息,状态,开始,结束时间

查看任务日志

能够帮助用户方便的创建提交任务。

可以给具体的任务输入变量,参数

工作流是一组任务的结合,控制任务执行顺序。工作流能够自动控制所属节点任务的执行,停止,克隆等等操作。

协调器应用允许用户定义和执行周期性以及相互依赖的工作流任务,并配置工作流能够执行的条件。

用户管理——类似于常规的Web应用,Hue也提供了用户管理的功能,能够添加删除管理用户信息。

b. 任务定制器

c. Oozie编辑器——Oozie编辑器允许用户定义Oozie工作流以及协调器。

2.19 分布式图数据库GraphBase

简介

互联网时代,随着网络技术的发展,企业积累的数据越来越多。伴随着数据集的不断增加,传统的关系型数据库查询性能会随之变差,特别是针对一些特殊的业务场景,所以迫切的需要一种新的解决方案去应对这种危机。为了解决复杂的关系问题,图数据库应运而生。

图数据库,是指以“图”这种数据结构存储和查询数据,图包含节点和关系,节点和关系可以存在标签和属性,且边可以有方向,FusionInsight GraphBase是基于FusionInsight HD的分布式图数据库,基于HBase的分布式存储机制,能够支持百亿节点,千亿关系的海量数据,提供基于Spark的数据导入和基于Elasticsearch的索引机制,在推荐、关系分析和金融反欺诈等领域有广泛应用。系统具有如下特点:

全分布式,Hadoop生态无缝集成。

百亿点千亿边,妙级查询。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

36

华为FusionInsight HD

技术白皮书

2 重点组件介绍

提供易用的Rest接口,方便数据的查询分析。

提供强大的Gremlin图遍历功能,可实现复杂的业务逻辑。

支持离线批量导入和实时流导入,对导入性能进行深度优化。

架构

GraphBase架构如图2-20所示。

图2-20 GraphBase架构

接入层

Gremlin API:引入开源的Apache TinkerPop Gremlin组件,提供开源标准图交互式查询语言接口;

REST API:提供包含图查询、图修改、图管理和华为增强的在线分析图算法在内的全套接口;

通过Load Balancer提供多实例GraphServer的负荷分担。

提供图数据库核心引擎,包括数据管理、元数据管理等;

后端存储和索引接口适配层;

分布式KV存储:提供海量图数据存储能力;

搜索引擎提供二级索引,全文检索、模糊检索等能力。

计算层

存储层

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

37

华为FusionInsight HD

技术白皮书 2 重点组件介绍

GraphBase典型应用场景:

金融反欺诈

知识图谱

关系分析

2.20 多租户

定义

多租户是FusionInsight HD大数据集群中的多个资源集合(每个资源集合是一个租户),具有分配和调度资源的能力。资源包括计算资源和存储资源。

背景

现代企业的数据集群在向集中化和云化方向发展,企业级大数据集群需要满足:

不同用户在集群上运行不同类型的应用和作业(分析、查询、流处理等),同时存放不同类型和格式的数据。

某些类型的用户(例如银行、政府单位等)对数据安全非常关注,很难容忍将自己的数据与其他用户放在一起。

这给大数据集群带来了以下挑战:

合理地分配和调度资源,以支持多种应用和作业在集群上平稳运行。

对不同的用户进行严格的访问控制,以保证数据和业务的安全。

多租户将大数据集群的资源隔离成一个个资源集合,彼此互不干扰,用户通过“租用”需要的资源集合,来运行应用和作业,并存放数据。在大数据集群上可以存在多个资源集合来支持多个用户的不同需求。

对此,华为FusionInsight HD企业级大数据集群提供了完整的企业级大数据多租户解决方案。

优势

合理配置和隔离资源

租户之间的资源是隔离的,一个租户对资源的使用不影响其它租户,保证了每个租户根据业务需求去配置相关的资源,可提高资源利用效率。

测量和统计资源消费

系统资源以租户为单位进行计划和分配,租户是系统资源的申请者和消费者,其资源消费能够被测量和统计。

保证数据安全和访问安全

多租户场景下,分开存放不同租户的数据,以保证数据安全;控制用户对租户资源的访问权限,以保证访问安全。

调度器

多租户根据调度器类型分为开源的Capacity调度器和华为公司自主研发的增强型Superior调度器。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

38

华为FusionInsight HD

技术白皮书 2 重点组件介绍

Capacity调度器为开源的容量调节器。

Superior调度器为增强型,Superior取名源自苏必利尔湖,意指由该调度器管理的数据足够大。

为满足企业需求,克服Yarn社区在调度上遇到的挑战与困难,华为公司自主研发的Superior调度器,不仅集合了当前Capacity调度器与Fair调度器的优点,还做了以下增强:

增强资源共享策略

Superior调度器支持队列层级,在同集群集成开源调度器的特性,并基于可配置策略进一步共享资源。针对实例,管理员可通过Superior调度器为队列同时配置绝对值或百分比的资源策略计划。Superior调度器的资源共享策略将YARN的标签调度增强为资源池特性,YARN集群中的节点可根据容量或业务类型不同,进行分组以使队列更有效地利用资源。

基于租户的资源预留策略

部分租户可能在某些时间中运行关键任务,租户所需的资源应保证可用。Superior调度器构建了支持资源预留策略的机制,在这些租户队列运行的任务可立即获取到预留资源,以保证计划的关键任务可正常执行。

租户和资源池的用户公平共享

Superior调度器提供了队列内用户间共享资源的配置能力。每个租户中可能存在不同权重的用户,高权重用户可能需要更多共享资源。

大集群环境下的调度性能优势

Superior调度器接收到各个NodeManager上报的心跳信息,并将资源信息保存在内存中,使得调度器能够全局掌控集群的资源使用情况。Superior调度器采用了push调度模型,令调度更加精确、高效,大大提高了大集群下的资源使用率。另外,Superior调度器在NodeManager心跳间隔较大的情况下,调度性能依然优异,不牺牲调度性能,也能避免大集群环境下的“心跳风暴”。

优先策略

当某个服务在获取所有可用资源后还无法满足最小资源的要求,则会发生优先抢占。抢占功能默认关闭。

2.21 安全增强

华为FusionInsight HD作为一个海量数据管理和分析的平台,具备高安全性。主要从以下几个方面保障用户的数据和业务运行安全。

网络隔离

整个系统网络划分为2个平面,即业务平面和管理平面。两个平面采用物理隔离的方式进行部署,保证业务、管理各自网络的安全性。

业务平面通过业务网络接入,主要为用户和上层用户提供业务通道,对外提供数据存取、任务提交及计算的能力。

管理平面通过运维网络接入,提供系统管理和维护功能,主要用于集群的管理,对外提供集群监控、配置、审计、用户管理等服务。

主机安全

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

39

华为FusionInsight HD

技术白皮书 2 重点组件介绍

用户可以根据自己业务的需要部署第三方的防病毒软件。针对操作系统和端口部分,华为提供如下安全措施。

操作系统内核安全加固

更新操作系统最新补丁

操作系统权限控制

操作系统端口管理

操作系统协议与端口防攻击

应用安全

通过如下措施保证大数据业务正常运行:

身份鉴别和认证

Web应用安全

访问控制

审计安全

密码安全

数据安全

针对海量用户数据,提供如下措施保障客户数据的机密性、完整性和可用性。

容灾:FusionInsight HD通过配置主、备集群关系和需要同步的数据表,提供异地实时容灾功能。当主集群数据遭到破坏(例如,洪水、地震等),备集群可以立即接管业务。

备份:FusionInsight HD支持针对OMS、Kafka、DBService、NameNode、LDAP的元数据备份和对HDFS、HBase、Hive的业务数据备份。

数据完整性

通过数据校验,保证数据在存储、传输过程中的数据完整性。

用户数据保存在HDFS上,HDFS默认采用CRC32C校验数据的正确性。

HDFS的DataNode节点负责存储校验数据,如果发现客户端传递过来的数据有异常(不完整)就上报异常给客户端,让客户端重新写入数据。

客户端从DataNode读数据的时候同会检查数据是否完整,如果发现数据不完整,尝试从其他的DataNode节点上读取数据。

数据保密性

FusionInsight HD分布式文件系统在Apache Hadoop版本基础上,提供对文件内容的加密存储功能,避免敏感数据明文存储,提升数据安全性。业务应用只需对指定的敏感数据进行加密,加解密过程业务完全不感知。在文件系统数据加密基础上,Hive实现表级加密,HBase实现列族级加密,在创建表时指定采用的加密算法,即可实现对敏感数据的加密存储。

从数据的存储加密、访问控制来保障用户数据的保密性。

HBase支持将业务数据存储到HDFS前进行压缩处理,且用户可以配置AES和SM4算法加密存储。

各组件支持本地数据目录访问权限设置,无权限用户禁止访问数据。

所有集群内部用户信息提供密文存储。

同时,FusionInsight Management引入Hadoop KMS服务并进行增强,通过对接第三方KMS,可实现数据的透明加密,保障用户数据安全。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

40

华为FusionInsight HD

技术白皮书

2 重点组件介绍

HDFS支持透明加密,Hive、HBase等在HDFS保存数据的上层组件也将通过HDFS加密保护,加密密钥通过HadoopKMS从第三方KMS获取。

对于Kafka、Redis、Storm等业务数据直接持久化存储到本地磁盘的组件,通过基于LUKS的分区加密机制保护用户数据安全。

基于用户和角色的认证统一体系,遵从帐户/角色RBAC(Role-Based Access

Control)模型,实现通过角色进行权限管理,对用户进行批量授权管理。

支持安全协议Kerberos,FusionInsight HD使用LDAP作为帐户管理系统,并通过Kerberos对帐户信息进行安全认证。

提供单点登录,统一了FusionInsight HD系统用户和组件用户的管理及认证。

对登录FusionInsight Manager的用户进行审计。

提供统一证书管理功能,并基于界面进行整个集群的证书配置和更换,解决了用户针对单个组件需要依次更换证书的繁琐操作。

安全认证

2.22 可靠性增强

FusionInsight HD 在基于Apache Hadoop开源软件的基础上,在主要业务部件的可靠性、性能调优等方面进行了优化和提升。

系统可靠性

所有组件的管理节点均实现HA

Hadoop开源版本的数据、计算节点已经是按照分布式系统进行设计的,单节点故障不影响系统整体运行;而以集中模式运作的管理节点可能出现的单点故障,就成为整个系统可靠性的短板。

华为FusionInsight HD 产品对所有业务组件的管理节点都提供了类似的双机的机制,包括OMS Server、HDFS NameNode、Hive Server、HBase HMaster、YARN

Resources Manager、Kerberos Server、Ldap Server等,全部采用主备或负荷分担配置,有效避免了单点故障场景对系统可靠性的影响。

异常场景下的可靠性保证

通过可靠性分析方法,梳理软件、硬件异常场景下的处理措施,提升系统的可靠性。

保障意外掉电时的数据可靠性,不论是单节点意外掉电,还是整个集群意外断电,恢复供电后系统能够正常恢复业务,除非硬盘介质损坏,否则关键数据不会丢失。

硬盘亚健康检测和故障处理,对业务不造成实际影响。

自动处理文件系统的故障,自动恢复受影响的业务。

自动处理进程和节点的故障,自动恢复受影响的业务。

自动处理网络故障,自动恢复受影响的业务。

HBase集群异地容灾

HBase集群通过实时异地容灾来提高HBase集群系统的可靠性,是业界第一个实现1000公里以上的大数据集群HBase容灾系统。主备容灾系统之间相互进行健康状态监视和功能切换,当一处系统因意外(如火灾、洪水、地震、人为蓄意破坏等)文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

41

华为FusionInsight HD

技术白皮书 2 重点组件介绍

停止工作时,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。

HBase集群容灾对外还提供了基础的运维工具,包含灾备关系维护、重建、数据校验、数据同步进展查看等功能。

数据备份与恢复

为应对数据丢失或损坏对用户业务造成不利影响,在异常情况下快速恢复系统,FusionInsight HD根据用户业务的需要提供全量备份、增量备份和恢复功能。

自动备份

FusionInsight HD对集群管理系统Manager上的数据提供自动备份功能,根据制定的备份策略可自动备份集群上的数据,包括HBase、OMSServer、LDAPServer、DBService的数据以及ESN编码。

手动备份

在系统进行扩容、升级、打补丁等重大操作前,需要通过手动备份集群管理系统的数据,以便在系统故障时,恢复集群管理系统功能。

为进一步提供系统的可靠性,在将Manager、HBase上的数据备份到第三方服务器时,也需要通过手动备份。

节点可靠性

操作系统健康状态监控

FusionInsight HD针对操作系统提供了如下监控措施:

支持开启硬件看门狗功能。

支持对操作系统内核参数进行微调,在操作系统出现致命异常,如内存耗尽、非法地址访问、内核死锁、调度器失效时,重启操作系统,恢复业务。

周期采集操作系统运行状况数据,包括处理器状态、内存状态、硬盘状态、网络状态等。

进程健康状态监控

FusionInsight HD在各节点上部署了代理进程NodeAgent,负责监控业务实例的状态以及业务实例进程的健康指标信息

硬盘故障的自动处理

FusionInsight HD对开源版本进行了增强,可以监控各节点上的硬盘状态,以及文件系统状态。如果出现异常,立即将相关分区移出存储池;如果硬盘恢复正常(通常是因为用户更换了新硬盘),也会采取措施,将新硬盘重新加入业务运作。这样,极大简化了维护人员的工作,更换故障硬盘可以在线完成;同时,用户可以设置热备盘,从而极大缩减了故障硬盘的修复时间,有利于提高系统的可靠性。

节点RAID组的配置

FusionInsight HD建议按照实际业务需要,合理规划节点的硬盘资源,以提高系统对硬盘故障的抵御能力。

各节点的操作系统,建议安装在两块硬盘做成的RAID1上,以保障系统盘的稳定。

如果条件允许,管理节点关键进程使用的硬盘(如HDFS NameNode、数据库、ZooKeeper等)尽量做成RAID1,以保证元数据的可靠性。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

42

华为FusionInsight HD

技术白皮书

2 重点组件介绍

数据盘(HDFS DataNode、Kafka 、Storm Supervisor、Redis、SolrServerAdmin、SolrServer N)做成NonRaid,如有必须配置Raid的场景(不做Raid系统无法识别磁盘),可做成单盘RAID0(即每个Raid组只有1块硬盘)。

数据可靠性

FusionInsight HD通过对节点硬件(特别是硬盘)、操作系统、进程的监控,及时发现相关部件的异常状况,缩短了对应部件的故障检测时间和修复时间,从而提高了系统整体的数据持久度。

2.23 滚动重启、滚动升级与滚动补丁

滚动重启

滚动重启指当集群中服务或角色实例进行软件更新或配置修改后,在尽可能不中断业务的前提下对相关对象进行的重启操作。

与传统的普通重启(同时重启所有实例)会直接中断业务相比,滚动重启通过针对实例运行特点采用以下不同的滚动重启策略,可保证业务不受中断。但是滚动重启耗时比较长,且对应服务的吞吐量、性能等会受到影响。

各实例滚动重启前后的接口需要保证兼容(包括对内和对外的接口),若跨大版本更新时接口不兼容,则不能使用滚动重启,只能使用普通重启。

主备实例滚动重启策略

对于支持HA的角色(例如HDFS的NameNode),首先滚动重启备实例,然后主动触发一次主备倒换,倒换完成后再重启原来的主实例。

Leader实例滚动重启策略

角色内不同实例区分Leader节点(唯一)和Follower节点(多个),重启某个实例时不会造成服务业务中断。此时将采用逐一重启实例的方式进行重启,其中Leader实例最后重启。

分批并发滚动重启策略

在同一个角色内部,每一个批次并发滚动重启m(m>=1)个实例,以保证对应服务的业务不会中断。该策略适用于实例之间通常不存在功能上的差异的角色。

例如HDFS的Zkfc,一次重启1个Zkfc,业务不会中断,所以可使用分批并发策略,并发值为1。

动态策略

RegionServer滚动重启时,根据RegionServer部署的实例数来设置每个批次的并发数。

机架并发滚动重启策略

角色支持机架感知功能(例如HDFS的DataNode),且角色下的实例归属于2个或2个以上的机架,重启某个机架时不会造成服务业务中断。角色满足上述条件时将依次并发重启每个机架上的所有对应实例。

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

43

华为FusionInsight HD

技术白皮书 2 重点组件介绍

如果每个机架内实例数较多,则按机架策略中配置的最大并发实例数再划分子批次。

滚动升级

滚动升级是一种在线升级方式,在升级过程中,将尽可能的减小服务的中断时间。

支持滚动升级的服务,在滚动升级过程中可以提供全部或部分业务;而不支持滚动升级的服务,在升级过程中服务会中断。相比之前的离线升级方式,滚动升级可以在保证部分服务可用的前提下完成产品版本的升级。

各服务的滚动升级操作及注意事项请参见对应版本的升级指导书。

滚动补丁

滚动补丁是指在不中断或尽可能短的中断集群各个服务业务的前提下完成对集群中单个或多个服务的补丁安装操作。

集群中的服务根据对滚动补丁的支持程度,分为三种:

支持滚动补丁的服务

不支持滚动补丁的服务

部分角色支持滚动补丁的服务

对支持滚动补丁的服务,在安装补丁过程中,服务的全部业务或部分业务(因服务而异,不同服务存在差别)不中断;对不支持滚动补丁的服务,安装补丁过程中服务的业务会中断;对部分角色支持滚动补丁的服务,在安装补丁过程中,服务的部分业务不中断。

滚动补丁的安装操作及注意事项请参见对应版本的补丁安装指导书。

滚动重启对系统的影响

滚动升级和滚动补丁均依赖于滚动重启,滚动重启对系统的影响对于滚动升级和滚动补丁同样适用。

各服务滚动重启时的影响如下表所示,表格中的服务支持滚动重启(KrbServer/LdapServer/DBService为集群内部服务,不在表格体现)。

表2-8 滚动重启服务和实例期间对系统影响清单

服务名称

ZooKeeper

HDFS

不中断业务

滚动重启过程中,ZooKeeper的读写业务正常

由于NameNode节点会主备倒换,导致系统在短暂时间内出现无主现象(主备倒换过渡期),可能会受影响的业务

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

44

华为FusionInsight HD

技术白皮书 2 重点组件介绍

服务名称

不中断业务

出现HDFS服务不可用告警信息,运行的读写任务会抛异常,但是不会中断业务。

受影响的业务

Yarn

滚动升级过程中,由于ResourceManager节点会切主,运行任务会抛异常,但是不会中断业务

滚动重启过程中,HBase的读写业务正常

HBase

HMaster滚动重启过程中,除实时读写(不包括BulkLoad)以外的业务都会受影响。

创建表(create)

创建namespace(create_namespace)

禁用表(disable, diable_all)

重建表(truncate, truncate_preserve)

移动region(move)

下线region(unassign,close_region)

合并region(merge_region)

分裂region(split)

开启balance(balance_switch)

容灾操作(add_peer,remove_peer,enable_table_replication,disable_peer,show_peer_tableCFs,set_peer_tableCFs,enable_peer,disable_table_replication,set_clusterState_active,set_clusterState_standby)

恢复操作(restore)

集群状态查询(status)

在HBase进行滚动重启过程中,不能在Spark中创建或删除Spark on HBase表。

在HBase执行滚动重启过程中,会进行HMaster的主备倒换,在HMaster主备倒换期间,Spark on HBase功能不可用。

如果用户使用了Kafka高级api,则在滚动重启过程中,不能保证Spark读写Kafka不中断,以及数据不丢失。

Spark/Spark2x

除列出的几项限制外,其他业务均不受影响

Kafka

滚动重启过程中,Kafka的读写业务正常

禁止进行增删改topic、partion信息操作

文档版本01 (2019-06-30) 版权所有 © 华为技术有限公司

45

发布评论

评论列表 (0)

  1. 暂无评论