以下内容纯手敲,转载请说明出处。
都是一些很基础的知识,各位看官不喜勿喷。
·······················我假装是分割线T-T····························
文章目录
- 1.简单描述你对Hadoop集群SafeMode模式的理解?
- 2.什么是hive,谈谈你的理解?
- 3.是否可以在Windows上运行Hadoop?
- 4.简单描述一下TextInputFormat怎么进行文件切分?
- 5.假如NameNode中没有数据会怎么样?
- 6.如何实现服务器之间的免密登录(便捷版)?SSH采用的是什么加密?
- 7.简单描述MapReduce不适合对哪些场景的使用?其实问的就是它的缺点。
- 8.MapReduce的基本数据类型包括哪些?
- 9.Hive内部表和外部表的区别?
- 10.yarn有哪几部分组成,作用分别是什么?调度器主要有哪三种?hadoop默认的是哪一种?
- 11.如果需要在NameNode节点群起集群,你需要如何配置?
- 12.简单描述Shuffle过程环形缓冲区的作用?
- 13.Mapreduce执行过程中,在执行Reduce Task之前主要做哪些工作?
- 14.简单描述一下hive中的分区表?
- 15.hdfs-site.xml的3个主要属性?
- 16.完全分布模式有什么注意点?
- 17.用一句话总结Combiner的作用和意义?
- 18.用shell脚本完成如下功能,求极值,根据输入数据,输出最大,最小值(达到手写的程度)
- 19.根据如下要求编写对应的HQL语句(最起码要达到手写)
1.简单描述你对Hadoop集群SafeMode模式的理解?
集群处于安全模式,不能执行重要操作(写操作),集群属于只读状态。但是严格来说,知识保证HDFS元数据信息的访问,而不保证文件的访问。集群启动完成后,自动退出安全模式,如果集群处于安全模式,想要完成写操作,需要离开安全模式。
(1)查看安全模式状态:bin/hdfs dfsadmin -safemode get
(2)进入安全模式状态:bin/hdfs dfsadmin -safemode enter
(3)离开安全模式状态:bin/hdfs dfsadmin -safemode leave
(4)等待安全模式状态:bin/hdfs dfsadmin -safemode wait
对于全新创建的HDFS集群,NameNode启动后不会进入安全模式,因为没有Block信息。
2.什么是hive,谈谈你的理解?
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类sql语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
补充(1)hive处理的数据存储在HDFS。
(2)hive分析数据底层的实现是MapReduce。
(3)执行程序运行在Yarn上。
3.是否可以在Windows上运行Hadoop?
你最好不要这么做,Red Hat Linux或者是Ubuntu才是Hadoop的最佳操作系统。在Hadoop安装中,Windows通常不会被使用,因为会出现各种各样的问题。因此,Windows绝对不是Hadoop的推荐系统。
4.简单描述一下TextInputFormat怎么进行文件切分?
TextInputFormat根据文件大小将文件拆分成splits,如果单个文件较小,则每个文件为一个split,并将文件按分割形成<key,value>对,如果单个文件较大。超过block块默认大小的1.1倍,则会将文件切分为多个split。这一步由MapReduce框架自动完成,其中偏移量包括了回车所占的字符数。将分割好的<key,value>对交给用户自定义的map方法进行处理,生成新的<key,value>对。得到map方法输出的<key,value>对后,Mapper会将它们按照key值进行排序,并执行Combine过程,将key值相同value值累加,得到Mapper的最终输出结果。Reducer先对从Mapper接收的数据进行排序,再交由用户自定义的reduce方法进行处理,得到新的<key,value>对,并作为任务的输出结果。
5.假如NameNode中没有数据会怎么样?
首先说明NameNode节点肯定不正常,集群肯定不正常的,没有数据的NameNode就不能称之为NameNode,通常情况下,NameNode肯定会有数据,并且存储的是元数据。
6.如何实现服务器之间的免密登录(便捷版)?SSH采用的是什么加密?
实现免密登录步骤:
1.在服务器生成密钥对 ssh-keygen -t rsa 三次回车
2.发送公钥到本机 ssh-copy-id hostname(服务器主机名,一般先发给自己实现本机免密登录)输入一次密码
3.将 .ssh文件夹中的文件分别分发至集群中其他服务器(节点) SSH为建立在应用层基础上的安全协议,采用非对称加密(rsa加密算法)
7.简单描述MapReduce不适合对哪些场景的使用?其实问的就是它的缺点。
(1)MapReduce不适合做低延迟数据访问场景的使用
(2)MapReduce不适合处理大量小文件
(3)MapReduce不适合处理流式计算
8.MapReduce的基本数据类型包括哪些?
BooleanWritable ByteWritable IntWritable FloatWritable LongWritable DoubleWritable
Text MapWritable ArrayWritable
9.Hive内部表和外部表的区别?
我们在创建外部表的时候要加个关键字 external
内部表:当我们在hive中使用命令删除hive表时,hive所对应的hdfs的目录也会被删除,元数据库中的数据也会被删除。
外部表:在hive中删除了外部表,而外部表所对应的hdfs目录不会被删除,元数据库被删除。
10.yarn有哪几部分组成,作用分别是什么?调度器主要有哪三种?hadoop默认的是哪一种?
yarn由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。
ResourceManager:处理客户端请求、监控NodeManager、启动或监控ApplicationMaster、资源的分配与调度。
NodeManager:管理单个节点上的资源、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令。
ApplicationMaster:负责数据的切分、为应用程序申请资源并分配给内部的任务、任务的监控与容错。
Container:Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
调度器有FIFO、Capacity Scheduler(容量调度器)和Fair Scheduler(公平调度器)。
Hadoop2.7.2默认的资源调度器是Capacity Scheduler(容量调度器)。
11.如果需要在NameNode节点群起集群,你需要如何配置?
首先确保你的集群配置是正确的,单点启动能够成功,如果要群起我们需要在etc/hadoop/slaves文件中添加数据节点,也就是从节点,来告诉namenode群起的时候启动那些从节点(datanode)。
12.简单描述Shuffle过程环形缓冲区的作用?
数据从map()输出,经过Partitioner分区操作,在进入环形缓冲区。默认情况下,环形缓冲区大小值为100MB。当map输入的数据进入环形缓冲区的量达到80MB以上时,那么开始执行溢写过程,溢写过程中如果有其他数据进入,那么由剩余的百分之20反向写入,最终溢写文件经过合并、排序后落入本地磁盘。
13.Mapreduce执行过程中,在执行Reduce Task之前主要做哪些工作?
reduce task在执行之前的工作是不断的拉取当前job里每个map task 的最终的输出文件,然后将不同maptask中某一分区的数据不断的做merge,也最终形成一个文件作为reduce task的输入文件交给reduce。
14.简单描述一下hive中的分区表?
Hive的分区表分为动态分区和静态分区两种模式,分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过WHERE字句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。
15.hdfs-site.xml的3个主要属性?
1:dfs.name.dir决定的是元数据存储的路径以及dfs的存储方式(磁盘或是远端)。
2:dfs.data.dir决定的是数据存储的路径。
3:fs.checkpoint.dir用于第二Namenode。
16.完全分布模式有什么注意点?
完全分布式集群通常被用于生产环境,这里我们使用N台主机组成一个Hadoop集群,需要合理的搭配服务器节点,Hadoop守护进程运行在每台主机之上。这里会存在NameNode运行的主机,DataNode运行的主机,SecondaryNameNode运行的节点,以及task tracker运行的主机,我们需要设置ResourceManager运行的主机,NodeManager运行的主机。在分布式环境下,主节点和从节点会分开。
17.用一句话总结Combiner的作用和意义?
Combiner的意义就是对每一个MapTask的输出进行局部汇总,以减少网络传输量。
18.用shell脚本完成如下功能,求极值,根据输入数据,输出最大,最小值(达到手写的程度)
read -p "请输入求值规则:" RULE
echo $RULE
if [ $RULE -eq 1 ]
then
max=$1
for value in "$@"
do
if [ $value -gt $max ]
then
max=$value
fi
done
echo "最大值为:" $max
elif [ $RULE -eq 0 ]
then
mix=$1
for value in "$@"
do
if [ $value -lt $mix ]
then
mix=$value
fi
done
echo "最小值为:" $mix
else
echo "未知命令"
fi
19.根据如下要求编写对应的HQL语句(最起码要达到手写)
1.创建一个名为city的数据库(存在则创建,不存在则不创建)添加两个属性,创建人和创建时间。
create database if not exists city with dbproperties('author'='limoumou','time'='2019-12-10');
2.强制删除city(含有表,表中有数据)的数据库。
drop database if exists city cascade;
3.在city数据库下创建一个外部表school,字段包含id,姓名,电话,根据班级设置分区(注意本地文件数据字段以"\t’分割的)
create table if not exists school(id int,name string,phone string) partitioned by (classnum string) row format delimited fields terminated by "\t";
4.将本地数据路径为/opt/module/hive/data/cla.txt 文件数据追加到school表中的class分区中
load data local inpath "/opt/module/hive/data/cla.txt" into table school partition(class="class");
5.查询school表中class分区内的学生的学号,姓名,电话
select xuehao,name,phone from school where class=class;
目前就先写这么点吧,后续有时间的话继续更新。