开发者学堂课程【企业运维训练营之大数据 EMR 原理与实践:视频-《E-MapReduce》】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1242/detail/18440
视频-《E-MapReduce》
5.EMR 与开源 Hadoop 对比
(1)成本
阿里云EMR:资源是按量付费的,它支持资源灵活调整。数据这个分层存储资源使用率高,没有额外的软件的License费用
自建的Hadoop集群:需要提前预估资源,并且资源是相对固定的,如果采用了Hadoop发行版,还需要额外的支付License费用。
所以从成本来看,EMR购买比较灵活,整体的成本是更低的。
(2)性能
阿里云的EMR:较开源版本的性能有很大的提升
自建的Hadoop集群:采用了开源社区的版本,性能需要自己去优化。
所以性能方面阿里云的EMR集群比自建的Hadoop集群要好。
(3)易用性
阿里云的EMR:分钟级别能创建和启动Hadoop集群。
自建的Hadoop集群:需要采购服务器,部署Hadoop生态组件,可能周期长达数周。
(4)弹性
阿里云EMR:能根据作业临时的启动和销毁集群,并且能根据业务的周期,还有集群动态负载,动态的调整。
自建的Hadoop集群:它的计算和存储是耦合的,它的资源相对固定,没有办法弹性的调整资源
所以EMR支持弹性扩展,弹性的扩展计算和存储资源。而自建的Hadoop客集群是不支持的。
(5)安全
阿里云EMR:支持企业级的多租户的资源的管理能力,对表列行级别的权限控制和日志审计,并且它支持加密,对数据进行加密
自建的Hadoop集群:它的多租户管理能力需要自行去配置,它的能力是不完善的,没有办法满足企业级的要求
所以安全性方面阿里云的EMR是更好的。
(6)可靠
阿里云的EMR:经过大规模的企业级的环境的检验的,并且随着开源版本升级,也是经过了专业的兼容性验证,它提供了优于社区版本的使用体验。
自建的Hadoop集群:需要自行的去更新,还有升级开源版本的组件,还要验证各个组件各个版本的兼容性,需要自行修复社区的bug。
(7)服务
阿里云的EMR:有专业和资深的大数据专家技术服务团队提供售后支持
自建的Hadoop集群:没有这个服务支持的,Hadoop的发行版也要支持,也要支付额外的费用。
6.EMR 的基本概念
系统性了解这些基本概念后看上图架构图,最下层是节点所在的物理位置以及节点网络相关的概念,分别是地域、可用区、专用网络和交换机。
(1)物理位置以及节点网络相关的概念
拓扑图这几个概念的关系
①最外层是地域
也叫region,地域是指数据中心所在的地理位置,即通常这个按照数据中心所在的城市划分,例如北华北一地域表示这个数据中心所在的城市是青岛,华北二是北京,华东一是杭州,华东二是上海,需要注意的是创建的资源,创建成功后就不能再变成区域
②第二层专业网络
专业网络又叫VPC,是基于阿里云构建的一个隔离的网络环境,专业网络之间在逻辑上是彻底隔离的,在创建集群要提前创建VPC。
③第三层可用区
可用区是指在同一个地域内,电力和网络相互独立的物理区域,可以理解为机房,比如在北京建立了三个机房,分别在朝阳、海淀、昌平。这个北京区域就有三个横区,叫横区A,横B,横区C。
④第四层交换机
交换机是用于集群节点的这个ECS实际通信的,所以交换机它是归属于某个可用区,并且归属到某个ABC网络。最底层是ECS节点,也就是组成EMR集群的服务器节点,ECS节点是部署到交换机下。
(2)架构图介绍
在架构图中第456层都是ECS节点相关的概念。
①第六层CPU、内存、内网带宽
磁盘分为系统盘和数据盘,磁盘它有两种类型
云盘:
云盘它是指一款块存储产品
本地盘:
它是指ECS所在的物理机的本地硬盘设备
本地盘的存储性能和性价比都相对高一点,但是它的数据可靠性是取决于物理机的可靠性的,它存在这个单点故障,所以线上环境还是建议选择云盘。
②第五层实例类型
根据业务的场景和使用场景,ECS实例可以分为多种实例类型,比如通用型、计算型、CPU型、内存型。根据CPU和内存的配置,一种实例类型又能分为多个实例规格。比如EC2G的实例规格的ECS,EC就是一核CPU,2G就是2G内存
③第四层付费的类型
付费类型可能分为按量付费和包年包月
包年包月:
按月购买和续费,它是预付费模式,包年包月的集群到期后才能释放
按量付费:
是按照实际开通的时长进行收费的,它是后付费模式。
上上图右侧的四个,挂载公网、安全组、标签组和资源组
挂载公网:
指集群上是否挂载公网IP,如果挂载公网IP之后,集群可以访问公网,也可以通过公网登录
安全组:
它是一个虚拟的防火墙,它是基于安全组,它可以对某个安全组下的所有的ECS的出方向和入方向进行网络控制,比如要限制192168.0.1这个IP访问的这个节点的八零端口,就可以通过安全组件设置。
标签:
它是由区分大小写的键值对组成,可以基于标签方便的管理和检索资源,比如有两个EMR集群,一个是测试集群,另外一个是生产的集群,可以使用标签来区分。
资源组:
资源组是从业务的角度管理跨地域,跨产品的资源的,就是可以将资源组映射为项目或者是应用或者是组织,比如公司一个阿里云账号下有多个部门在使用,每个部门的资源就能配置到不同的资源组下,这样更方便管理和使用
④第三层是节点类型
EMR的核心是集群,集群是由一个或者多个阿里云的ECS组成的,以Hadoop集群为例,每个ECS上都运行了一些进程,比如namenode、datanode resource和node,每个服务也都是由不同的进程组成的。例如STMS服务,有namenode、datanode,还有三个进程组成。这些所有服务的进程共同组成整个子Hadoop集群,而运行着不同类型进程的节点,它就分为不同的节点类型,节点类型有三类,一个是master,Core节点,还有task节点。
master节点:
它是集群服务、部署、管控等组件的节点,就例如HDMS的namenode,Core节点:
是被主实例节点管理的节点,Core节点上可能会运行Hadoop、HDFS等datanode服务。同时Core节点可能也会部署计算服务来执行计算任务。
task节点:
task节点是专门负责计算的实例节点,它不会保存HDMS的数据,也不会运行Hadoop HDFS的datanode服务,task节点会部署YARN的nodemanager,主要就是用于YARN的计算。
⑤EMR集群类型
目前分为六种
不同的集训类型是安装的核心组件不一样
第一种集群类型是新版的数据糊Data Lake:
是一个灵活的、可靠的、高效的、数据的计算集群,核心组件就是Hive、Spark,适用于数据糊场景、离线数据分析等场景。
第二个集群类型是数据分析OLAP:
OLAP核心组件是clickhouse和starRocks,clickhouse是一个开源的面向列式存储的一个OLAP的分析引擎,starRocks是开源的一个MPP架构的OLAP分析引擎,两者都提供了这个极致性能的数据分析功能,适用于数据分析的场景。
第三种集群类型是实时的数据流dataFlow:
适合实时数据流的场景,它的核心组件就是flink,flink企业版的引擎的性能是开源的flink的两到三倍,其中它的Kafka的组件提供了一套完整的服务监控体系,还有元数据的管理体系,这种集群类型可以广泛的应用于日志的收集还有监控数据的聚合这些场景。并且它支持流式数据处理,还有实时数据分析。
第四种集群类型是数据服务dataServing:
是阿里云EMR提供基于Apache Hbase的数据服务机器类型,它的核心组件是Hbase。Hbase是一个高可靠的、高性能,面向列的一个可伸缩的分布式数据系统
第五种集群类型是机器学习:
提供hive和Spark离线的大数据ETL和TensorFlow的模型训练,它提供了分布式的深度学习框架支持,提供了200多经典的机器学习算法包,还有十多种深度学习算法。覆盖了推荐还有广告等场景,这种集群类型主要是面向大数据+AI的场景
第六种集群类型是数据湖类型:
目前支持Hadoop、Zookeeper、Presto类型,Hadoop集群提供最丰富的这个开源的组件列表,完全兼容Hadoop生态,可应用到数据的离线处理,实时处理,还有交互式的交互式查询等多种使用场景,Zookeeper集群是提供适用于大规模的Hadoop集群,Hbase集群,Kafka集群,适用于独立的分布式一次性锁服务,Presto集群是基于内存的一个分布式的SQL的交互式查询引擎,它支持多种数据源,适合PB级级别的海量数据的复杂的分析,以及跨数据源的产生场景。
自定义集群:
除了这六种还有一种是自定义集群,自定义集群提供了丰富的服务搭配,可以按照自己的需要,自行的安装服务组件。
⑥第一层是服务组件
可能之前提到的HDFS、Hive、Spark这些都是服务组件。在创建集群的时候会选,有一些必选的组件,还有一些可选的组件,在第二节课会对一些重点的服务组件进行详细的介绍。
(3)元数据
①元数据概念
元数据是指hive等服务的元数据。
在安装hive服务时,是需要在hive的配置文件中配置原数据相关的信息,与传统的关系型数据库不同的是,hive表中的数据其实是存储保存在HDFS上,即hive的数据库表分区都可以在HDFS上找到对应的文件,所以需要记录hive的数据库表分区和HDFS文件的一个对应关系,可以理解为这个对应关系都是元数据。
②元数据类型
目前元数据支持三种存储方式,分别是内置MYSQL,自建的RDS,还有DLF统一元数据。
第一种是内置MYSQL:
MYSQL的service实例是部署在EMR集群中的,通常是在master节点,hive、Spark等去访问元数据的时候,其实也不是直接访问MYSQL,而是先访问HiveMetastore服务,服务再通过JDBC访问集群的MYSQL。这种方式的优点是部署简单,但是也有风险,因为这个MYSQL数据库是部署在集群的一个节点中,不能保证服务的高可用,所以这种方式只建议在测试场景使用。
第二种是自建的RDS:
元数据就存储在RDS中。自建的RDS的这种元数据类型和内置的MYSQL类型在架构上是一致的,区别就是由本地放到了云的RDS MYSQL中。第三种是DLF统一元数据:
这种方式是将元数据存储到数据湖DLF中,数据湖DLF是阿里云数据湖构建产品,它是一款云服务,这种元数据的存储方式,比自建的RDS,还有内置的MYSQL最大的区别是HiveMetastore服务,不用再部署在EMR集群上了,而是将这个元数据的查询服务,还有存储服务都托管到了这个DLF上,hive、SparkS、这些引擎去通过HTDP协议访问DLF就可以了。