00:00
好,接下来我们来看一下HDFS文件块大小的一个问题哈,那这是一道新浪的面试题。那看看这个难度怎么样啊。来看一下。首先HTS中文件在物理上呢是分块存储的,块的大小呢可以通过参数来规定,那首先。回忆一下,还在嗨102上,它存储数据,每一个数据都是按照文件块的形式存储。那一个文件块呢,默认值都是128兆,那如果我传过来1KB的文件,它是一定占用128兆的存储空间吗?不是它只在用1KB。那其他这些空间给谁呢?哎,别人可以使用。那这128兆有什么含义啊,诶相当于是我这个最大的这个容器,比如说它的上限最多能存储128兆。啊,是这个含义哈。OK,那这个参数当然可以这个去设置啊,这是默认值,后续呢我们也可以修改,比如说这个DFS block size,来先查一下吧。
01:06
在哪里呢?在这个ay default,哎,这里面我提前给你查好了哈,叫DFS block size,它的大小呢,是它,那它是多少啊。大家有没有算过?我们用计算器算一下哈。算一下。这个值呢是134。二幺。7728,然后呢,你除以一个1024。等于它对吧,然后再除以一个1024。哎,就是128兆啊,128兆哈。先关掉。啊,一个文件块的默认大小呢,是128兆,那么这个块大小跟谁有关系呢?我们来看下面的的一个描述啊,啊,如果寻址时间约为十毫秒,即查询到目标块的时间为十毫秒,啥意思呢?
02:10
在这个集群当中啊,是不是已经存好了数据啊,比如说在102上存好了这么多块信息,那么未来客户端会查询说我想要哪一块哪一块数据。对不对,哎,比如说宋老师就想要block啊666。这块。那他是不是得从上到下一直去循环便利啊。那它便利到这个他目标想要的这个块儿的时间需要十毫秒。是这个含义哈,好,那再往下走。说寻址时间为传输时间的1%,十为最佳状态,谁说的呢?专家说的啊,中国的专家比较多啊,啊,当然这块的专家是比较靠谱的啊,比如说刚才我们说这个是寻址时间是十毫秒。那为传输时间的1%,十为最佳状态。什么意思,一个是找到对应的块,那另一块呢,是不得数据得传输啊,你得拷贝或者往上上传呢。
03:04
对吧,哦,那这个是传输时间。那你想三个参数,一个是寻址时间,一个是传输参数,传输时间还有个1%,寻址时间有了,1%有了,那算这个传输时间怎么算呢?那就是哎,巡诊时间除以这个1%,是不是就等于这个传输时间呢。哎,那这一除的话,就等于1000毫秒,约等于一秒。啊,那等于一秒,比如说我传输时间是一秒,对吧?哎,那正好。那一秒钟能传输多少内容呢?取决于什么?哎,取决于你磁盘的一个传输速率。那你回忆一下,大家不知道有没有这个移动硬盘啊,啊,如果你是一个普通的移动硬盘。那你要拷贝一个文件到电脑里面,大概的速度是在80兆到90兆左右,我说的是普通硬盘。
04:01
如果你是一个固态硬盘的话,能达到多少,诶,能达到200兆到300兆。那好,那咱们说的是,如果你买的服务器就是这种普通的机械硬盘,那传输速率在100兆左右,对吧,那我们就设置这一块大小为128兆。有同学,有同学说了,海哥,你不应该设置100兆吗?怎么设置128呢?啊,记住在计算机这个领域里面,大家这个1024是整数,100兆它不是一个整数,对不对,因为我们的进制单元是1024。啊,这个要有这个概念哈,所以说这个100兆跟128兆是最接近的。那同学说了,那海哥我就用的是这个固态硬盘,对吧,我公司有钱啊,特别有钱。啊,买的是固态硬盘,那传输速率能达到200兆到300兆,那我这个块大小是多少呢。通常这种情况下,公司的块大小会设置256兆。诶,在公司当中,目前主流的这个块大小,一个是128,另一个就是256,大厂里面通常用的都是256,像这种中小型企业买的是普通的机械硬盘,用的是128兆。
05:11
哎,这就清楚了哈,是这样一个含义。OK啊,这是就能够算出来啊,用你这个一秒钟哎,乘以这个100兆,每秒得出来的就是块大小呢,就是100兆左右比较合适,那这里面我们定义的是128。行,那再往下看下一个问题。说呀,为什么块的大小不能设置太小,也不能设置太大。你能说海哥,那你这个我能不能把这个块设置的特别小,那我是不是传输数据能好一点呢。其实上面还有这样一个问题,说HDFS的文件块设置的太小,反而会增加你的时间。啥意思,假如说给你一个啊,这个块大小吧,设置是1KB。啊1KB,那么我如果有一个文件呢,是100KB。那我要切成多少块?我要切成100块。
06:03
就这一个文件,我要切成100块。那后续我要查询读取这个块信息的时候,我是不是得快速的找到100多个块啊。然后才能一个一个的去读。那我找这个块的过程,这个时间就非常长。对吧,哎,所以说就很慢了。那反过来,如果说我块设置128兆,然后呢,大小呢是10KB。那10KB,那它就在一个框里面对吧,哎,我只要一找到瞬间读回来。哎,效率要高一些,好,那说海哥说那我把这个块设置的特别大,多好啊,你所有的数据过来,我都给你放一个块里面,比如说ETB一个块。行不行呢?让大家回忆一个现象哈,如果你拷贝一个特别大的文件,假如说你这个文件在电脑里面一个T。对吧,哎,宋老师一个小飘飘啊,一个T。那我考这一个G往一个地方考的时候,你是不是感觉这个速度要慢一些。
07:03
啊,而且你计算这一个G的这个数据量,计算速度是不是也慢呢。因为我们未来计算的单元是一块对吧,哎,跟这块是有一定的关系的。我一下处理一个G的数据啊,一个G的数据,那我如果把它拆开。一个T我拆成,比如说100兆,一个100兆,一个100兆,一个100兆,一个100兆,我是不是快速的能得到结果,快速能得到结果呀。哎,你处理这一个T呢,就不利于这种后续的并发运算,而且处理起来比较慢。这是块不能太大,也不能太小,那总结一下,As的块大小呢,设置主要取决于你磁盘的一个传输速率,如果你用的是普通的机械硬盘,那100兆每秒,那你就设置128兆。对吧,啊一块儿,如果你用的是固态硬盘200兆啊到300兆之间。那我们设置的块大小呢,就是256兆左右。OK,这就是新浪的一道面试题,非常简单啊。
我来说两句