1.Hadoop分布式集群与伪分布式集群的区别
分布式集群需要多台电脑,,一台为奴隶主机,其他的为奴隶机用来存储数据。
伪分布式集群可以使用一台电脑搭建,也可以使用多台电脑,只需要在slaves中添加自己的主机名就可以了,其他的与分布式一样。
2.Hadoop分为三个核心部分,每个部分是什么,有什么功能?
三个核心:hdfs,mapreduce和yarn
Hadfs:分布式文件系统,mapreduce:分布式计算框架,yarn:资源调度器
功能:hdfs:由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。用于存储文件,通过目录树来定位文件
Mapreduce:采用“分而治之”的思想,来处理大规模的数据。将数据拆解成多个部分,并利用集群的多个节点同时进行数据处理,然后将各个节点得到的中间结果进行汇总,经过进一步的计算(该计算也是并行进行的),得到最终结果
3.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>
4.Hadoop分布式集群中NN和DN、SN,指得是什么?他们分别有什么作用?
NN:Name Node 管理HDFS的命名空间,配置副本策略,管理数据块(Block)映射信息,处理客户端读写请求
DN:DataNode 存储实际的数据块,执行数据块的读/写操作
SN:SecondaryNameNode 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode ,在紧急情况下,可辅助恢复NameNode
5.Hadoop分布式集群中,如果NN挂掉,会出现什么情况?如果DN挂掉,会出现什么情况?如果SN挂掉,会出现什么情况?数据会丢失吗?
NN挂掉,数据丢失,分布式集群崩溃,DN挂掉,由于其他机器中存有备份,数据不会丢失,正常情况下对分布式集群不会出现大问题,SN挂掉,数据不会丢失,只是失去了对NameNode中映射的备份,为了防止意外(NN挂掉),需要尽快恢复SN。
6.Hadoop集群中yarn模式,是什么?在分布式计算中有什么作用?
Yarn模式是资源调度器,
yarn在管理者机器中是ResourceManager,负责 协调和管理整个集群(所有 NodeManager)的资源,响应用户提交的不同类型应用程序的 解析,调度,监控等工作。
在奴隶机中是NodeManager,是真正执行应用程序的容器的提供者, 监控应用程序的资源使用情况(CPU,内存,硬盘,网络),并通过心跳向集群资源调度器 ResourceManager 进行汇报以更新自己的健康状态。同时其也会监督 Container 的生命周期 管理,监控每个 Container 的资源使用(内存、CPU 等)情况,追踪节点健康状况,管理日 志和不同应用程序用到的附属服务(auxiliary service)。
7.请描述对文本单词统计中mapreduce的过程。(文字和流程图描述)
过程分为4个阶段:spilt,map,shuffle,reduce
MapReduce过程
8、Split阶段(分片输入)
有两份文件,经过分片处理之后,会被分成三个分片(split1,split2,split3)。依次作为map阶段的输入。
经过分片处理之后,产生了三个分片,每个分片就是一行的三个单词,分别作为 map 阶段的输入。
9、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 阶段的输入。
10、Shuffle阶段
理解为从 Map 输出到 Reduce 输入的过程,而且涉及到网络传输。
将 Map 中 key 相同的都归置到一起,作为一个 Reduce 的输入
11、Reduce阶段
将 key 相同的数据进行累计。输出结果例如:<Beer, 3>。
12.Hadoop集群中请描述RM,NM是什么?有什么作用?
RM和NM都是属于hadoop yarn资源调度器:
RM:资源管理者:1、处理客户端请求2、启动或监控 MRAppMaster3、监控 NodeManager4、资源的分配与调度
NM:节点管理者:1、管理单个节点上的资源2、处理来自 ResourceManager 的命令3、处理来自 MRAppMaster 的命令
13.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中描述的资源。
14.ETL是什么?kettle有什么作用?你常用使用的核心对象有哪些?分别有什么作用?
ETL是:用来描述将数据从来源端经过抽取、转换、加载至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
核心对象:BI和数据仓库
作用:BI:用来将企业中现有的数据(原始数据或商业数据或业务数据等)进行有效的整合,快速准确地提供报表并提出决策依据,帮助企业做出明智的业务经营决策。
数据仓库:它为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。
15.hadoop集群中50070端口和8088端口,分别指的什么?
50070:奴隶主机的namenode;
8088:yarn资源调度器中的RM;里面有所有的进程完成情况
数据仓库hive中,启动hive服务器的命令有哪些?分别代表什么意思?内部表与外部表有啥区别?分区与分桶,指的是什么?
命令:hive --service metastore 启动元数据
hive:本地运行hive命令
hiveserver2:远程服务,开放默认端口 10000
内部表:内部表删除表时,数据也会被删除,
外部表:外部表在创建时需要加external,删除表时,表中的数据仍然会存储在hadoop中,不会丢失
分区:分文件夹:分目录,把一个大的数据集根据业务需要分割成小的数据集
分桶:分数据:分桶是将数据集分解成更容易管理的若干部分
16.什么是BI,什么是数据仓库?为什么需要用数据仓库hive?
BI:即商务智能,它是一套完整的解决方案,用来将企业中现有的数据(原始数据或商业数据或业务数据等)进行有效的整合,快速准确地提供报表并提出决策依据,帮助企业做出明智的业务经营决策。
数据仓库:是一个很大的数据存储集合,出于企业的分析性报告和决策支持目的而创建,对多样的业务数据进行筛选与整合。
为什么:hive为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。
17.数据仓库Hive跟hadoop集群,有什么关系?使用hive的好处是什么?
关系:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能,hadoop是用来存储数据的,hive是用来操作数据的。hive的数据文件存储在hdfs上,至于hdfs文件位置是由hadoop管理的。
好处:1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)
2)避免了去写MapReduce,减少开发人员的学习成本
3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合
4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高
5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
18.Hadoop集群中hadoop namenode –format ,可否在任意节点出,多次执行这条语句?如果执行多次语句后,会出现什么样的结果?如果在节点中执行语句,怎么修改?
不能,将hadoop格式化,将集群中所有的电脑name下的文件全部删除,重新启动hadoop
19.如何创建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 导入的表名;
20.hive中集合数据类型什么?有什么作用?什么情况下,hive需要使用集合类型?
数据类型:包括6个基本类型:整数,布尔类型,浮点数,字符,时间类型。字节数组
2个集合数据类型: struct,map,array
基本数据类型表达不了的情况下使用集合类型