简答题:(每题5分,总分100分)
Mapreduce:采用“分而治之”的思想,来处理大规模的数据。将数据拆解成多个部分,并利用集群的多个节点同时进行数据处理,然后将各个节点得到的中间结果进行汇总,经过进一步的计算(该计算也是并行进行的),得到最终结果
默认备份为3份,每块数据大小128M, 在hdfs-site.xml配置文件中可以修改备份数和数据块大小。
NN:Name Node 管理HDFS的命名空间,配置副本策略,管理数据块(Block)映射信息,处理客户端读写请求
DN:DataNode 存储实际的数据块,执行数据块的读/写操作
SN:SecondaryNameNode 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ,在紧急情况下,可辅助恢复NameNode
NN挂掉,数据丢失,分布式集群崩溃,DN挂掉,由于其他机器中存有备份,数据不会丢失,正常情况下对分布式集群不会出现大问题,SN挂掉,数据不会丢失,只是失去了对NameNode中映射的备份,为了防止意外(NN挂掉),需要尽快恢复SN。
Yarn模式是资源调度器,
yarn在管理者机器中是ResourceManager,负责 协调和管理整个集群(所有 NodeManager)的资源,响应用户提交的不同类型应用程序的 解析,调度,监控等工作。
在奴隶机中是NodeManager,是真正执行应用程序的容器的提供者, 监控应用程序的资源使用情况(CPU,内存,硬盘,网络),并通过心跳向集群资源调度器 ResourceManager 进行汇报以更新自己的健康状态。同时其也会监督 Container 的生命周期 管理,监控每个 Container 的资源使用(内存、CPU 等)情况,追踪节点健康状况,管理日 志和不同应用程序用到的附属服务(auxiliary service)。
过程分为4个阶段:spilt,map,shuffle,reduce
MapReduce过程
1、Split阶段(分片输入)
有两份文件,经过分片处理之后,会被分成三个分片(split1,split2,split3)。依次作为map阶段的输入。
经过分片处理之后,产生了三个分片,每个分片就是一行的三个单词,分别作为 map 阶段的输入。
2、Map阶段
Split 阶段的输出作为 Map 阶段的输入,一个分片对应一个 Map 任务。在 Map 阶段中,读取 value 值,将 value 值拆分为的形式。key 为 每个单词,value 为 1。
Map 阶段需要考虑 key 是什么,value 是什么。特别是 key ,他将作为后面 reduce 的依据。输出结果例如:
Map 阶段的输出会作为 Shuffle 阶段的输入。
3、Shuffle阶段
理解为从 Map 输出到 Reduce 输入的过程,而且涉及到网络传输。
将 Map 中 key 相同的都归置到一起,作为一个 Reduce 的输入
4、Reduce阶段
将 key 相同的数据进行累计。输出结果例如:
RM和NM都是属于hadoop yarn资源调度器:
RM:资源管理者:1、处理客户端请求2、启动或监控 MRAppMaster3、监控 NodeManager4、资源的分配与调度
NM:节点管理者:1、管理单个节点上的资源2、处理来自 ResourceManager 的命令3、处理来自 MRAppMaster 的命令
RM分为:两个模块:ApplicationMaster (AM)和Containe。
ApplicationMaster (AM):
用户提交的应用程序均包含一个AM,负责应用的监控,跟踪应用执行状态,重启失败任务等。ApplicationMaster是应用框架,它负责向ResourceManager协调资源,并且与NodeManager协同工作完成Task的执行和监控。
Container:
Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container 表示的。 YARN会为每个任务分配一个Container且该任务只能使用该Container中描述的资源。
ETL是:用来描述将数据从来源端经过抽取、转换、加载至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
核心对象:BI和数据仓库
作用:BI:用来将企业中现有的数据(原始数据或商业数据或业务数据等)进行有效的整合,快速准确地提供报表并提出决策依据,帮助企业做出明智的业务经营决策。
数据仓库:它为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。
50070:奴隶主机的namenode;
8088:yarn资源调度器中的RM;里面有所有的进程完成情况
命令:hive --service metastore 启动元数据
hive:本地运行hive命令
hiveserver2:远程服务,开放默认端口 10000
内部表:内部表删除表时,数据也会被删除,
外部表:外部表在创建时需要加external,删除表时,表中的数据仍然会存储在hadoop中,不会丢失
分区:分文件夹:分目录,把一个大的数据集根据业务需要分割成小的数据集
分桶:分数据:分桶是将数据集分解成更容易管理的若干部分
学生id,学生name,入学时间time 成绩id,学生id,成绩分数core,科目id
1 yan 2019 1 1 100 1
2 zhang 2018 2 1 90 2
3 2 80 1
4 2 70 2
5 3 60 1
6 4 50 2
左连接:select student.* , account.* from student left join account on student.学生id=account.学生id
2 zhang 2018 4 2 70 2
右链接:select student.* , account.* from student right join account on student.学生id=account.学生id
1 yan 2019 1 1 100 1
1 yan 2019 2 1 90 2
2 zhang 2018 3 2 80 1
2 zhang 2018 4 2 70 2
5 3 60 1
6 4 50 2
内连接:select student.* , account.* from student inner join account on student.学生id=account.学生id
1 yan 2019 1 1 100 1
1 yan 2019 2 1 90 2
2 zhang 2018 3 2 80 1
2 zhang 2018 4 2 70 2
笛卡尔集:select student.* , account.* from student cross account on student.学生id=account.学生id
1 yan 2019 1 1 100 1
1 yan 2019 2 1 90 2
1 yan 2019 3 2 80 1
1 yan 2019 4 2 70 2
1 yan 2019 5 3 60 1
1 yan 2019 6 4 50 2
2 zhang 2018 1 1 100 1
2 zhang 2018 2 1 90 2
2 zhang 2018 3 2 80 1
2 zhang 2018 4 2 70 2
2 zhang 2018 5 3 60 1
2 zhang 2018 6 4 50 2
BI:即商务智能,它是一套完整的解决方案,用来将企业中现有的数据(原始数据或商业数据或业务数据等)进行有效的整合,快速准确地提供报表并提出决策依据,帮助企业做出明智的业务经营决策。
数据仓库:是一个很大的数据存储集合,出于企业的分析性报告和决策支持目的而创建,对多样的业务数据进行筛选与整合。
为什么:hive为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。
关系:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能,hadoop是用来存储数据的,hive是用来操作数据的。hive的数据文件存储在hdfs上,至于hdfs文件位置是由hadoop管理的。
好处:1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)
2)避免了去写MapReduce,减少开发人员的学习成本
3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合
4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高
5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
不能,将hadoop格式化,将集群中所有的电脑name下的文件全部删除,重新启动hadoop
创建表的时候加入关键字:external,数据字段数量,类型要一致,分隔符要相同,导入数据时要不要覆盖,不覆盖的情况下不能用overwrite。
本地数据:load data local inpath '/home/user/data.csv' into table 导入的表名;
Hdfs:load data inpath '/home/user/data.txt' into table 导入的表名;
数据类型:包括6个基本类型:整数,布尔类型,浮点数,字符,时间类型。字节数组
2个集合数据类型: struct,map,array
基本数据类型表达不了的情况下使用集合类型
行式存储:tetxfile
列式存储:rcfile,orcfile,parquetfile,avrofile,sequencefile
区别:列式存储使用的是二进制。打开数据为乱码。
理解:列式存储使查询更方便,快捷,例如。Select * from stufent.age=19;
使用列式存储的时候,直接查抄age这一列,将age不等于19的去除,在查找age=19的其他数据。大大加快了查询的时间。