00:00
好,接下来我们来看一下hi豆腐的数据压缩。那这个压缩这项技能是非常重要的一个功能哈,那首先我们来看一个场景哈,什么叫压缩啊,其实咱们。电脑都玩的比较溜是吧,比如说打一个资料,这是一个文件,24KB,那我们希望对它压缩,右键压缩对吧,而且还可以选择不同的压缩格式。是这样吗?那假如说我们就选择它可以吧,哎,而且呢,在下面这个地方看压缩方式,哎,有这个存储啊最快嗯较快还有标准。还有叫好这啥意思啊,最好。那也说这个压缩的方式啊啊,看你是倾向于我要求压缩的速度快。还是压缩的速度慢一点,但是呢,我这个存储空间小一点。看你在乎什么了,对吧,那这里面假如说我先选择标准啊,确定你看压缩完之后,由原来的24KB变成了21KB。那这就是一个普通压缩对吧,包括这个压缩,你看我们还可以这样。
01:03
直接变成一个。这个方式啊,也可以啊,也就是说2R扣缀的。行啊,那了解压缩,那压缩它有什么好处,有什么坏处呢。思考一下。对吧,诶好来看一下啊,压缩的优点可以减少磁盘的IO,那比如说我们在map阶段和radio阶段。他们两个之间在经过撒的过程,是不是要经过数据的一个传输啊。你这个map鸡蛋把数据准备好之后放到磁盘上了,那radio端是要拉取自己指定分区的数据啊。那如果拉取这部分数据,它在传输的过程当中采用了IO压缩。那我传输的内容是不是就少了,那速度是不是就快了?对吧?哎,这是一个减少磁盘O,那另一方面我可以减少磁盘的存储空间,比如说刚才我们是24KB,我压缩完之后变成21KB。这是数据量比较小,那如果我说我是100G的这个数据,那我压缩完可能压缩到十个G,那我一下子就减少了90G的一个存储空间。
02:09
对吧,哎,你从这个角度来说,那压缩是非趁的一个技能。那下面再看那这个,那如果这么好的话,那我们所有的数据都压缩多好啊,哎,它也会带来CPU的一个开销,什么意思呢?比如说我把这个数据啊压缩了。对吧,哎,由原来的这个这是100G,压缩完之后变成了1G。变成这么大。那好,那我后续我要想对这个数据进行处理的时候,我是不是得解压缩呀,哎,我还得解压缩。那解压缩是不是需要你CPU的一个计算?那同时你从100G往1G压缩的时候,是不是也得经过CPU计算?说在占用你CPU的资源。哎,当然有好处,有好处有坏处是吧?哎,那再总结一下,好处呢,就是减少了磁盘O,减少了存储空间,但是呢,额外增加的就是你的计算开销。
03:03
那好,那选择压缩的时候要看你是什么样的任务,比如说我们是一个运算密集型的招,你说这里面对这个数据,我需要频繁的加减乘除运算。那怎么办,那这种呢,最好就少用压缩,因为你看它计算的时候对吧,我需要解压缩,解压完之后我再压缩回去。那这个过程当中频繁的浪费CPU。那如果我这个数据啊,它就是压缩完之后,用于网络传输的,传输给对方。我加说一次就行了。不需要多次的压缩和加速,那这种就可以选择。多用亚索。OK,那从这角度了解了压缩和压缩,那下面往下看,那压缩呢,在hi度当中,它也有多种压缩算法,跟我们刚才这个Windows环境下这种你看打开。哎,这里有多种压缩方式类似,对吧,我这也有多种,好,那来吧。
04:02
这里面有,首先有default。GP BP two拉着罗,还有snap,诶,给大家列出这么五种比较常用的压缩方式哈,并不是说一定就是这五种啊,还有很多种哈,这五种呢,比较常用,那首先看第一个条件,它是否是开度之态。那你看啊,Default g j BJ two,还有呢,Snap snap这个呢,得是3.s以后啊,2.7的时候它不支持啊,3.s以后,那这些呢,都是hi度管自己就带。那自己带这个就比较爽了,对吧,直接就诶直接用就行了,那还有一个呢,拉着罗,它得需要额外的安装,就是你需要编译一下源码库。哎,之后就可以了,那我后面我们再讲这个,呃,离线输仓的时候就会给大家用这个拉螺,哎,教大家如何来编译,如何来安装使用啊,这个不用担心啊,复杂的呢,都给你们讲了,像这个简单的,哎,你们一看就会是吧?好。
05:01
那那这个每种压缩它用到的算法是什么呢?那比如说default,那它用的就是default算法,哎,这个G呢,也用的是default算法。好,那下面b je to啊b jep to算法,拉罗拉罗算法,Snap皮算法。Z,没问题对吧,哎往下看,那么怎么能判断出这个文件它是采用了什么方式的压缩呢?那你看这个,诶,它是点后缀是default的,那就是。哎,Default压缩,那GZP是点GC b z two后缀是点b zp two啊,拉罗L啊,然后snap。这样去看,就跟刚才我们看的这个文件当中,你看啊。我们现在这个文件呢,是2AR结尾的,对吧,把它删掉。然后就这。然后变成。Z,你看后缀是不是就Z,哎,这就是能看出来它是哪种。这个压缩方式。再来是否支持切片?咱们在大数据场景下,还有一个切片,额外的一个概念,什么意思啊,我前面有一个T的一个数据。
06:03
你一个T的数据,如果用hi度框架来MR吧,MR来读的话,会出现什么问题?是不是就涉及到一个对这个数据是否支持切片呢?对吧,默认的T的这种格式,那直接就可以读文本格式没问题,但是你现在是压缩呀。你把它压缩成一个整体了。那我读的时候我怎么读啊。是这个问题吧,好,那来看,那谁不支持压缩呢?那不支持切片呢?Default不支持。还有GP也不支持,Snapp也不支持对应的切片,只有谁支持呢?一个是BP two,还有一个呢,是拉折罗。那这俩就一定要重点记忆了吧,对吧?哎,因为他俩支持切片呢,那如果说你map输入端对应的这个数据非常庞大。那怎么办?重点考虑B,这和拉罗对这个数据进行压缩。然后后期我们读的时候就能够直接用切片的方式来处理,那这里面哈,虽然说都支持切片,但是你看拉着罗怎么样,需要额外的创建索引。
07:09
哎,这个我们后面书上项目也会给大家创建索引,然后让他支持对应的切片,诶把最难的这给你讲了。好,那b two呢,它是系统自带的,不需要额外重新锤。这是对应的一个区别哈,好,那你从这几个角度要注意,首先拉罗呢,它得需要安装啊,然后呢,知识切片呢,是有BB two,还有拉德罗,那拉罗需要额外的创建索引,其他的呢,哎,先了解一下就行了。那再往后来看,接下来呢,这里面有一个对比实验啊,网上找了一个实验啊啊首先呢,这是有嗯三种算法对吧,研究算法,拿出其中三个原始文件大小8.3G8.3G,然后我开始执行压缩。那一压缩GZ呢,它压缩完之后的文件是1.8GB,这能理解吗?你看这是我原始文件,然后我压缩,这是我压缩之后的文件大小是不是变小了,哎,是这个意思啊,那这里面8.3G变成它,那我这个呢变成它。
08:08
啊好,我这个8.3变成它,那从这个角度来说,那谁的效果最好啊。是不是一看啊B这个to压缩的效果最好啊,压缩到1.1G,我从这那我是不是减少了大量的存储空间呢。我减少最多吧。嗯,OK,好。那再来,那你光看这个存储空间大小好像也不太科学,那如果说你这个呃,压缩,压缩过程非常漫长,可能需要压一天才能把它压完,那这个时候用户也接受不了啊,那这里面还涉及到一个压缩速度。对吧,你多长时间能把这个压缩到这,从这压缩到从这。那你看G这边呢,是17,呃,这个每秒钟17.5兆。好,那b two呢,是每秒钟2.4兆比。那我这个拉着罗是不是他最快啊,诶拉着罗,你看别看我这个压缩的这个,呃,之后文件比较大,但是我的速度快呀。
09:01
对吧,就像宋老师的对吧,哎,这个虽然说啊,这个效果不咋好啊,活儿比较糙,但是我速度快。孙老师就这个特点啊,速度快。那你像这个呢,干的活呢,比较精致。嗯,到极致,但是速度慢。啊,速度比较慢,那好,那这也是压缩速度,那还有一个呢,叫解压缩速度。你压缩完了这个没问题对吧,你看刚才其实还有个什么问题啊,把它打开。我把它删掉。我压缩完了,我日后要想用的时候,我是不是还得解压缩呀。还是解压缩对吧?啊,那解压缩这个速度我们对它也是有要求的。那这里面谁最快呢?你看还是拉周罗最快。哎,活干的超,无论是压缩速度还是解压缩速度都比较快。那最慢的还是这个b zp to,但是呢,活好啊活好。那这个GZ呢,属于在的那个中间的位置,无论是压缩速度还是解压缩速度都介于这个拉轴螺和b two之间。
10:01
那我这个存储大小呢,也是介于它俩之间OK。那下面我们再来介介绍一个重量级的s snappe在生产环境下也是大量使用的,对吧?哎,那这是官网的一段原话啊,也说这个s snappe啊,压缩方式啊,大概能达到每秒钟250兆,你看碾压他们吗?啊或者更多,然后这个解压缩速度可以达到五秒,这个每秒钟500兆。比他们强很多吧,哎,这是官网的原话啊,我真的提前给你打开了,因为这个网速不是特别好,你打开之后,这是官网的原话,看这块。压缩速度大概在每秒钟250兆或者更高,呃,而且呢,这个解压缩速度能达到每秒钟500兆或者更高。这样吧,哎,这是他原话啊,这是官网啊,谷歌的。行,那好,那这几种压缩方式啊,大概有一定了解,那下面我来看一下在生产环境下如何来选择对应的压缩方式呢。
11:00
对吧,这是我们关心的,那来看说呀,压缩和解压缩这种方式,我们首先要考虑从这么几个因素下手,第一个压缩和解压缩的速度。嗯,还有呢,压缩率就是你压缩之后的存储空间大小。另一块压缩后是否支持切片?这个也很关键。好,那我来看一下啊,那首先来看一下GZGP特点呢,就是压缩率很高,哎,干活很精致。但是它的压缩速率一般就很慢啊,也不是特别慢吧,比比列表图能强一点点对吧?嗯,属介于这个中间,那它不支持切片。哎,这这是它的特点,那再来b two压缩率很高,应该说是最高的,但是呢,还支持切片啊,这个也不错。要命的缺点就是压缩和解压缩的速度很慢啊,非常慢啊。活很精致,很慢,拉着罗,哎拉着螺呢,是压缩和解压缩的速率比较快啊,叫比较快支持切片,哎,但是它这个支持切片要注意需要额外的创建索引。
12:08
这是需要有额外的工作的哈,然后压缩率呢,一般啊,不是那么特别的快啊啊再来,嗯,这个snapping snapping呢是压缩和解压缩的速度啊,非常快啊,可以说是最快的了,但是呢,它不支持切片,压缩率呢也一般。对吧,也是这个干的活比较糙啊好,那在生产环境下怎么选呢。打开。在生产环境map reduce1共有三个地方可以设置对应的压缩和解压缩,一个呢是map输出端,Map输出端,还有一个呢是reduce输出端,这么三个位置,那么这三个位置考虑的因素也不一样,因为在企业里面啊,你考虑的因素,你比如说第一个输入端这个对这个数据压缩,我要重点考虑什么呢?首先啊,这里面有一个事儿先介绍一下,也就前提那你输入端来的数据,我默认如果能够匹配上我这个编码方式,比如说我有你这种解码压缩的方式,那我就直接能用,直接就解了,如果没有的话,那直接就抛异常了,对吧,我解不了,嗯。
13:12
那我重点在企业里面,下面这句话,在企业里面开发的时候,首先第一条你先上来,先考虑你这个数据量多大。有没有你这个块大小的。那就跟128兆比呗,对吧,如果你这个数据量小于128兆。那我考虑什么?那我就不用考虑切片了,对吧,已经小于切片了,那我重点考虑的就是压缩和解压缩的速度。那在生产环境下,一般考虑的就是拉州罗和斯奈皮,优先考虑斯奈皮,因为没有切片的事儿,所以说优先考虑奈,那再来,如果说你的数据量非常大。假如说不是128兆,是一个G或者是一个G的数据,那怎么办?那这时候就考虑切片。那谁支持片B和蜡烛?对吧,哎,这两个啊,那这两个你可以重点考虑,拉德罗比说,在企业里面拉着罗和snap用的是比较多的,哎,重点考虑它。
14:04
那再来接下来来到这个map输出端,那这块我又该考虑什么呢。那这块涉及到的就是map test的数据网络传输的reduce test这样一个过程,要跨服务器的一个通讯,那我指定要尽量减少网络上的一个数据传输。那这时候还有切片的事儿吗?有同学说要考虑切片,跟切片有关系吗?我能进入到map里面,是不是这个切片已经切完了?啊,所以说这地方就不要考虑了,就考虑谁快。那谁快呀?一个是拉住罗快,一个是snap快。那在企业里面用的比较多的是生态品,重点口粒仓就。那再来radio输出端,Radio是输出端,那我要考虑什么呢。记住,永远要看需求,比如说你输出完这个数据给谁用。假如说我这些数据要永久的保存。对吧,哎,长期保存,那我肯定要减少我自己的存储空间啊,对吧,你这么大一堆数据,我是压缩的越小越好啊,那我就慢慢压呗。
15:05
那用谁呀,B这个two或者是G这个啊,这两个压的比较慢,但是呢,我活好啊,压的非常小。干那个。对吧,好,那还有一点,那如果我这个数据作为下一个mapdus的输入,比如说我这个输数据输出完了之后,他还需要反过来给这个map另一个MAP6作为输入数据,那这块你要考虑的是数据量大小,还有呢是是否支持切片。对吧,哎,从这几个角度去考虑就行了。啊,这就是在生产环境下我们怎么玩啊,其实非常简单对吧?哎,那你你回忆一下,在输入端,你重点考虑的是拉罗对吧?啊拉罗啊,Snap品这块啊,如果是数据量比较小的时候,那数据量比较大的时候呢?啊,其实你考虑拉罗就行了,那中间这个位置优先考虑神态皮,那这个最终输出的地方,你要是永久保存,你重点考虑B这to和其这个啊,然后再来一块呢,呃,如果是作为下一个输入,那你再回过来再考虑它。
16:00
就行了呗。嗯,啊,所以说这个压缩和解压缩叭较简单。
我来说两句