自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 关于Scala的理解

文章目录scala简介为什么用scala使用scala所需要的环境scala基础声明格式声明变量三引号变量类型推断惰性赋值插值表达式数据类型与操作符数据类型运算符scala类型结构for表达式嵌套循环守卫scala简介scala是运行在JVM上的多范式(多种编程方法)编程语言,同时支持面向对象和面向函数编程早期,scala刚出现的时候,并没有怎么引起重视,随着Spark和Kafka这样基于s...

2020-03-29 17:26:41 181

原创 深入理解Hbase

文章目录HBase1HBase简介2Hbase 的数据模型3 HBase特征简要特征4 Hbase 内部处理流程5 Region Service原理结构6 Hbase的读写流程HBase1HBase简介Hbase是一个非关系型数据库,存储在hdfs上,是高可靠、高性能、面向列、可伸缩的分布式数据库。 HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapRed...

2019-12-17 16:46:20 156 2

原创 5分钟学习hive sql

Hive sql1 背景2 Hive sql 转换逻辑3 Hive sql的执行顺序4 Hive sql 函数5 hive sql 常用调优1 背景hive 是数据仓库的一种应用工具,将数据写入到hdfs中,为了更方便人员操作,可以通过sql来更简洁的完成任务,不必再编写mapreduce程序。2 Hive sql 转换逻辑hive 底层会把sql转换成mapreduce程序进行执行1 hive的编译器会把sql的语法解析转换成抽象语法树2 抽象语法树结果复杂,不方便直接翻译为mapreduce

2021-08-17 19:32:53 281

原创 大数据高频面试题之Hive的数据存储格式

类型texfile:默认的存储格式:普通的文本文件,数据不压缩,磁盘的开销比较大,分析开销大。sequencefile:提供的一种二进制存储格式,可以切割,天生压缩。rcfile:提供的是一种行列混合存储方式,该方式会把相近的行和列数据放在一块儿,存储比较耗时,查询效率高,也天生压缩。orc:是rcfile的一种优化存储。parquet:自定义输入输出格式。具体描述1)texfile普通文本文件(通常默认的就是这个格式)创建表create table if not exists one (

2021-04-15 19:12:31 107

原创 大数据高频面试题之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:07:06 64

原创 大数据高频面试题之Hive常用函数总结

Hive内部支持大量的函数,可以通过 SHOW FUNCTIONS 查看Hive的内置函数。灵活地运用Hive提供的函数能够极大地节省数据分析成本。Hive函数主要包含数学函数,集合函数,类型转换函数,日期函数,条件函数,字符串函数,聚合函数和表生成函数等。1)数学函数数学函数是Hive内部提供的专门用于数学运算的函数,如round()函数和sqrt()函数等。round()函数主要用来对给定的数字进行四舍五入取近似值,如下所示:hive (default)> SELECT ROUND(5.5)

2021-04-14 17:56:38 99

原创 大数据高频面试题之Hive的分区及其优势

什么是hive分区 : 就是一种对表进行粗略划分的机制,可以实现加快查询速度的组织形式.在使用分区时, 在表目录下会有相应的子目录,当查询时添加了分区谓词,那么该查询会直接定位到相应的子目录中进行查询,避免全表查询,提成查询效率.注意事项:1 . hive的分区使用的表外字段,分区字段是一个伪列但是可以查询过滤。2 . 分区字段不建议使用中文3 . 不太建议使用动态分区。因为动态分区将会使用mapreduce来查询数据,如果分区数量过多将导致namenode和yarn的资源瓶颈。所以建议动态分区前

2021-04-13 14:43:24 79

原创 大数据高频面试题之如何合理设置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:37:55 551

原创 大数据高频面试题之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:32:48 45

原创 大数据高频面试题之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:29:01 99

原创 大数据高频面试题之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:06 91

原创 大数据高频面试题之HiveSQL的转化过程

Hive是如何将SQL转化为MapReduce任务的,整个编译过程分为六个阶段:1.Antlr定义SQL的语法规则,完成SQL词法,语法解析,将SQL转化为抽象语法树AST Tree;2.遍历AST Tree,抽象出查询的基本组成单元QueryBlock;3.遍历QueryBlock,翻译为执行操作树OperatorTree;4.逻辑层优化器进行OperatorTree变换,合并不必要的ReduceSinkOperator,减少shuffle数据量;5.遍历OperatorTree,翻译为MapR

2021-04-08 10:10:10 44

原创 大数据高频面试题之Hive的内部表和外部表

创建表时:创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变。删除表时:在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。1.未被external修饰的是内部表【managed table】,被external修饰的为外部表【external table】2.内部表数据由Hive自身管理,外部表数据由HDFS管理。3.内部表数据存储在hiv

2021-04-08 10:09:22 55 1

原创 大数据高频面试题之Hive的优缺点

1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。2)避免了去写MapReduce,减少开发人员的学习成本。3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。缺点1.Hive的HQL表达能力有限(1)迭代式算法无法表达(2)数据挖掘方面不擅长,由于MapReduce数据处理流程的限制,效

2021-04-08 10:08:39 129

原创 Hive的架构组成详解

如图中所示,Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。一、概要用户接口:ClientCLI(command-line interface)、JDBC/ODBC(jdbc访问hive)、WEBUI(浏览器访问hive)元数据:Metastore元数据包括:表名、表所属的数据库(默认是default)、表的.

2021-04-02 23:41:12 470

原创 Hive是什么?

Hive是什么?一、概述Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。而且,hive十分适合数据仓库的统计分析。二

2021-04-02 23:38:57 180

原创 Hadoop生态圈中各个服务角色

Hadoop生态圈中各个服务角色zookeeper角色:ZooKeeper服务是指包含一个或多个节点的集群提供服务框架用于集群管理。对于集群,Zookeeper服务提供的功能包括维护配置信息、命名、提供HyperBase的分布式同步,推荐在 ZooKeeper集群中至少有3个节点。JDK角色:JDK是 Java 语言的软件开发工具包, JDK是整个Java开发的核心,它包含了Java的运行环境,Java工具和Java基础的类库。Apache-Flume角色:Flume是Cloudera提供

2021-04-02 23:34:17 111

原创 Hadoop为什么会有Yarn?

Hadoop为什么会有Yarn?Hadoop2.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:32:48 56

原创 yarn架构组件

YARN 总体上是 master/slave 结构,在整个资源管理框架中,ResourceManager 为 master,NodeManager 是 slave。YARN的基本组成结构,YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等几个组件构成。ResourceManager是Master上一个独立运行的进程,负责集群统一的资源管理、调度、分配等等;NodeManager是Slave上一个独立运行的进程,负责上

2021-03-10 16:32:01 92 2

原创 简单的介绍一下YARN

Apache Yarn(Yet Another Resource Negotiator的缩写)是hadoop集群资源管理器系统,Yarn从hadoop 2引入,最初是为了改善MapReduce的实现,但是它具有通用性,同样执行其他分布式计算模式。在MapReduce1中,具有如下局限性:1、扩展性差:jobtracker兼顾资源管理和作业控制跟踪功能跟踪任务,启动失败或迟缓的任务,记录任务的执行状态,维护计数器),压力大,成为系统的瓶颈2、可靠性差:采用了master/slave结构,master容

2021-03-09 21:09:46 81

原创 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:57:05 46

原创 MapReduce的序列化

1.概述序列化(Serialization)是指把结构化对象转化为字节流。反序列化(Deserialization)是序列化的逆过程。把字节流转为结构化对象。当要在进程间传递对象或持久化对象的时候,就需要序列化对象成字节流,反之当要将接收到或从磁盘读取的字节流转换为对象,就要进行反序列化。Java的序列化(Serializable)是一个重量级序列化框架,一个对象被序列化后,会附带很多额外的信息(各种校验信息,header,继承体系…),不便于在网络中高效传输;所以,hadoop自己开发了一套序列化

2021-03-08 11:47:14 44

原创 MapReduce中排序发生在哪几个阶段?

一个MapReduce作业由Map阶段和Reduce阶段两部分组成,这两阶段会对数据排序,从这个意义上说,MapReduce框架本质就是一个Distributed Sort。在Map阶段,Map Task会在本地磁盘输出一个按照key排序(采用的是快速排序)的文件(中间可能产生多个文件,但最终会合并成一个),在Reduce阶段,每个ReduceTask会对收到的数据排序,这样数据便按照key分成了若干组,之后以组为单位交给reduce方法处理。很多人的误解在Map阶段,如果不使用Combiner便不会排

2021-03-08 11:44:33 290

原创 mapreduce为什么分两部分

是为了实现分布式计算,提高计算效率。很多情况下都是需要对整个数据集进行计算操作,单单的分成每个单独的小部分虽然能提高计算效率,但是导致无法完成实际需求,是没有任何意义的,所以添加一个reduce阶段,负责将分成多个部分计算的结果汇总进行处理,使得更加能满足一般需求。...

2021-03-07 18:16:08 278

原创 MapReduce的优化

一、概述优化前我们需要知道hadoop适合干什么活,适合什么场景,在工作中,我们要知道业务是怎样的,能才结合平台资源达到最有优化。除了这些我们当然还要知道mapreduce的执行过程,比如从文件的读取,map处理,shuffle过程,reduce处理,文件的输出或者存储。在工作中,往往平台的参数都是固定的,不可能为了某一个作业去修改整个平台的参数,所以在作业的执行过程中,需要对作业进行单独的设定,这样既不会对其他作业产生影响,也能很好的提高作业的性能,提高优化的灵活性。现在回顾下hadoop的优势(适用

2021-03-07 18:13:54 122

原创 如何使用MapReduce实现两表的join

map join:map side join 是针对一下场景进行的优化。两个待连接的表中,有一个表非常大,而另一个非常小,以至于小表可以直接存放到内存中。这样,我们可以将小表复制多份,让每一个map task内存中存在一份(比如放在hash table中),然后只扫描大表:对于大表中的每一条记录key/value,在hash table中查找是否具有相同key的记录,入股有,则连接后输出即可。场景:MapJoin 适用于有一份数据较小的连接情况。做法:直接将较小的数据加载到内存中,按照连接的关键字建立

2021-03-05 15:25:04 303

原创 MapReduce的shuffle过程

mapper()方法做业务逻辑处理,然后将数据传到分区方法中,给数据标记好分区,将数据发送到环形缓冲区环形缓冲区默认100M,达到80%的阈值进行溢写操作溢写之前会进行排序,排序的规则是字典序排序,排序的手段呢是快排溢写会产生很多溢写文件,溢写文件默认达到10个会进行“墨汁”合并,合并时采用的算法是归并排序也可以进行combiner局部聚合的操作,前提是局部聚合的结果不会对最终的结果有影响等到所有的maptask运行完毕,会启动一定数量的reducetask,并告知reducetask读取数据的范

2021-03-05 10:30:04 89 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:49 214 1

原创 简单描述MapReduce(mr是什么?)

概念Hadoop MapReduce 是一个分布式计算框架,用于编写批处理应用程序。编写好的程序可以提交到 Hadoop 集群上用于并行处理大规模的数据集。MapReduce作业通常将输入数据集拆分为独立的块,这些任务由map任务以完全并行的方式进行处理。框架对map的输出进行排序,然后将其输入到reduce任务。通常,作业的输入和输出都存储在文件系统中。该框架负责安排任务,监视任务并重新执行失败的任务。MapReduce可以分成Map和Reduce两部分理解。1.Map:映射过程,把一组数据按

2021-03-04 14:31:56 215 1

原创 HDFS压缩方式

文件压缩主要有两个好处,一是减少了存储文件所占空间,另一个就是为数据传输提速。在hadoop大数据的背景下,这两点尤为重要,那么我现在就先来了解下hadoop中的文件压缩。1 gzip压缩优点:压缩率比较高,而且压缩/解压速度也比较快;hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样;有hadoop native库;大部分linux系统都自带gzip命令,使用方便。缺点:不支持split。应用场景:当每个文件压缩之后在130M以内的(1个块大小内),都可以考虑用gzip压缩格

2021-03-03 14:41:03 128 1

原创 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:15:42 102

原创 大数据面试之HDFS小文件问题及解决方案

小文件是指文件size小于HDFS上block大小的文件。这样的文件会给hadoop的扩展性和性能带来严重问题。首先,在HDFS中,任何block,文件或者目录在内存中均以对象的形式存储,每个对象约占150byte,如果有1000 0000个小文件,每个文件占用一个block,则namenode大约需要2G空间。如果存储1亿个文件,则namenode需要20G空间。这样namenode内存容量严重制约了集群的扩展。 其次,访问大量小文件速度远远小于访问几个大文件。HDFS最初是为流式访问大文件开发的,如

2021-03-01 22:40:31 139

原创 HDFS的安全模式

什么时候进入安全模式?有两种方式人为进入集群二次启动安全模式有什么特点?安全模式中只能读取数据,不能修改数据(增、删、改)在安全模式下集群在做什么?在安全模式下集群在进行恢复元数据,即在合并fsimage和edits log,并且接受datanode的心跳信息,恢复block的位置信息,将集群恢复到上次关机前的状态如何进入/退出安全模式?进入:hdfs dfsadmin -safemode enter退出:hdfs dfsadmin -safemode leave.

2021-03-01 21:38:24 26

原创 大数据面试之HDFS的fsimage和edit logs文件分别指的是什么?

.fsimage:HDFS文件系统元数据的镜像文件,其中包含HDFS文件系统的所有目录和文件inode及相关属性的序列化信息。edits:用户操作的编辑日志文件,存放HDFS文件系统的所有更新操作的动作,文件所有写操作会被记录到Edits文件中。在namenode运行期间, 客户端对hdfs的写操作都保存到edit文件中, 久而久之就会造成edit文件变得很大, 如果namenode重启, 它会将fsimage中的内容映射到内存中, 然后再一条一条执行edit文件中的操作, 所以日志文件

2021-03-01 17:08:49 221 1

原创 HDFS故障类型和其检测方法

常见的故障三种 节点故障,通讯故障,数据损坏。节点故障主要关注DateNode的检查方法DateNode每三秒会向NameNode发送自己的心跳信息如果十分钟内NameNode没有收到心跳信息,就判定DataNode死亡通讯故障每当发送数据,接受者会回复一个应答信号如果没有收到应答信号(多次尝试),发送者就会认为主机已经挂掉,或发生网络错误数据损坏校验和-数据当向硬盘存储数据时,也会存储校验和...

2021-02-28 22:37:14 448

原创 大数据面试之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:23 73

原创 大数据面试之HDFS架构的稳定性

1. 心跳机制和重新复制每个 DataNode 定期向 NameNode 发送心跳消息。如果超过指定时间没有收到心跳消息,则将 DataNode 标记为死亡。NameNode 不会将任何新的 IO 请求转发给标记为死亡的 DataNode,也不会再使用这些 DataNode 上的数据。由于数据不再可用,可能会导致某些块的副本个数小于其默认值,NameNode 会跟踪这些块,并在必要的时候进行重新复制.2. 数据的完整性由于存储设备故障等原因,存储在 DataNode 上的数据块也会发生损坏。为了

2021-02-28 00:01:41 54

原创 大数据面试之HDFS的读写流程

1. 读流程客户端首先带着读取路径向NameNode发送读取请求NameNode接收到请求后,会先判断是否有权限,读取文件是否存在等等,如果都无误则将 文件所在的DataNode的节点位置,发送给客户端部分或者全部的DataNode的节点位置客户端得到文件块存储的位置后,会调用read()方法,去读取数据在读取之前会先进行一个checksum的操作,去判断一下校验和是否正确,正确则读,不正确 则去下一个存放该block块的DataNode节点上读取读取完NameNode这次发送过来

2021-02-27 23:41:21 80

原创 大数据面试之HDFS副本存放机制

HDFS视硬件错误为常态,硬件服务器随时有可能发生故障。 为了容错,文件的所有 block 都会有副本。每个文件的 block 大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。 数据副本默认保存三个副本,我们可以更改副本数以提高数据的安全性 在hdfs-site.xml当中修改dfs.replication配置属性,即可更改文件的副本数低版本Hadoop副本节点选择

2021-02-27 21:34:24 152

原创 HDFS数据块的认知

数据块 hdfs将所有的文件全部抽象成为block块来进行存储,不管文件大小,全部一视同仁都是以block块的统一大小和形式进行存储,方便我们的分布式文件系统对文件的管理基本概念所有的文件都是以block块的方式存放在HDFS文件系统当中,在Hadoop1当中,文件的block块默认大小是64M,Hadoop2当中,文件的block块大小默认是128M,block块的大小可以通过hdfs-site.xml当中的配置文件(dfs.block.size)进行指定。一个文件100M,上传.

2021-02-26 20:42:10 70

提示
确定要删除当前文章?
取消 删除