00:00
行,那咱们继续啊,呃,首先第一章是我们所了解一下汉语的一个基本概念,刚才在做整个课程介绍的也说也说了,这里面呢有两道面试题对吧,第一个就是架构这一块,第二个呢是与数据库的比较啊,面试的时候可能会问到的啊,那到会我们聊到再说啊,首先第一个什么是汉。那大家问一个问题啊,就这样,大家现在觉得这个写mmr麻烦吗?麻烦,而且是不是写很多没有意义的代码,好多都是相同的,对吧?就其实有意义的代码是不是就那么几行,对吧?啊就是这样子的,你其实你有意义的不就是map里边说读一行数据,把它转成字符串,然后去切分,然后写出去,对吧?然后reduce里面做操作,那后面那个不是按套路什么driver那个端按套路封装的吗?那没有任何意义。
01:04
啊,写起来很麻烦对吧,就八股文似的,对,就跟古代八股文科学考试一样,特别死,对吧,在这里发挥啊,这些东西没有意义,所以说这个时候呢,汉就出来了。他就把那些东西给他干什么,封装起来了,不需要你去写了,然后呢,你给他提供一个还口,也就是我们所谓的叫circle啊,最后呢,我们提circle,或者还有都是讲这个东西啊,呃,你只要写一个词语句,然后呢放在它的一个框架里面去执行。它自己呢,就能把你的海口解析成对了。对好吗?啊,就做这个事情,就类似于很简单啊,假如说我们要做一个事情,C的一个ID字段,然后什么抗新,类似于这样的服装一张表,对吧?啊然后呢,Group ID。你写这个,So,那你想想这个东西它翻译原mmr其实也比较简单。
02:03
无非还是解析这个东西,但是它不是用的像麦斯一样,那个什么英德DD啊,或者麦S米奇,他用的是mmr,对吧,那你想想看,我们要实现刚才我们所说的这个S课的思路,对吧?你到最后大家在学习汉语过程当中都一直要做这个事情啊,我们所写的S考,哪怕你不去做这个事情,你要想一想。用MR应该怎么实现?你要思考一下这个问题,这是我们学mmr的一个必要,对吧,你要想一想这个问题。而且你要知道,我们所有的海口,只要在汉口当中能运行,就一定能翻译成吗?对不对,因为他自己他框架都能翻译了,但是反过来就不一定了,我说所有的这个MR的任务都能翻译成have,这个就不行了。对吧?啊,其实它就是这么一个框架啊,就是这么一个框架,是是什么东西呢?就是我们刚才所说的,你要把S翻译成这个MR,这是它的一个本质啊,那我们再来看一下,它最早呢,是由这个Facebook开源的,用于这个解决。
03:10
海量这里有两个词对吧,第一个呢是海量,第二个呢是结构,结构化位置啊,它不能处理的数据,像mmr当中,你的数据是第一行一个字段,第二行两个字段,第三行五个字段,第四行呢三个字段,这种它就处理不了。对吧,所以它是结构化的,你的每一行呢,你分割符可能得一样,对吧,我分割成它的列呢,得一样。啊,他只能处理这种,所以说我们刚才所聊的嘛,你用M2能够解决的很多问题,可能用这个什么。Have就解决不了啊,但是have能解决的问题呢?二一定能解决。啊,是这样的一个工具啊,然后呢,看一下啊,它是基于哈杜的一个所谓的叫数据仓库工具,注意这块叫数据仓库啊,不叫数据库不一样对吧,所谓的数据仓库呢,那其实你看这个名字啊,它还是干什么存数据的地方,而且它是大了一个仓库的。
04:15
啊,可能存的数据怎么样更大,而且仓库里边放的数据呢,就是说你想想看,正常那个仓储仓库里边嘛,它里面放的数据都要干什么,都放的内容都要分门别类。对吧,都要分分别类,那这个是我们后期要去聊的一个事情,在have里边呢,我们不可能说给大家大一个数仓,因为整个数仓呢,我们后面要讲一个大的一个项目,整个的下来可能在12~13天的一个项目,你说我在汉语当中说这块一个概念,把它介绍清楚,那是不可能的,对吧,所以知道一下,它也是存数据的一个地方,而在have呢,它是一个比较常用的一个数据仓库的一个工具。啊,就构建这个数据仓库的一个工具啊,你只要了解数据仓库现在呢,是存放数据的,这个存放数据进去之后呢,是需要分类的,分为别类的就够了。
05:09
啊,现在只要了解到这就够了,然后呢,它能够将结构化的数据呢,映射为一张表啊,并提供类似S的一个查询功能。啊,其实就是这个类色克,就是我们说的那个什么海口啊,就是我们所聊的一个circle啊,这是简介它的一个东西,那本质呢,我们刚才其实也聊到了啊,本质我们先看这三句话,然后再看这个过程,对吧?第一个have需要处理的数据呢,它是存储在IDF,第二个have的分析数据底层的实现呢,是ma克六。啊是MR,同时它任务的执行运行在延上面。那跟哈多就是我们刚才说的,就是把我们写的斯克干什么。
06:00
翻译成了MRMR呢,正常的读HDF数据,MR是不是交给雅安去运行啊,所以从这个角度来说呢,Have相当于是哈多的一个客户端。一个分析的客户端,只是说给用户提供了一个客户端的一个入口。对吧,你去提交circle狗,然后呢,让我自己去翻译成肉去,行,你就不用管了,你就给我S就好了。所以既然它是作为一个客户端存在的。大家之前学哈able,它都有一个叫集群的概念,对不对,汉姆没有集群,不需要按集群。因为在客户端呀,对吧,就类似于你想想看啊,我们是不是经常会写HDFS一个代码,你去创创建一个FS。对吧,File system创建一个文件系统,然后去调用相应的API吧,那这个file system我们是不是把它称为客户端。
07:00
对吧,而我们所起的IDFS这一套服务,那node跟多个node这个我们把它称为叫什么服务端对吧,客户端去连服务端,所以你你有写过什么把把你的客户端写成一个集群吗。没有客户端都是什么单节点的对吧,那假如说是同样的一套服务器啊,假如说都是连我这块,那大家是不是都可以作为客户端,但你们都是什么独立的对吧?也就是说汉这个东西呢,你也可以部署多台。就102 103 104,我们都可以去部署这个汉,但是他们不是一个什么集群在工作的,他们独立工作的,他们可以去访问相同的数据,对吧,可以做相同的计算,可以用同一套集群的资源。都可以,但是他们三个人不是说在一起工作的,这个概念要清楚对吧,他们三个人之间是不做什么互相通信的,因为一个集群,他们节点之间一定是要做什么。
08:02
互相的通信的对吧?啊,他一定要做这个事了啊,所以说你要清楚这个点啊,后面呢,我们在搭建集群的时候,你搭建这个have的时候,你就知道诶,它没有这个所谓的一个集群的概念啊,单节点就够了,但是你可以部署多个节点,也就相当于装了多个客户端呗,启到多个客户端而已,就相当于这个事儿啊,没有其他的作用,对吧?好,那接下来呢,我们了解了它的一个本质之后,接下来我们看一下它的一个整个的一个过程啊。就S转化成MR的一个过程,当概怎么样啊,当然这一块呢,我没有去细聊,因为它整个的就翻译的过程比较复杂的,首先呢,它会通过我们的搜狗进行分析,对吧,之后呢,大家看其实这这个事情啊。都要提前做好的,在have当中就已经封装好了,就是说呢,对于常用的一些so的分析,然后呢,把这些关键字写成什么他妈的500。
09:02
对吧,假如说我们之前所聊的select的,你自己现在可以想一个这个事啊,假如说select的我不解决了啊呃,我随便来一个什么字段,假如第一批D,然后呢,看的新。From一个表可能来自于MP员工表,对吧,然后后面是不是要写一个group by这个第一批的ID啊,对吧,这个so。那现在have当中可以直行那个内容,那你想一想,这个东西翻译成MR应该怎解?当然这个是第一批,我少写了这个,知道前面用的第1D吗,对吧。那其实翻译成MR的话,那你就想这个应该怎么写,怎么写,其他东西不用考虑。
10:13
那这就涉及到MR整个的一个运行流程啊,各位说一说MR这个整个的执行流程,说大的方向就行了。就怎么走的。前面对前面是什么切片啊,这乱七八糟事对吧?啊,从MR的组件开始聊,首先是对的方对吧,读数据,读进来数据之后给map卖给,然后给奥的form对吧,是这样的一个流程,那你想嘛,它其实将这个S不就翻译成这几步吗?首先是不是根据from这个来决定input的风慢的读什么数据。对吧,啊,肯定要根据这个设计好,那from我们是一张表,我们的汉里面给一个表明,它凭什么能知道。
11:11
HDF这个数据在哪?对吧,大家想一下这个问题,哎,这个问题我们应该怎么解决呢?我给的是一个表明,但是呢,我mmr在读的时候,我input方法是不是应该读一个文件名或者一个文件夹的名字,那这个东西应该怎么去解决?刚才有同学提到了,说去找name note原数据没有问题,这个最终肯定要找到内note原数据,但是你通过一个表明怎么找name note原数据,Name note原数据里面存的是什么东西啊?是那个路径和这个node上那个。文件的关系吧,啊是这个东西你拿着表明肯定找不到呀,对吧,所以怎么办?
12:05
对,有同学提到了一个词叫映射。就跟name note保存这个原数体一样的,那have里边它能够去访问,就通过这个表明去访问到HDFS数据,所以说它内部是不是应该有一个东西将这个表明和HDF数据给他看什么映射起来了。对吧,那这样是不是就通了。啊,所以这是后面我们要讲的,这也是have的一个属于have的原数句。就记录了你所有的表跟HDF法的什么对应关系啊,这第一个from肯定要先走from法,对吧,那接下来正常的搜索逻辑应该怎么办?我已经找到数据了,我已经读进来了。你要去写,那写map就要根据我们的什么group back的这个地方来写,对吧,更重要的是这个地方来写,你看啊,我们要根据第1PTD,然后呢去求。
13:14
人数对吧,部门号就是说这个需求呢,我们要求每个部门有多少人,其实翻译过来在MR当中,这是不是就是一个。那么你放在group位置的内容,它是不是应该放在map的什么K的位置?勾派是不是分组啊,就是reduce是不是组聚合呀,对吧,那map里边它要求的是count新,其实count新还可以写成什么抗一或者说抗的。看我看的新用什么可以写成看一啊,也可以写成看的一个列名啊,都可以吧,对吧?啊是这样的一个内容。那其实这块无非就求一个波com,那么在map里边呢,我们只要把第1PDD放在T的位置,而value的位置放那什么?
14:09
放一,你如果说看到看,那我放了无所谓,放什么都行,因为最后到里边去干什么,来一条我累加的对吧,我再看我累加就后面放什么东西无所谓,因为如果你放到一,那我就加这个数据。如果你放的不是一,那我就累加个数。对吧,其实放一更好一点。因为如果放一的话,我们中间可以加什么。Comp组件吧,对吧?啊,可以将comp组件去完成它的一个累加计算对吧?啊做这个事情,其实这是翻译的个过程啊,所以说在这个过程当中呢,我们聊到了啊,在from首先肯定要找到这个数据所在地啊,但是我们刚才就遇到一个问题,它是凭什么能通过这个表明能找到它所在NDF这个数据路径的啊,它自己存的这个什么映射关系对吧,就是汉语当中所谓的这个原数据啊,到时候你这个原数据呢,我们能看得到,大家看一下它确实当然除了存这个东西之外啊,它还存了很多的东西,就是例如这个表的权限啊。
15:19
对吧?啊,这些东西都会去存啊,但是这个我们不关心,我们更关心的是什么,他把这个表明和这个什么HDF路径做为映射,那这样我们只要from一个表明,它就能够找到对应的HDF路径啊,这个是非常关键的,对吧?那之后呢,就根据对应的语法,你像这个搜,那你自己是不是写MR能写出来啊,那后面也要做这个事情,你要想一想,我们所有的S都去想一想,用MR应该怎么实现,所以刚才我们所聊到的,它就会根据我们常规的字段反法。封装好一个一个的模板啊,然后把这些模板呢,封装到焊当中,Mmr对吧?啊,它对应的一个架包封装在这啊,这个就是说你在把help安装好之后,这个事情他就已经干什么完成,完成了他就已经做好了,因为这个时候我们还没提到S呀,他不能说我们S来了,他再去创建模板吧。
16:17
他应该就调用模板了,对不对啊好,那接下来呢,是我们的客户端,客户端正常的呢,用户根据所谓的业务需求。写我们的搜狗语句,然后他就会自己把这个搜狗语句呢,去我们模板当中去找到。对吧,对应的模板,然后呢,找到之后它就可以干什么。去执行对应的模板对吧?啊执行运行MR,然后呢,生成结果,结果之后给给个什么,还要给客户端啊,所以刚才我们看到这块东西呢,先出了,因为他在我们搭建好have的时候,就已经把这个事情做好,就have其实就做了这个事情。它里面写了一套逻辑,将我们的搜Q转换成对应的什么啊,其实have的一个工具就做这个事啊,啊那之后呢,你客户端提交了搜课来了,我只要根据这个内容往里写,所以说这个时候你假如说你随便造一个。
17:16
函数它能认吗?这不是按照我们正常的最后说自定义函数这种方式,我well,我写的wewer。他能认吗?他肯定就认不了了,对吧?啊,因为没办法,因为你这个东西不在我的什么模板里啊。啊,它是根据500来的,所以说它的语法也跟so一样,也是的比较死。跟MYL里边一样啊,就必须你得遵循它的什么语法规则,哪怕有一点东西不同,他都不认了,他模板解析不了的,相当于对不对啊啊,所以就解决不了D啊,它比较简单嘛,你定义的一个变量名随便定义对吧,我想叫A就叫A,想叫BB就叫AB啊这个地方不行对吧?好,这是我们所聊的have的一个本质啊,是这样的一个东西啊,所以就了解一下,那总结一下啊,其实have呢,就相当于是哈多的一个客户端。
18:06
通过提交搜狗。让have去自己去解析,封装成MR任务,去HDFL读数据,提交给雅安执行,就这么多样东西,对吧?啊,这个本质你要把握清楚啊,行,这是要的。
我来说两句