前置技能
学习本课程同学们需要:
熟练SQL的使用
掌握传统数仓开发模式,理解数仓分层、星型模型、事实表、维度表等传统数仓开发的概念
了解ETL的基本概念
懂得Scala语言、了解Spark
对云平台有一定的了解(阿里云、亚马逊、微软云等均可)
虽然课程中也会对云平台做简单的介绍,但是除了课程主线所需要的云服务外,其它云服务不会花太多的篇幅进行详细讲解。
随着云计算概念的不断落地和推广, 目前云平台已经得到了非常广泛的使用.
云平台帮助用户在:
等方面获得比传统方式更高效, 更节省, 更稳定, 更方便的优势.
云平台
也称云计算平台
. 云计算, 顾名思义, 就是将计算在云上运行.
那么在这里面的3个概念
我们可以这样理解: 云平台 就是 一个云上的平台, 为用户提供各种各样的 远程
服务
现在有一个 人力外包中心, 其内部有非常多的人力资源可供客户购买使用.
那么有一个客户, 从人力资源外包公司, 花钱雇10个人干活, 发现效率不行又雇了100个一起干活, 最终活儿按时完成.
那么, 上述例子就是对云平台的一种模拟.
人力资源中心
提供的是服务, 提供的是资源, 客户只需要按量购买即可.
在例子中, 客户如果不使用人力资源中心
就需要自己招聘相应的员工, 签订劳务合同, 让自己的员工去为自己服务.
但是, 如果需求结束了, 员工又不能随意辞退, 那么这些员工就相当于资源闲置了.
而人力资源中心
就是提供了 资源
供客户使用, 按需求 按用量付费即可, 用完即停止. 对客户来说资源
没有闲置.
PS: 现在很多软件人力外包, 就是这样的思路.
很多甲方公司, 不愿意招聘正式员工, 仅仅某个项目需求人手, 就从外包公司招人来做, 项目完成, 人员也就遣返回外包公司了. 甲方按人数和时间给外包公司付款.
回到计算机的世界中
云平台提供的就是 计算的资源.
那么计算的资源主要有:
服务器
交换机
磁盘
GPU
等硬件资源软件工具
如域名服务
虚拟内网
数据库软件
等.云平台为客户提供了 一站式的解决方案.
客户可以没有任何一台服务器 同样可以搭建起来自己的业务.
通俗的理解, 使用了云平台之后, 客户就不需要自行搭建机房了, 不需要自购服务器了.
服务器等硬件资源 从云平台购买使用即可.
并且因为云平台上的资源是很多的, 如果客户觉得资源不足, 可以追加购买. 如果觉得资源过多, 可以减少购买. 灵活方便.
毕竟, 自建机房成本很高, 并且服务器等硬件购买是一次性.
买回来发现用不到,造成资源的闲置 也是无可避免.
特别是某些业务突增的需求, 导致资源紧张, 临时加了N台服务器.
等到业务下降的时候, 这么多追加的服务器的资源就闲置了.
消费者还能在
闲鱼
让闲置游起来. 但是服务器领域…就算也能各种二手倒腾, 在机房频繁的上架下架 也是很繁琐的. 特别是运维同学, 估计要打人…
云平台主要有 2大类, 分别是:
私有云平台, 简称私有云
顾名思义就是私人的云平台, 一般是企业自行搭建, 提供给企业内部去使用.
如, 各个业务部门 或者各个项目组作为客户, 从平台上购买资源,或者申请资源去使用,费用一般企业内部结算。
是一种提高企业内 资源利用率的手段,同时,基于云平台上提供的各种服务,也方便企业内部的开发。
但对于企业本身来说, 其硬件资源是自行组建的.(如 自建机房 自购服务器等)
公有云平台就是提供给大众使用的云平台.
任何人 或者任何企业 均可以在公有云平台内去 购买 申请 相应的资源.
对于公有云平台的提供商来说, 其本身的硬件资源是自行组建的(如自建机房, 自购服务器, 搭建数据中心)
本次课程, 主要给大家讲解公有云平台.
提供公有云服务的平台有许多, 我们来列举一下(顺序不代表排名):
苹果
带领手机的发展方向一样, AWS
目前处于引领云平台发展方向的地位.那么我<们再来了解一下PaaS SaaS IaaS
Infrastructure as a Service
: 基础设施即服务, 是指把IT基础设施作为服务提供
Platform as a Service
: 平台即服务.是指将平台作为一种服务对外提供. 那么我们要学习的云平台, 就是一种PaaS
服务. 其他还有如
腾讯地图开发平台
Software as a Service
: 软件即服务, 是指将软件作为一种服务对外提供.
那么我们理解, 阿里云是一个PaaS
平台, 提供IaaS
和 SaaS
服务.
AWS(Amazon web service) - 亚马逊公司旗下云计算服务平台,为全世界各个国家和地区的客户提供一整套基础设施和云解决方案。AWS面向用户提供包括弹性计算、存储、数据库、物联网在内的一整套云计算服务,帮助企业降低IT投入和维护成本,轻松上云。
通俗的说,就是:AWS是亚马逊公司提供的一款 公有云计算平台,提供:IaaS
、PaaS
、SaaS
的各项服务,帮助企业快速构建业务。
我们来看一下,AWS之上常见的服务
EC2(Elastic cloud compute),弹性云计算,是AWS提供的一款IaaS
层的服务,其本质是提供的一系列的云上虚拟服务器的解决方案。
Amazon EC2 提供以下功能:
实例
Amazon 系统映像 (AMI)
,其中包含您的服务器需要的程序包(包括操作系统和其他软件)。实例类型
密钥对
的实例的安全登录信息(AWS 存储公有密钥,您在安全位置存储私有密钥)实例存储卷
Amazon EBS 卷
。EC2在计费上有3中类型的实例可选:
按需实例
按照小时计费,根据使用时间的多少进行付费。
优点:
缺点:
预留实例
预留实例就是预购买的实例。
可以按照1年、3年、5年的时长一次性购买对应时间的服务器使用权。
优点:
缺点:
Spot实例
Spot是指竞价实例。
在AWS中会有一堆实例的资源池,这些资源池里面的实例价格是浮动的。
你可以购买这些实例按照按需的方式使用付费。并在购买的时候给定你所能接受的最高出价。
如果浮动价格超过了你所能给的最高价格,这些实例将会被AWS回收。如果在你给定的最高出价内,你可以一直持有这些实例。
优点:
确定:
不稳定,适合在大规模计算集群任务的时候进行购买。
比如,要计算一个很大规模的Spark任务,可以购买一批Spot实例使用。
用便宜的价格得到想要的算力。就算因出价限制被回收,只要不超过一定数量不影响整个任务的继续执行。
你可以配置Spot和正常服务器的比例来确保哪怕Spot被全部回收也不影响业务。
简单来说,EC2就是AWS上的虚拟机服务器,根据你的需要去购买使用。
Amazon Virtual Private Cloud (Amazon VPC) 允许您在已定义的虚拟网络内启动 AWS 资源。这个虚拟网络与您在数据中心中运行的传统网络极其相似,并会为您提供使用 AWS 的可扩展基础设施的优势。
通俗来说,就是在AWS云平台内,为你创建一个虚拟的局域网环境,你的所有AWS资源均可定义在这个VPC内,从而实现和其它资源的隔离,以及实现VPC内高速网络带宽的访问。
简单来说,VPC就是云上的私有内网。你可以创建一个虚拟内网,将你所需的服务放入这个虚拟内网(局域网)内。让服务之间均是内网访问的状态。
Direct Connect是一款专线服务,可以提供 直通AWS云的专线服务。
日常和云服务的通讯是走公网的,日常开发没有影响,不过如果有大量本地内容要和云服务进行通讯,那么传输效率就会受到公网带宽的限制。
Direct Connect就可以帮助公司摆脱这种限制,享受直达云服务的服务。
简单来说,这个服务就是拉专线到AWS数据中心。
让你可以直连到你在云上的服务。
S3 是一种面向 Internet 的存储服务。您可以通过 Amazon S3 随时在 Web 上的任何位置存储和检索的任意大小的数据。您可以使用 AWS 管理控制台简单而直观的 web 界面来完成这些任务。
通俗的说,S3就是AWS提供的一款 分布式的对象存储服务。可以认为S3是AWS云上的HDFS。
我们可以将其当做是一个云上的私有网盘存储。
可以帮助我们存储公司内的业务数据,并支持各种编程语言对其进行开发
简单来说,就是云上的HDFS、或者网盘。
可以存储数据,同时S3支持编程开发,可以使用许多编程语言操作S3.
AWS Deep Learning AMI 可以为机器学习专业人员和研究人员提供基础设施和各种工具,从而加速云中任意规模的深度学习进程。您可以在 Amazon Linux 或 Ubuntu(预先安装了流行的深度学习框架)上快速启动 Amazon EC2 实例。框架示例包括 Apache MXNet 和 Gluon、TensorFlow、Microsoft Cognitive Toolkit (CNTK)、Caffe、Caffe2、Theano、Torch 和 Keras。您可以使用这些框架训练复杂的自定义 AI 模型、试验新算法或学习新技能和技术。
AWS Cloud Watch 是一个统一的指标收集、监控、报警等功能一体的监控处理平台。
全部AWS服务均可无缝对接CloudWatch(系统内置功能),所有服务均可从CloudWatch上进行指标查看、报警配置等。
对于自定义需求,CloudWatch也支持SDK进行定制开发。
简单的说,它就是云上的zabbix,所有的aws服务可以自动发送关键指标到CloudWatch内。
然后你可以在CloudWatch内查看这些指标,并绘制成图表。
CloudWatchLog是AWS提供的统一日志收集处理平台,所有的AWS服务均内置将重要日志写入CloudWatchLog进行集中存储的功能。
同时你可以通过SDK来管理自定义的日志。
在SaaS层面,AWS提供的服务就非常的多了。
从软件开发的全周期、到业务部署的全流程,从数据处理的管道工具、到分析处理的各种框架
等等,AWS提供了各种各样的软件工具服务,来帮助企业完成业务架构。
RDS全称:Amazon Relational Database Service
是一种 Web 服务,可让用户更轻松地在云中设置、操作和扩展关系数据库。
同时,RDS也是一款Server Less(无服务器化、全托管)
的服务,也就是,不需要准备服务器,只需要鼠标点击几下即可在云上得到一款可用的数据库。
用户只需要通过网络连接到数据库就可开展业务开发和应用。
同时,关于数据库的维护、高可用、异常处理等均无需用户管理,这些交由AWS进行管理
简单来说就是在云上创建关系型数据库,然后通过网络连接使用。
DynamoDB是AWS提供的一款KV型、列式存储的NoSQL数据库。
它也是一款Server Less的服务,用户只需要通过web页面简单的配置,即可得到一款可用的DynamoDB数据库。
通过网络连接到DynamoDB之上,即可进行业务的开发和构建。
DynamoDB 的架构和HBase有一定的相识度,它继续分区键来确定数据分区,基于排序键来确定数据排序
同时支持二级索引,可以为一个DynamoDB表增加最多5个二级索引来加速检索。
Amazon Redshift 是一种快速、完全托管的 PB 级数据仓库服务,它使得用现有商业智能工具对您的所有数据进行高效分析变得简单而实惠。它为从几百 GB 到 1PB 或更大的数据集而优化,且每年每 TB 花费不到 1 000 USD,为最传统数据仓库存储解决方案成本的十分之一。
Redshift是AWS提供的一款:快速、大容量、分布式、完全托管(非Server Less)
的PB级数据仓库服务。
Redshift底层基于Postgresql
而构造,可以认为是一款分布式的Postgresql
数据库,并且Redshift为数仓应用进行了单独的优化,完全适合作为公司内的PB级的大型数仓来使用。
同时,在市面上,Redshift很受欢迎,许多数仓的生态都加入了Redshift的支持,比如常见的BI领域,许多BI工具都可以直接对Redshift进行BI分析。如:Tableau、PowerBI等。
Redshift将是我们课程的一个重点,在后面我们会详细的去学习Redshift的相关内容。
Glue是AWS提供的一款ETl工具,可以帮助企业快速构建ETL应用。
AWS Glue 包括:
AWS Glue Data Catalog
的中央数据存储库(元数据管理)Server Less
服务,因此无需设置或管理基础设施。AWS Glue 同样是本次课程的重点,我们将在后面详细学习。
EMR 是AWS提供的Hadoop平台,可以帮助我们一键构建Hadoop集群,并自动提交Spark、MR等计算任务。
我们可以控制EMR实现:
Kinesis是AWS提供的一款完全托管的实时计算服务,同时也可以作为消息队列进行使用。
AWS上的服务有很多,我们就不一一介绍了,感兴趣的同学可参考AWS官网(中国):https://www.amazonaws.cn
AWS中国区域账户目前只允许公司注册,个人注册可以去:https://aws.amazon.com ,注册全球账户。(全球账户需国际信用卡才能注册)
AWS (全球账户)长期有12月免费体验套餐,个人体验和学习基本够用。
如图,AWS提供了很多的服务,无论是传统的企业开发或者大数据开发或者机器学习平台等等,均能得到良好的支持。
常见的大数据架构可以:
一系列的服务,满足了我们在大数据领域各种各样的需求,并提高了企业开发效率。