
hadoop
大数据面试指南
微信公众号:大数据面试宝典
修改简历,面试辅导,回复666领取面试宝典资料
展开
-
大数据高频面试题之Hive的数据存储格式
类型texfile:默认的存储格式:普通的文本文件,数据不压缩,磁盘的开销比较大,分析开销大。sequencefile:提供的一种二进制存储格式,可以切割,天生压缩。rcfile:提供的是一种行列混合存储方式,该方式会把相近的行和列数据放在一块儿,存储比较耗时,查询效率高,也天生压缩。orc:是rcfile的一种优化存储。parquet:自定义输入输出格式。具体描述1)texfile普通文本文件(通常默认的就是这个格式)创建表create table if not exists one (原创 2021-04-15 19:10:54 · 594 阅读 · 0 评论 -
大数据高频面试题之Hive表数据的加载与导出
Hive表数据加载1)直接向分区表中插入数据insert into table score3 partition(month =‘201807’) values (‘001’,‘002’,‘100’);2)通过查询插入数据先通过load加载创建一个表(linux) load data local inpath ‘/export/servers/hivedatas/score.csv’ overwrite into table score partition(month=‘201806’);(HD原创 2021-04-15 19:05:21 · 226 阅读 · 0 评论 -
大数据高频面试题之Hive常用函数总结
Hive内部支持大量的函数,可以通过 SHOW FUNCTIONS 查看Hive的内置函数。灵活地运用Hive提供的函数能够极大地节省数据分析成本。Hive函数主要包含数学函数,集合函数,类型转换函数,日期函数,条件函数,字符串函数,聚合函数和表生成函数等。1)数学函数数学函数是Hive内部提供的专门用于数学运算的函数,如round()函数和sqrt()函数等。round()函数主要用来对给定的数字进行四舍五入取近似值,如下所示:hive (default)> SELECT ROUND(5.5)原创 2021-04-14 17:55:50 · 1282 阅读 · 0 评论 -
大数据高频面试题之Hive的分区及其优势
什么是hive分区 : 就是一种对表进行粗略划分的机制,可以实现加快查询速度的组织形式.在使用分区时, 在表目录下会有相应的子目录,当查询时添加了分区谓词,那么该查询会直接定位到相应的子目录中进行查询,避免全表查询,提成查询效率.注意事项:1 . hive的分区使用的表外字段,分区字段是一个伪列但是可以查询过滤。2 . 分区字段不建议使用中文3 . 不太建议使用动态分区。因为动态分区将会使用mapreduce来查询数据,如果分区数量过多将导致namenode和yarn的资源瓶颈。所以建议动态分区前原创 2021-04-13 14:45:10 · 985 阅读 · 0 评论 -
大数据高频面试题之Hive的严格模式
Hive提供了一个严格模式,可以防止用户执行那些可能意想不到的不好的影响的查询。通过设置属性hive.mapred.mode值为默认是非严格模式nonstrict 。开启严格模式需要修改hive.mapred.mode值为strict,开启严格模式可以禁止3种类型的查询。对于分区表,除非where语句中含有分区字段过滤条件来限制范围,否则不允许执行。换句话说,就是用户不允许扫描所有分区。进行这个限制的原因是,通常分区表都拥有非常大的数据集,而且数据增加迅速。没有进行分区限制的查询可能会消耗令人不可接受的原创 2021-04-13 14:41:30 · 144 阅读 · 0 评论 -
大数据高频面试题之如何合理设置Reduce的数量
1.调整reduce个数方法一(1)每个Reduce处理的数据量默认是256MBhive.exec.reducers.bytes.per.reducer=256000000(2)每个任务最大的reduce数,默认为1009hive.exec.reducers.max=1009(3)计算reducer数的公式N=min(参数2,总输入数据量/参数1)2.调整reduce个数方法二在hadoop的mapred-default.xml文件中修改设置每个job的Reduce个数set mapre原创 2021-04-13 14:38:36 · 551 阅读 · 0 评论 -
大数据高频面试题之Hive的小文件合并
(1)在map执行前合并小文件,减少map数:CombineHiveInputFormat具有对小文件进行合并的功能(系统默认的格式)。HiveInputFormat没有对小文件合并功能。set hive.input.format= org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;(2)在Map-Reduce的任务结束时合并小文件的设置:在map-only任务结束时合并小文件,默认trueSET hive.merge.mapfiles = tr原创 2021-04-13 14:35:15 · 106 阅读 · 0 评论 -
大数据高频面试题之Hive怎么解决数据倾斜
场景: MR中,shuffle阶段的一个key值对应了很多值,那么就会将这么多值分到一个分区中hive中,两个表做join maptask中一个任务处理的时间明显大于其他task的时间 就是出现了数据倾斜的问题开启数据倾斜时负载均衡set hive.groupby.skewindata=true;思想:就是先随机分发并处理,再按照 key group by 来分发处理。操作:当选项设定为 true,生成的查询计划会有两个 MRJob。第一个 MRJob 中,Map 的输出结果集合会随机分布到 Re原创 2021-04-13 14:30:37 · 141 阅读 · 0 评论 -
大数据高频面试题之Hive的自定义函数
1)Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。2)当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)。3)根据用户自定义函数类别分为以下三种:UDF:User-Defined-Function,用户自定义函数,数据是一进一出,功能类似于大多数数学函数或者字符串处理函数;UDAF:User-Defined Aggregation Function,用户自定原创 2021-04-13 14:26:49 · 149 阅读 · 0 评论 -
Hive的架构组成详解
Hive的架构组成详解如图中所示,Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。一、概要用户接口:ClientCLI(command-line interface)、JDBC/ODBC(jdbc访问hive)、WEBUI(浏览器访问hive)元数据:Metastore元数据包括:表名、表所属的数据库(默认原创 2021-04-02 23:19:09 · 220 阅读 · 0 评论 -
Hadoop生态圈中各个服务角色
Hadoop生态圈中各个服务角色zookeeper角色:ZooKeeper服务是指包含一个或多个节点的集群提供服务框架用于集群管理。对于集群,Zookeeper服务提供的功能包括维护配置信息、命名、提供HyperBase的分布式同步,推荐在 ZooKeeper集群中至少有3个节点。JDK角色:JDK是 Java 语言的软件开发工具包, JDK是整个Java开发的核心,它包含了Java的运行环境,Java工具和Java基础的类库。Apache-Flume角色:Flume是Cloudera提供原创 2021-04-02 23:16:10 · 271 阅读 · 0 评论 -
Hadoop为什么会有Yarn?
Hadoop为什么会有YarnHadoop2.x较Hadoop1.x来说,变化非常大,主要主要体现在Hadoop2.x引入了“Yarn”这个核心部件。hadoop1.x有两大部件,HDFS和MadpReduce,其中HDFS(Hadoop Distributed Files System)用于分布式存储文件,由一个NameNode和多个DateNode组成,便于集群中各机器从上面读取和写入文件(数据),MadpReduce由一个JobTracker和多个TaskTracker组成,两个核心任务,Map负原创 2021-04-02 23:14:32 · 299 阅读 · 0 评论 -
yarn架构组件
YARN 总体上是 master/slave 结构,在整个资源管理框架中,ResourceManager 为 master,NodeManager 是 slave。YARN的基本组成结构,YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等几个组件构成。ResourceManager是Master上一个独立运行的进程,负责集群统一的资源管理、调度、分配等等;NodeManager是Slave上一个独立运行的进程,负责上原创 2021-03-10 16:32:30 · 136 阅读 · 0 评论 -
简单的介绍一下YARN
Apache Yarn(Yet Another Resource Negotiator的缩写)是hadoop集群资源管理器系统,Yarn从hadoop 2引入,最初是为了改善MapReduce的实现,但是它具有通用性,同样执行其他分布式计算模式。在MapReduce1中,具有如下局限性:1、扩展性差:jobtracker兼顾资源管理和作业控制跟踪功能跟踪任务,启动失败或迟缓的任务,记录任务的执行状态,维护计数器),压力大,成为系统的瓶颈2、可靠性差:采用了master/slave结构,master容原创 2021-03-09 21:10:16 · 143 阅读 · 0 评论 -
Mapreduce的combiner
每一个map都可能会产生大量的本地输出,Combiner的作用就是对map端的输出先做一次合并,以减少在map和reduce节点之间的数据传输量,以提高网络IO性能,是MapReduce的一种优化手段之一。combiner是MR程序中Mapper和Reducer之外的一种组件combiner组件的父类就是Reducercombiner和reducer的区别在于运行的位置:Combiner是在每一个maptask所在的节点运行Reducer是接收全局所有Mapper的输出结果;combiner的意原创 2021-03-09 20:56:54 · 153 阅读 · 0 评论 -
MapReduce的序列化
1.概述序列化(Serialization)是指把结构化对象转化为字节流。反序列化(Deserialization)是序列化的逆过程。把字节流转为结构化对象。当要在进程间传递对象或持久化对象的时候,就需要序列化对象成字节流,反之当要将接收到或从磁盘读取的字节流转换为对象,就要进行反序列化。Java的序列化(Serializable)是一个重量级序列化框架,一个对象被序列化后,会附带很多额外的信息(各种校验信息,header,继承体系…),不便于在网络中高效传输;所以,hadoop自己开发了一套序列化原创 2021-03-08 11:47:01 · 97 阅读 · 0 评论 -
MapReduce中排序发生在哪几个阶段?
一个MapReduce作业由Map阶段和Reduce阶段两部分组成,这两阶段会对数据排序,从这个意义上说,MapReduce框架本质就是一个Distributed Sort。在Map阶段,Map Task会在本地磁盘输出一个按照key排序(采用的是快速排序)的文件(中间可能产生多个文件,但最终会合并成一个),在Reduce阶段,每个ReduceTask会对收到的数据排序,这样数据便按照key分成了若干组,之后以组为单位交给reduce方法处理。很多人的误解在Map阶段,如果不使用Combiner便不会排原创 2021-03-08 11:45:19 · 689 阅读 · 0 评论 -
mapreduce为什么分两部分
是为了实现分布式计算,提高计算效率。很多情况下都是需要对整个数据集进行计算操作,单单的分成每个单独的小部分虽然能提高计算效率,但是导致无法完成实际需求,是没有任何意义的,所以添加一个reduce阶段,负责将分成多个部分计算的结果汇总进行处理,使得更加能满足一般需求...原创 2021-03-07 18:17:27 · 109 阅读 · 0 评论 -
MapReduce的优化
一、概述优化前我们需要知道hadoop适合干什么活,适合什么场景,在工作中,我们要知道业务是怎样的,能才结合平台资源达到最有优化。除了这些我们当然还要知道mapreduce的执行过程,比如从文件的读取,map处理,shuffle过程,reduce处理,文件的输出或者存储。在工作中,往往平台的参数都是固定的,不可能为了某一个作业去修改整个平台的参数,所以在作业的执行过程中,需要对作业进行单独的设定,这样既不会对其他作业产生影响,也能很好的提高作业的性能,提高优化的灵活性。现在回顾下hadoop的优势(适用原创 2021-03-07 18:16:13 · 283 阅读 · 0 评论 -
如何使用MapReduce实现两表的join
map join:map side join 是针对一下场景进行的优化。两个待连接的表中,有一个表非常大,而另一个非常小,以至于小表可以直接存放到内存中。这样,我们可以将小表复制多份,让每一个map task内存中存在一份(比如放在hash table中),然后只扫描大表:对于大表中的每一条记录key/value,在hash table中查找是否具有相同key的记录,入股有,则连接后输出即可。场景:MapJoin 适用于有一份数据较小的连接情况。做法:直接将较小的数据加载到内存中,按照连接的关键字建立原创 2021-03-05 15:25:26 · 357 阅读 · 0 评论 -
MapReduce的shuffle过程
mapper()方法做业务逻辑处理,然后将数据传到分区方法中,给数据标记好分区,将数据发送到环形缓冲区环形缓冲区默认100M,达到80%的阈值进行溢写操作溢写之前会进行排序,排序的规则是字典序排序,排序的手段呢是快排溢写会产生很多溢写文件,溢写文件默认达到10个会进行“墨汁”合并,合并时采用的算法是归并排序也可以进行combiner局部聚合的操作,前提是局部聚合的结果不会对最终的结果有影响等到所有的maptask运行完毕,会启动一定数量的reducetask,并告知reducetask读取数据的范原创 2021-03-05 10:28:37 · 241 阅读 · 1 评论 -
MapReduce编程模型简述(mr任务流程)
1.在客户端执行submit()方法之前,会先去获取一下待读取文件的信息2.将job提交给yarn,这时候会带着三个信息过去(job.split(文件的切片信息),jar.job.xml)3.yarn会根据文件的切片信息去计算将要启动的maptask的数量,然后去启动maptask4.maptask会调用InPutFormat()方法去HDFS上面读取文件,InPutFormat()方法会再去调用RecordRead()方法,将数据以行首字母的偏移量为key,一行数据为value传给mapper(..原创 2021-03-04 14:33:59 · 241 阅读 · 1 评论 -
简单描述MapReduce(mr是什么?)
概念Hadoop MapReduce 是一个分布式计算框架,用于编写批处理应用程序。编写好的程序可以提交到 Hadoop 集群上用于并行处理大规模的数据集。MapReduce作业通常将输入数据集拆分为独立的块,这些任务由map任务以完全并行的方式进行处理。框架对map的输出进行排序,然后将其输入到reduce任务。通常,作业的输入和输出都存储在文件系统中。该框架负责安排任务,监视任务并重新执行失败的任务。MapReduce可以分成Map和Reduce两部分理解。1.Map:映射过程,把一组数据按原创 2021-03-04 14:31:31 · 303 阅读 · 1 评论 -
HDFS压缩方式
文件压缩主要有两个好处,一是减少了存储文件所占空间,另一个就是为数据传输提速。在hadoop大数据的背景下,这两点尤为重要,那么我现在就先来了解下hadoop中的文件压缩。1 gzip压缩优点:压缩率比较高,而且压缩/解压速度也比较快;hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样;有hadoop native库;大部分linux系统都自带gzip命令,使用方便。缺点:不支持split。应用场景:当每个文件压缩之后在130M以内的(1个块大小内),都可以考虑用gzip压缩格原创 2021-03-03 14:41:55 · 800 阅读 · 2 评论 -
HDFS集群优化
操作系统级别优化1.优化文件系统(推荐使用EXT4和XFS文件系统,相比较而言,更推荐后者,因为XFS已经帮我们做了大量的优化。)2.预读缓冲 预读技术可以有效的减少磁盘寻道次数和应用的I/O等待时间,增加Linux文件系统预读缓冲区的大小(默认为256 sectors,128KB),可以明显提高顺序文件的读性能,建议调整到1024或2048 sectors。预读缓冲区的设置可以通过blockdev命令来完成。3.放弃RAID和LVM磁盘管理方式,选用JBOD复制代码不使用RAID 应避原创 2021-03-02 21:16:01 · 418 阅读 · 0 评论 -
大数据面试之HDFS小文件问题及解决方案
小文件是指文件size小于HDFS上block大小的文件。这样的文件会给hadoop的扩展性和性能带来严重问题。首先,在HDFS中,任何block,文件或者目录在内存中均以对象的形式存储,每个对象约占150byte,如果有1000 0000个小文件,每个文件占用一个block,则namenode大约需要2G空间。如果存储1亿个文件,则namenode需要20G空间。这样namenode内存容量严重制约了集群的扩展。 其次,访问大量小文件速度远远小于访问几个大文件。HDFS最初是为流式访问大文件开发的,如原创 2021-03-01 22:40:09 · 398 阅读 · 0 评论 -
HDFS的安全模式
什么时候进入安全模式?有两种方式人为进入集群二次启动安全模式有什么特点?安全模式中只能读取数据,不能修改数据(增、删、改)在安全模式下集群在做什么?在安全模式下集群在进行恢复元数据,即在合并fsimage和edits log,并且接受datanode的心跳信息,恢复block的位置信息,将集群恢复到上次关机前的状态如何进入/退出安全模式?进入:hdfs dfsadmin -safemode enter退出:hdfs dfsadmin -safemode leave.原创 2021-03-01 21:37:46 · 130 阅读 · 0 评论 -
大数据面试之HDFS的fsimage和edit logs文件分别指的是什么?
.fsimage:HDFS文件系统元数据的镜像文件,其中包含HDFS文件系统的所有目录和文件inode及相关属性的序列化信息。edits:用户操作的编辑日志文件,存放HDFS文件系统的所有更新操作的动作,文件所有写操作会被记录到Edits文件中。在namenode运行期间, 客户端对hdfs的写操作都保存到edit文件中, 久而久之就会造成edit文件变得很大, 如果namenode重启, 它会将fsimage中的内容映射到内存中, 然后再一条一条执行edit文件中的操作, 所以日志文件原创 2021-03-01 17:09:13 · 313 阅读 · 0 评论 -
HDFS故障类型和其检测方法
常见的故障三种 节点故障,通讯故障,数据损坏。节点故障主要关注DateNode的检查方法DateNode每三秒会向NameNode发送自己的心跳信息如果十分钟内NameNode没有收到心跳信息,就判定DataNode死亡通讯故障每当发送数据,接受者会回复一个应答信号如果没有收到应答信号(多次尝试),发送者就会认为主机已经挂掉,或发生网络错误数据损坏校验和-数据当向硬盘存储数据时,也会存储校验和...原创 2021-02-28 22:37:02 · 850 阅读 · 0 评论 -
大数据面试之HDFS高可用原理
HDFS高可用原理:HDFS HA(High Available)同时配置两个Namenode,状态分别是Active和Standby。Standby Namenode作为热备份,在机器发生故障时能够快速进行故障转移,同时在日常维护的时候进行Namenode切换。Namenode只能配置一主一备,不能多于两个Namenode。主Namenode处理所有的操作请求(读写),而Standby只是作为slave,用来同步主Namenode的状态,保证发生故障时能够快速切换。为了使Standby Namen.原创 2021-02-28 21:29:34 · 137 阅读 · 0 评论 -
架构的稳定性
1. 心跳机制和重新复制每个 DataNode 定期向 NameNode 发送心跳消息。如果超过指定时间没有收到心跳消息,则将 DataNode 标记为死亡。NameNode 不会将任何新的 IO 请求转发给标记为死亡的 DataNode,也不会再使用这些 DataNode 上的数据。由于数据不再可用,可能会导致某些块的副本个数小于其默认值,NameNode 会跟踪这些块,并在必要的时候进行重新复制.2. 数据的完整性由于存储设备故障等原因,存储在 DataNode 上的数据块也会发生损坏。为了原创 2021-02-28 00:01:10 · 220 阅读 · 1 评论 -
大数据面试之HDFS的读写流程
1. 读流程客户端首先带着读取路径向NameNode发送读取请求NameNode接收到请求后,会先判断是否有权限,读取文件是否存在等等,如果都无误则将 文件所在的DataNode的节点位置,发送给客户端部分或者全部的DataNode的节点位置客户端得到文件块存储的位置后,会调用read()方法,去读取数据在读取之前会先进行一个checksum的操作,去判断一下校验和是否正确,正确则读,不正确 则去下一个存放该block块的DataNode节点上读取读取完NameNode这次发送过来原创 2021-02-27 23:41:56 · 114 阅读 · 0 评论 -
大数据面试之HDFS副本机制
HDFS视硬件错误为常态,硬件服务器随时有可能发生故障。 为了容错,文件的所有 block 都会有副本。每个文件的 block 大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。 数据副本默认保存三个副本,我们可以更改副本数以提高数据的安全性 在hdfs-site.xml当中修改dfs.replication配置属性,即可更改文件的副本数低版本Hadoop副本节点选择原创 2021-02-27 21:34:00 · 357 阅读 · 0 评论 -
HDFS数据块的认知
数据块 hdfs将所有的文件全部抽象成为block块来进行存储,不管文件大小,全部一视同仁都是以block块的统一大小和形式进行存储,方便我们的分布式文件系统对文件的管理基本概念所有的文件都是以block块的方式存放在HDFS文件系统当中,在Hadoop1当中,文件的block块默认大小是64M,Hadoop2当中,文件的block块大小默认是128M,block块的大小可以通过hdfs-site.xml当中的配置文件(dfs.block.size)进行指定。一个文件100M,上传.原创 2021-02-26 20:41:43 · 128 阅读 · 0 评论 -
HDFS架构和组成
HDFS架构和组成Hdfs 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成NameNode, DataNode,client,和SencondayNameNode组成NameNode(Master):管理 HDFS 的命名空间,维护元数据。接收客户端的请求。管理数据块(Block)映射信息.配置副本策略DataNode(Slave):存储实际的数据块 。执行数据块的读/写操作。向namenode上传心跳信息。Client(客户端):1、文件上传 HDFS原创 2021-02-24 23:00:18 · 1414 阅读 · 0 评论 -
大数据 MapReduce框架基本案例演示(计算数据中每个单词出现的次数)
MapReduce框架处理数据的基本流程WordCount计算需求:计算每个单词出现的次数原始数据zhangsan,lisi,wangwuzhaoliu,maqizhangsan,zhaoliu,wangwulisi,wangwu期望的最终zhangsan 2lisi 2wangwu 3zhaoliu 2maqi 1偏移量每个字符移动到当前文档的最前面需要移动的字符...原创 2019-11-13 11:34:20 · 2064 阅读 · 1 评论 -
大数据 MapReduce框架核心思想
什么是计算框架是指实现某项任务或某项工作从开始到结束的计算过程或流的结构。MapReduce计算框架什么是并行计算框架一个大的任务拆分成多个小任务,将多个小任务分发到多个节点上。每个节点同时执行计算。Hadoop为什么比传统技术方案快1、分布式存储2、分布式并行计算3、节点横向扩展4、移动程序到数据端5、多个数据副本MapReduce核心思想分而治之,先分后和:将一个大...原创 2019-11-13 11:24:07 · 2300 阅读 · 0 评论 -
HDFS删除节点
退役旧数据节点目标:掌握HDFS在集群中删除掉无效节点的步骤第一步:创建dfs.hosts.exclude配置文件在namenod的cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop目录下创建dfs.hosts.exclude文件,并添加需要退役的主机名称node01执行以下命令cd /export/servers/hadoop-2...原创 2019-11-06 17:32:06 · 2515 阅读 · 0 评论 -
HDFS 新增节点
服役新数据节点目标:掌握HDFS新添加节点到集群的步骤需求基础:随着公司业务的增长,数据量越来越大,原有的数据节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点。准备新节点第一步:复制一台新的虚拟机出来将我们纯净的虚拟机复制一台出来,作为我们新的节点第二步:修改mac地址以及IP地址修改mac地址命令vim /etc/udev/rules.d/70-p...原创 2019-11-06 17:26:07 · 2778 阅读 · 0 评论 -
如何加快Hadoop集群二次启动的速度(SecondaryNamenode工作原理)
前提:不使用SNN,日志文件会很大,日志大会导致集群恢复到上次关机前的状态花费很长时间,这个时候集群处于安全模式,集群不可用。长时间处于安全模式。目标:加快集群二次启动的速度。(减少集群二次启动的时间)SecondaryNamenode周期性复制NameNode的FSIMAGE 和edits到本机(SecondaryNamenode本机),将两个文件进行合并,最终生成全新的Fsimage,...原创 2019-11-05 21:39:00 · 2182 阅读 · 0 评论