大数据笔试题:超级重要知识点

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/pingsha_luoyan/article/details/97750251

简答题:(每题5分,总分100分)

  1. Hadoop分布式集群与伪分布式集群的区别
  1. 分布式集群需要多台电脑,,一台为奴隶主机,其他的为奴隶机用来存储数据。
  2. 伪分布式集群可以使用一台电脑搭建,也可以使用多台电脑,只需要在slaves中添加自己的主机名就可以了,其他的与分布式一样。
  1. Hadoop分为三个核心部分,每个部分是什么,有什么功能?
  1. 三个核心:hdfs,mapreduce和yarn
  2. Hadfs:分布式文件系统,mapreduce:分布式计算框架,yarn:资源调度器
  3. 功能:hdfs:由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。用于存储文件,通过目录树来定位文件

             Mapreduce:采用“分而治之”的思想,来处理大规模的数据。将数据拆解成多个部分,并利用集群的多个节点同时进行数据处理,然后将各个节点得到的中间结果进行汇总,经过进一步的计算(该计算也是并行进行的),得到最终结果

  1. Hadoop分布式集群,默认备份数为多少,每个数据块大小是多少?在哪个配置文件中可以修改备份数与每个数据块大小?

默认备份为3份,每块数据大小128M, 在hdfs-site.xml配置文件中可以修改备份数和数据块大小。

<property>

<name>dfs.block.size</name>

<value>128</value>

</property>

   <property>

        <name>dfs.replication</name>

        <value>3</value>

   </property>

  1. Hadoop分布式集群中NN和DN、SN,指得是什么?他们分别有什么作用?

NN:Name Node   管理HDFS的命名空间,配置副本策略,管理数据块(Block)映射信息,处理客户端读写请求

DN:DataNode   存储实际的数据块,执行数据块的读/写操作

SN:SecondaryNameNode  辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ,在紧急情况下,可辅助恢复NameNode

  1. Hadoop分布式集群中,如果NN挂掉,会出现什么情况?如果DN挂掉,会出现什么情况?如果SN挂掉,会出现什么情况?数据会丢失吗?

NN挂掉,数据丢失,分布式集群崩溃,DN挂掉,由于其他机器中存有备份,数据不会丢失,正常情况下对分布式集群不会出现大问题,SN挂掉,数据不会丢失,只是失去了对NameNode中映射的备份,为了防止意外(NN挂掉),需要尽快恢复SN。

  1. Hadoop集群中yarn模式,是什么?在分布式计算中有什么作用?

Yarn模式是资源调度器,

yarn在管理者机器中是ResourceManager,负责 协调和管理整个集群(所有 NodeManager)的资源,响应用户提交的不同类型应用程序的 解析,调度,监控等工作。

在奴隶机中是NodeManager,是真正执行应用程序的容器的提供者, 监控应用程序的资源使用情况(CPU,内存,硬盘,网络),并通过心跳向集群资源调度器 ResourceManager 进行汇报以更新自己的健康状态。同时其也会监督 Container 的生命周期 管理,监控每个 Container 的资源使用(内存、CPU 等)情况,追踪节点健康状况,管理日 志和不同应用程序用到的附属服务(auxiliary service)。

  1. 请描述对文本单词统计中mapreduce的过程。(文字和流程图描述)

过程分为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 的依据。输出结果例如:<Deer, 1>,<River, 1>,<Bear, 1>,<Bear, 1>。

Map 阶段的输出会作为 Shuffle 阶段的输入。

3、Shuffle阶段

理解为从 Map 输出到 Reduce 输入的过程,而且涉及到网络传输。

将 Map 中 key 相同的都归置到一起,作为一个 Reduce 的输入

4、Reduce阶段

将 key 相同的数据进行累计。输出结果例如:<Beer, 3>。

  1. Hadoop集群中请描述RM,NM是什么?有什么作用?

RM和NM都是属于hadoop yarn资源调度器:

RM:资源管理者:1、处理客户端请求2、启动或监控 MRAppMaster3、监控 NodeManager4、资源的分配与调度

NM:节点管理者:1、管理单个节点上的资源2、处理来自 ResourceManager 的命令3、处理来自 MRAppMaster 的命令

  1. Hadoop集群中RM中分为几大模块,每个模块有什么作用?

RM分为:两个模块:ApplicationMaster (AM)和Containe。

ApplicationMaster (AM):

         用户提交的应用程序均包含一个AM,负责应用的监控,跟踪应用执行状态,重启失败任务等。ApplicationMaster是应用框架,它负责向ResourceManager协调资源,并且与NodeManager协同工作完成Task的执行和监控。

Container:

        Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container 表示的。 YARN会为每个任务分配一个Container且该任务只能使用该Container中描述的资源。

  1. ETL是什么?kettle有什么作用?你常用使用的核心对象有哪些?分别有什么作用?

ETL是:用来描述将数据从来源端经过抽取、转换、加载至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库

核心对象:BI和数据仓库

作用:BI:用来将企业中现有的数据(原始数据或商业数据或业务数据等)进行有效的整合,快速准确地提供报表并提出决策依据,帮助企业做出明智的业务经营决策。

     数据仓库:它为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。

  1. hadoop集群中50070端口和8088端口,分别指的什么?

50070:奴隶主机的namenode;

8088:yarn资源调度器中的RM;里面有所有的进程完成情况

  1. 数据仓库hive中,启动hive服务器的命令有哪些?分别代表什么意思?内部表与外部表有啥区别?分区与分桶,指的是什么?

命令:hive --service metastore  启动元数据

hive:本地运行hive命令

hiveserver2:远程服务,开放默认端口 10000

内部表:内部表删除表时,数据也会被删除,

外部表:外部表在创建时需要加external,删除表时,表中的数据仍然会存储在hadoop中,不会丢失

分区:分文件夹:分目录,把一个大的数据集根据业务需要分割成小的数据集

分桶:分数据:分桶是将数据集分解成更容易管理的若干部分

  1. Mysql中左连接与右连接、内连接,笛卡尔集是什么?现有学生表(学生id,学生name,入学时间time)和成绩表(成绩id,学生id,成绩分数core,科目id)为例(并填写相关测试数据),写出SQL语句?

学生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

  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 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

  1. 什么是BI,什么是数据仓库?为什么需要用数据仓库hive?

BI:即商务智能,它是一套完整的解决方案,用来将企业中现有的数据(原始数据或商业数据或业务数据等)进行有效的整合,快速准确地提供报表并提出决策依据,帮助企业做出明智的业务经营决策。

数据仓库:是一个很大的数据存储集合,出于企业的分析性报告和决策支持目的而创建,对多样的业务数据进行筛选与整合。

为什么:hive为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。

  1. 数据仓库Hive跟hadoop集群,有什么关系?使用hive的好处是什么?

关系:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能,hadoop是用来存储数据的,hive是用来操作数据的。hive的数据文件存储在hdfs上,至于hdfs文件位置是由hadoop管理的。

好处:1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)
2)避免了去写MapReduce,减少开发人员的学习成本
3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合
4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高
5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数

  1. Hadoop集群中hadoop namenode –format ,可否在任意节点出,多次执行这条语句?如果执行多次语句后,会出现什么样的结果?如果在节点中执行语句,怎么修改?

不能,将hadoop格式化,将集群中所有的电脑name下的文件全部删除,重新启动hadoop

  1. 如何创建hive的外部表(包含分区与分桶)?在创建表时候和后期导入数据中,需要注意哪些问题?如何向hive的外部表中导入本地数据文件data.csv和外部hdfs上的/data.txt文件?

创建表的时候加入关键字:external数据字段数量,类型要一致,分隔符要相同,导入数据时要不要覆盖,不覆盖的情况下不能用overwrite。

本地数据:load data local inpath '/home/user/data.csv' into table 导入的表名;

Hdfs:load data inpath '/home/user/data.txt' into table 导入的表名;

  1. hive中集合数据类型什么?有什么作用?什么情况下,hive需要使用集合类型?

数据类型:包括6个基本类型:整数,布尔类型,浮点数,字符,时间类型。字节数组

               2个集合数据类型: struct,map,array

基本数据类型表达不了的情况下使用集合类型

  1. hive中分桶与分区,有什么区别?外部表与内部表有什么区别?
  2. hive中列式存储与行式存储,你知道的类型有哪些?他们有什么区别?怎么理解列式存储?

行式存储:tetxfile

列式存储:rcfile,orcfile,parquetfile,avrofile,sequencefile

区别:列式存储使用的是二进制。打开数据为乱码。

理解:列式存储使查询更方便,快捷,例如。Select * from stufent.age=19;

使用列式存储的时候,直接查抄age这一列,将age不等于19的去除,在查找age=19的其他数据。大大加快了查询的时间。

猜你喜欢

转载自blog.csdn.net/pingsha_luoyan/article/details/97750251
今日推荐