面试基本知识:
(大数据基本知识、数据分析)、(数据库和SQL语言)、(大数据技术的相关概念、技术特点、应用场景、以及常用处理框架)。
可以分为上述3个模块分析。
一、数据分析和大数据基本知识
1.1数据分析
数据分析离不开数据。百科对数据(data)的定义:是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材。
超市买东西 => 订单,订单会包含很多信息 => 购买人、购买商品、商品数量以及付款总价格。
数据分析是指用适当的统计分析方法对收集来的数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。
网站 => 数据分析 => 目前有多少会员,每个会员每天浏览时间、浏览次数、留存率等等。
电商平台 => 数据分析 => 运营数据 => 销售了多少笔订单,每个订单平均单价,总价是多少,一天收入与支出情况。
物流分析 => 每天全国发送多少个快递,目前运往各省份的物流量,丢件率。
1.2数据分析的作用
① 现状分析(分析当下的数据),简单来说就是告诉你当前的状况 => 实时预测 => Flink
② 原因分析(分析过去的数据),简单来说就是告诉你某一现状为什么发生 => FineBI 毛利率下降 => 离线
③ 预测分析(结合数据预测未来),简单来说就是告诉你将来会发生什么
举个栗子:啤酒和纸尿裤案例 => 数据分析
某国外超市(沃尔玛) => 大数据分析平台 => 奇怪现象 => 啤酒和纸尿裤销量,呈现正向增长。
平台分析得到结果 => 国外家庭,主妇吩咐丈夫去超市带一些纸尿裤。
离线分析、实时分析、预测分析(人工智能)
1.3数据分析的步骤
明确分析目的和内容 => 数据采集 => 数据处理 => 数据分析 => 数据展现 => 编写报告
1.3.1 明确数据分析目的和内容
简单来说就是先分析什么,后分析什么,使得各个分析点之间具有逻辑联系。
1.3.2数据采集
一般数据来源主要有以下几种方式:数据库、公开出版物、互联网(数据爬虫)、市场调查。
1.3.3数据处理
数据处理是指对收集到的数据进行加工整理,形成适合数据分析的样式,它是数据分析前必不可少的阶段。
数据处理的基本目的是从大量的、杂乱无章、难以理解的数据中,抽取并推导出对解决问题有价值、有意义的数据。
数据处理主要包括==数据清洗、数据转化、数据提取、数据计算==等处理方法。
数据处理是数据分析的基础。通过数据处理,将收集到的原始数据转换为可以分析的形式,并且保证数据的一致性和有效性。
1.3.4数据分析
数据分析是指用适当的分析方法及工具,对处理过的数据进行分析,提取有价值的信息,形成有效结论的过程。
数据挖掘其实是一种高级的数据分析方法,就是从大量的数据中挖掘出有用的信息,它是根据用户的特定要求,从浩如烟海的数据中找出所需的信息,以满足用户的特定需求。
数据挖掘技术是人们长期对数据库技术进行研究和开发的结果。
一般来说,数据挖掘侧重解决四类数据分析问题:分类、聚类、关联和预测,重点在寻找模式和规律。数据分析与数据挖掘的本质是一样的,都是从数据里面发现关于业务的知识。
1.3.5数据展现
一般情况下,数据是通过表格和图形的方式来呈现的,我们常说用图表说话就是这个意思。
pyecharts、FineBI、Tableau专业的可视化工具
1.3.6编写报告
数据分析报告其实是对整个数据分析过程的一个总结与呈现。
一份好的数据分析报告,首先需要有一个好的分析框架,并且图文并茂,层次明晰,能够让阅读者一目了然。
另外,数据分析报告需要有明确的结论。
最后,好的分析报告一定要有建议或解决方案。
1.4大数据的基本概念
最早提出“大数据”时代到来的是全球知名咨询公司==麦肯锡==,麦肯锡称:“数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。”
进入2012年,大数据(big data)一词越来越多地被提及,人们用它来描述和定义信息爆炸时代产生的海量数据,并命名与之相关的技术发展与创新。
CCTV纪录片《大数据时代》,是国内首部大数据产业题材纪录片,节目细致而生动地讲述了大数据技术在政府治理、民生服务、数据安全、工业转型、未来生活等方面给我们带来的改变和影响。
1.5大数据面临的挑战
硬盘比较小的,512GB、1TB、2TB,个人计算机最大极限!
公开数据显示,互联网搜索巨头百度2013年拥有数据量接近EB级别。阿里、腾讯都声明自己存储的数据总量都达到了百PB以上。
电信、医疗、金融、公共安全、交通、气象等各个方面保存的数据量也都达到数十或者上百PB级别。全球数据量以每两年翻倍的速度增长,在2010年已经正式进入ZB时代,2020年全球数据总量达到44ZB。
面对上述叙述,面临着下面两个问题:
① 海量数据如何存储
② 海量数量的分析问题
1.6大数据的5V特点
数据量大(大容量)、数据多样性(多类型)、 价值密度低(低密度)、数据的速度(速度)快、数据质量(准确性)准确
1.7大数据的应用
电商方面:精准广告位,通过对用户的浏览行为,点击行为等进行大数据采集,分析,挖掘用户的二层三层喜欢,扩大产出。
传媒方面:猜你喜欢,通过对受众人群机型大数据分析,结合对应算法,对受众喜欢的进行交互推荐。
金融方面:理财投资,通过对个人的信用评估,风险承担能力评估,集合众多理财产品、推荐响应的投资理财产品。=》金融风控(了解偿还能力、有无贷款、工资多少、征信、家庭情况、身体情况)=> 风控系统
交通方面:目前,交通的大数据应用主要在两个方面:一方面通过对车流量等海量数据的收集,估算,预测该路段一定时间内的车流量情况,给用户提供便利,合理进行道路规划;另一方面可以利用大数据来实现即时信号灯调度,提高已有线路通行能力。
电信方面:智慧营业厅,通过对用户当前的行为习惯、偏好,节假日的相应数据变化,调节自身业务结构,做到按需分配。
安防方面:人脸识别,通过人脸识别,匹配,存储用户数据,结合人工智能,分析及甄别用户行为,预防犯罪行为发生。
医疗方面:智慧医疗,通过对海量病例大数据的存储,匹配、检索、结合用户的饮食、行为等习惯,搭建智慧医疗体系。
二、数据库和SQL语言
(略)时间不够写
三、大数据技术的相关概念
3.1大数据技术的相关概念
3.1.1大数据分布式技术(架构)
常见的架构有两大类:① 单机架构 ② 分布式架构(多台计算机串联在一起共同对外提供服务)。
单机:配置、存储能力、计算能力都是有限的。用牛耕地 => 1头牛,每天耕1亩地(买更强壮
的牛,1.2亩地),但是这种升级有限制的。
分布式架构 => 多头牛
分布式应用和服务:
将应用和服务进行分层和分割,然后将应用和服务模块进行分布式部署。
这样做不仅可以提高并发访问能力、减少数据库连接和资源消耗,还能使不同应用复用共同的服务,使业务易于扩展。比如:分布式服务框架Dubbo。
分布式数据存储:
HDFS不仅可以分散存储数据,还支持副本机制 => 1份数据冗余存储多份(3份)。
大型网站常常需要处理海量数据,单台计算机往往无法提供足够的内存空间,可以对这些数
据进行分布式存储。比如Apache Hadoop HDFS。
分布式计算 :
MapReduce 分布式计算,分布式计算将该应用分解成许多小的部分,分配给多台计算机进行
处理。这样可以节约整体计算时间,大大提高计算效率。比如Apache Hadoop MapReduce。
3.1.2分布式架构与集群架构
分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。
多台计算机做不同的工作,但是对外作为一个整体,提供统一的服务。
集群(cluster)是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。
多台计算机做相同的工作,对外作为一个整体,提供统一的服务。
3.2大数据技术的技术特点
3.2.1zookeep
3.2.1.1zookeep概述
ZooKeeper是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性问题。
要求数量:2n + 1(奇数),n必须大于等于1,涉及到选举机制。
3.2.1.2zookeep应用场景
配置中心(配置信息一致性 => Zookeeper分布式协调服务以外,还是一个小文件存储系统)
负载均衡(Nginx软件 )
高可用(主要作用)
实时数据存储(Kafka,其数据块就可以使用Zookeeper实现。主要作用)
3.2.1.3zookeeper本质
ZooKeeper本质上是一个分布式的小文件存储系统。
提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。
从而用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于
数据的集群管理。
ZK是一个分布式的小文件存储系统 => 分布式、小文件
① Zookeeper往往都是以分布式集群的模式部署的,Zookeeper因为涉及到选举机制,建议采用奇数个机器。
② 小文件存储系统,也就是说,ZK主要用于小数据(实时数据、做Hadoop高可用)
ZooKeeper是一个小文件存储系统,其每个节点存储的==最大数据不能超过1M==。
1M = 1024KB
1KB = 1024B(字节)
1个字节,在英文状态下,相当于一个字符 => (数字、字母、符号)
3.2.1.4zookeeper特性
①全局数据一致:集群中每个服务器保存一份相同的数据副本,client无论连接到哪个服务
器,展示的数据都是一致的,这是最重要的特征;
② 可靠性:如果消息被其中一台服务器接受,那么将被所有的服务器接受。
③ 顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发
布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个
发送者发布,a必将排在b前面。
④ 数据更新原子性:一次数据更新要么成功(半数以上节点成功),要么失败,不存在中间状态;
假设一共有5个ZK节点,如果我们更新了一条数据(主服务器) => 同步到其他服务器,必须要保
证3台机器全部同步成功,则最终这条数据才认为更新成功。 => ==事务处理要遵循:过半原则==
⑤ 实时性:ZooKeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息或者服务器失效的信息。
3.2.1.5ZooKeeper集群角色
① Leader
ZooKeeper集群工作的核心
事务请求(写操作)的==唯一调度和处理者==,保证集群事务处理的顺序性;
集群内部各个服务器的调度者。
对于create,setData,delete等有写操作的请求,则需要统一转发给leader处理,leader需要
决定编号、执行操作,这个过程称为一个事务。
② Follower
处理客户端非事务(读操作)请求,转发事务请求给Leader;
参与集群Leader选举投票。
此外,针对访问量比较大的ZooKeeper集群,还可新增观察者角色。
③ Observer
观察者角色,观察ZooKeeper集群的最新状态变化并将这些状态同步过来,其对于非事务请
求可以进行独立处理,对于事务请求,则会转发给Leader服务器进行处理。
不会参与任何形式的投票只提供非事务服务,通常用于在不影响集群事务处理能力的前提下
提升集群的非事务处理能力。
3.2.1.6选举机制
① myid代表服务器编号,搭建时人为指定的,每一个台服务器的myid编号都是唯一的
② zxid代表全局事务编号,Zookeeper底层源代码自动封装好的一个变量,每次对服务器进行
增、删、改操作时,此编号都会进行+1操作,所以将来我们可以通过zxid编号来区分数据的同步情
况(新旧)。
如何实现ZK选举机制,选出Leader领导者
第一种情况:首次启动,目前集群中没有产生过leader领导者
1、由于所有服务器都是按顺序启动的,所以先启动第1台服务器,然后开始第一轮投票,但
是由于只有一个节点,只能自己投票给自己,然后进行广播告诉其他服务器自己的票数,但是由于
只有1台机器 < zk集群节点数的一半(没有过半),则第1轮投票失败。等待第2台机器启动进行第
2轮投票,则此服务器状态为looking状态。
2、第2台服务器启动,则整个集群中一共有两个节点,首先,各个节点针对自己进行投票,
然后进行广播操作。在广播过程中发现,第1个节点的myid编号 < 第2个节点的myid编号,则按大
小排序,第1个节点会把自己的1张票投给myid=2的节点,则此时myid=2的节点拥有2张票,然后
对外进行广播。但是由于目前票数 < zk集群节点数的一半,则第2轮投票失败。等待第3台机器启
动继续进行第3轮投票,则此时myid=1和myid=2的机器也处于looking状态
3、当第3台服务器启动,则整个zk集群一共三个节点,首先,自己给自己投票,然后进行广
播操作。但是广播后发现,集群中myid=3的节点拥有的编号最大,所以前2台机器把投票都投递给
myid=3的节点,由于票数超过了zk集群节点数的一半,则选举成功,myid=3的节点,成为整个集
群的leader,其他两台服务器状态,更改为following,角色也立即更换为follower。
4、当第4台机器启动时,也会投票给自己,然后进行广播,但是广播过程中,发现集群已经
有一个leader角色,则自己只能充当follower,其他机器类似。
第二种情况:已经产生过leader领导的集群,重新进行选举
如果是某台服务器网络故障或者网络波动,导致无法与Leader进行通信,则发起新一轮投
票,首先投票给自己,然后进行广播,但是在广播过程中已经发现集群中已经存在leader的情况,
则重新同步即可。
如果集群中的Leader的确因为宕机等情况,导致集群中没有Leader角色了。此时要重新选
举,除了参考myid编号以外,还要参考zxid事务ID编号。在选举过程中,如果zxid不同,则哪个
大,选择哪个成为Leader。如果zxid值相同,则哪个服务器的myid编号最大,则优先成为Leader。
3.2.2Hadoop
3.2.2.1Hadoop概述
Hadoop是Apache旗下的一个用java语言实现开源软件框架,是一个开发和运行处理大规模数
据的软件平台。允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理。
Hadoop基于Java实现 => JDK
Hadoop属于Apache基金会(ASF)下的一个开源框架 => 开源 + 免费
Hadoop主要是对大数据集(数据量比较大 => 适合处理GB级别以上数据集)进行分布式(多台机器)处理。
① 狭义上说,Hadoop指Apache这款开源框架,它的核心组件有:
HDFS(分布式文件系统):解决海量数据存储==
YARN(作业调度和集群资源管理的框架):解决资源任务调度==
MAPREDUCE(分布式运算编程框架):解决海量数据计算==
Map :分,把大数据分解为多个部分,每个部分单独计算
Reduce:合,把每一个Map计算的结果进行合并汇总得出最终计算结论
② 广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。
当下的Hadoop已经成长为一个庞大的体系,随着生态系统的成长,新出现的项目越来越多
,其中不乏一些非Apache主管的项目,这些项目对HADOOP是很好的补充或者更高层的抽象。
3.2.2.2Hadoop起源
Hadoop是Apache Lucene创始人 ==Doug Cutting (道格·卡丁)==创建的。最早起源于
Nutch(搜索引擎),它是Lucene的子项目。Nutch的设计目标是构建一个大型的全网搜索引擎,
包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题:如
何解决数十亿网页的存储和索引问题。
谷歌的三篇文章(重要)
2003年Google发表了一篇论文为该问题提供了可行的解决方案。论文中描述的是谷歌的产品
架构,该架构称为:谷歌分布式文件系统(GFS),可以解决他们在网页爬取和索引过程中产生的
超大文件的存储需求。Hadoop => HDFS产生 => 海量数据存储
2004年 Google发表论文向全世界介绍了谷歌版的MapReduce系统。
同时期,Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为
独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目,迎来了它的快速发展期。
2006年Google发表了论文是关于BigTable的,这促使了后来的Hbase的发展。
因此,Hadoop及其生态圈的发展离不开Google的贡献。
3.2.2.3Hadoop特性
① 扩容能力(Scalable)
Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计的节点中。
② 成本低(Economical)
Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低。
③ 高效率(Efficient)
通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。
④ 可靠性(Rellable)
能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。所
以Hadoop的按位存储和处理数据的能力值得人们信赖。
副本机制 => 1TB => HDFS有副本机制(默认3副本机制,一个数据会冗余3份)
Hadoop特点:① 扩容能力强 ② 成本低 ③ 高效 ④ 可靠性
Hadoop支持随机读(并行读),串行写。读块写慢。
3.2.2.4Hadoop应用
互联网行业
国外来说,Yahoo、Facebook、IBM等公司都大量使用Hadoop集群来支撑业务。比如:
Yahoo的Hadoop应用在支持广告系统、用户行为分析、支持Web搜索等。
Facebook主要使用Hadoop存储内部日志与多维数据,并以此作为报告、分析和机器学习的数据源。
国内来说,BAT、美团、JD、滴滴、字节跳动领头的互联网公司是当仁不让的Hadoop使用
者、维护者。比如Ali云梯(14年国内最大Hadoop集群)、百度的日志分析平台、推荐引擎系统
等。
非互联网行业
金融行业: 个人征信分析
证券行业: 投资模型分析
交通行业: 车辆、路况监控分析
电信行业: 用户上网行为分析
3.2.3Hdfs
3.2.3.1Hdfs(Hadoop Distribute File System Hadoop分布式文件系统)概述
专业版:相当于把多个机器的磁盘给打通,然后对外提供统一的访问端口,从而实现跨机存储。HDFS存储数据的时候,会对文件进行切块(Block数据块)。数据块并不是一起上传的,而是一个一个上传的(串行写)。
3.2.3.2Hdfs(Hadoop Distribute File System Hadoop分布式文件系统)特性
1.无限扩展支撑海量数据存储(横向扩容)
2. 元数据存储整个集群的文件信息,每个文件Block块存储的位置,快速定位文件位置遍历查找
3.高效读写,提升对大文件的读写速度
4.冗余存储保障数据安全(缺点:需要占用更多空间,优点:某个机器出现故障对于整个集群
没有任何影响)
5.HDFS采用master/slave架构。一般一个HDFS集群是有一个Namenode和一定数目Datanode
组成。Namenode是HDFS集群主节点,Datanode是HDFS集群从节点,两种角色各司其职,共同
协调完成分布式的文件存储服务。
6.HDFS中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定,默认大小在hadoop2.x版本中是128M。
7.HDFS支持传统的层次型文件组织结构(树状结构)。用户或者应用程序可以创建目录,然后
将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以
创建、删除、移动或重命名文件。Namenode负责维护文件系统的名字空间,任何对文件系统名字
空间或属性的修改都将被Namenode记录下来。HDFS会给客户端提供一个统一的抽象目录树,客
户端通过路径来访问文件。
8.目录结构及文件分块位置信息叫做元数据。Namenode负责维护整个hdfs文件系统的目录
树结构,以及每一个文件所对应的block块信息(block的id,及所在的datanode服务器)。
NameNode不负责实际数据的存储,其只负责元数据的存储,每个文件大约在内存中占用150B的
存储空间。
9.Datanode数据存储,文件的各个block的具体存储管理由datanode节点承担。每一个block都可
以在多个datanode上。Datanode需要定时向Namenode汇报自己持有的block信息。
10.namenode与datanode心跳机制建立连接:
了解namenode运行状态
即datanode要定时(3秒)给namenode发送自己的心跳消息,这样做的目的是:
namenode知道datanode还活着,如果超时(如果某一次心跳数据没有接收,datanode还会频繁发送,发送10次=>30s)未,如果30s后namenode还未接收到datanode发送过来的心跳信息,namenode会认为datanode进入到“假死”的状态。如果超过最大间隔时间(10分钟)还未收到datanode发送心跳消息,则认为该datanode宕机了。10分钟 + 30s
当检测到某个datanode宕机后,namenode会将该datanode存储的所有数据重新找新机器(活跃的)备份。
汇报机制:
因为元数据之块信息时存储在到namenode的内存中的,当HDFS集群重新启动的时候,所有的datanode都要向namenode回报自己的块信息。
当集群在正常工作的时候,间隔一定的时间(6小时),datanode也会向namenode汇报一次自己的块信息。
namenode: block-1 node1/node2/node3
集群重启 => 每一个datanode会重新汇报自己的节点信息,每个datanode重启也会主动汇报自己保存的文件块信息
正常运行 => 每6个小时,也会重新汇报一份
一个NameNode带了多个DataNode节点,这时就会产生一个问题:如何保障每个DataNode都处于工作状态。
11.负载均衡机制:
即让集群中所有的节点(服务器)的==利用率及副本数==尽量都保持一致或者在同一个水平线上。
12.副本机制
为了容错,文件的所有block都会有副本。每个文件的block大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。在HDFS集群中,每个数据块都会有三个副本(可调整),虽然浪费了存储空间,但是其主要是用于保护数据,起到容错的效果。
根据机架感知原理 + 网络拓扑结构
实现副本摆放。
第1副本:优先本机,否则就近随机
第2副本:就近不同机架的某一个服务器上
第3副本:和第2副本同一个机架的不同服务器上
13一次写入,多次读出
HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的修改。
正因为如此,HDFS适合用来做大数据分析的底层存储服务,并不适合用来做网盘等应用,因为,修改不方便,延迟大,网络开销大,成本太高。
HDFS也有自己的瓶颈,受限于磁盘的传输速率!!!
3.2.4MapReduce和Yarn
MapReduce计算模型
Yarn 资源调度模型
略
3.2.5Hive
3.2.5.1数仓概念
数据仓库英文名称为Data Warehouse,可简写为DW或DWH。数据仓库的目的是构建==面向分析==的集成化数据环境,为企业提供==决策支持==(Decision Support)。它出于分析性报告和决策支持目的而创建。数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”
MySQL数据库 => 面向事务的集成化数据环境;但是DW则是面向分析的集成化数据环境,主要实现数据的写入与数据分析,很少有数据的修改操作!
数据仓库==本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据==,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因。
数据仓库是面向主题的(Subject-Oriented )、集成的(Integrated)、非易失的(Non-Volatile 不可更新性)和时变的(Time-Variant )数据集合,用以支持管理决策 。
3.2.5.2数据仓库与数据库区别
数仓:OLAP("A",分析)=> 分析(查)
数据库:OLTP("T",事务) => 事务(增删改)
操作型处理,叫联机事务处理OLTP(On-Line Transaction Processing,),也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。
分析型处理,叫联机分析处理OLAP(On-Line Analytical Processing)一般针对某些主题的历史数据进行分析,支持管理决策。
3.2.5.3Hive离线数仓概念
Hive是==基于Hadoop==的一个数据仓库工具,可以将结构化的数据文件==映射==为一张数据库表,并提供类==SQL查询==功能。
本质是将==SQL转换为MapReduce==程序。
主要用途:用来做离线数据分析,比直接用MapReduce开发效率更高。
早期开发MapReduce只能通过Java语言,语法比较复杂,学习成本高。
大数据专家汇总在一起,开发了一个软件叫做Hive(Facebook) => Hive => 把类似SQL语言(HiveSQL)=> 编译成Hadoop中的MapReduce。
Hive主要由两部分数据组成 => 元数据(数据库、数据表等结构),实际数据存储在HDFS或HBase中。
Hive不能独立存在,必须要依赖Hadoop才能运行!
Hive中的分析的数据来源于HDFS,执行的计算模型需要依赖于MapReduce。
Hive利用HDFS存储数据,利用MapReduce查询分析数据。
3.2.5.4Hive组件
用户接口:包括 CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。
元数据存储(mestore服务 => metadata元数据):通常是存储在关系数据库如 mysql/derby中。Hive 将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
解释器、编译器、优化器、执行器(hiveserver2驱动):完成 HQL 查询语句从语法分析、词法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。
简单来说:==解析器、编译器、优化器、执行器==就是把HiveSQL翻译成MapReduce过程!
3.2.6Spark(略)
3.2.6.1Spark优势:
1、MapReduce计算为什么慢
MR在处理过程中要经过多次磁盘IO操作,极大的拖累它的处理速度
2、Spark计算为什么快?
Spark在处理过程中数据都是在内存进行,极大的提高的处理速度
3.2.6.2Spark发展历史
1、Spark是一个计算引擎,类似于之前学习的MapReduce和Presto
2、Spark是2009诞生于美国的加州大学伯克利分校
3、2013年Spark被捐献给Apache软件基金会
4、2017年Structured streaming发布,统一化实时与离线分布式计算平台
5、2018年Spark2.4.0发布,
6、2020年6月Spark发布3.0.0正式版