00:00
好,接下来呢,大家思考一个问题哈。比如说啊,上节课呢,我们是运行了一下这个程序,那么这个程序到底是在哪运行的呢?是不是在我们的集群呢。思考一下。那我们来看一下啊,看一下我们当前的集群。有启动吗?我们的集群并没有运行,那并没有运行,那刚才这个代码在哪走的。哎,其实呢,它是在这个本地运行的哈,它通过这个下载了hioop对应的这个依赖,哎,进行正常运行,相当于是本地模式。OK,因为你从这个它的路径上也能看出来,我们这里面输入的路径都是哪儿的。都是你当前Windows环境对应的输入路径和输出路径。那你这个在本地运行。不行啊,因为未来我们要在生产环境下运行,肯定是扔到Linux虚拟机上去跑。对吧。那如何将这个代码发送到这个Linux虚拟机进行运行呢?
01:01
那我们首先想到的就是打包呗,诶把它进行打包,然后上传到集群上不就可以了吗?行,那打包的话需要打包对应的插件,那首先呢,这里面把这个打包插件拿过来啊。拿到这儿。放到这个依赖后边。嗯,加载过来之后啊,给大家解释一下对应的这些插件,首先第一个呢。是ma啊computer的插件编译插件3.6.1,然后下面呢,这个是用的JDK1.8啊,对这个项目进行一个编译,这是它。嗯,再往下。下面这个呢,叫ma啊什么这个插件,那这个插件呢,我先给它注释掉。诶,我先剪切走,剪切走之后,我先用妹妹给你打包看一下效果。啊啊打包。哎,我先不用后面那一部分。他给的。
02:00
OK,编译完了,编译完之后呢,我们这里有一个open in,然后路径。这里面就来到了这个这个地方,那大家看一下啊,我打包完之后的这个价包多大呀。6KB呀。是不是非常小啊,那为什么非常小呢?原因是因为这里面依赖的价包没有打进来。那他都依赖哪些家包呢?我这里面一共依赖的有开接unit,还有呢是这个日志对吧?啊打印日志那最主要的它的大小还是很大的,你这才6KB,很显然它是没有打打进去的。那没有打进去的话,能不能用呢?那分情况了,如果说你把这个价包上传到一个集群,集群上有你这些。依赖相关的这个价包。那你就直接可以运行没问题。但是如果你机器上没有对应的什么海毒环境啊,或者结构内的环境,以及这个打日制还有一些其他一些架包的环境,那么你就需要把这些依赖。
03:02
打进来。哎,这是区别哈,行,那我们这里面呢,正常情况下是不需要的哈,不需要对应的依赖,比如说我们这hi do法这个集群上是不是就有啊,哎,集群上有,然后呢,集用内这个是单元测试,我们不需要,那还有呢,打印日志啊,这种日志呢,我们也可以不用打,没问题。那是正常情况是可以的,那如果说我们在呃,还有这个项目啊,越来越复杂的时候,需要更多的依赖。那我们想打这种带依赖的架包怎么办呢?那你就把这个刚才这个比说J。你撤销,撤销之后我们重新来打包。一重新打包啊,有同学上来习惯性的这个clear clear一下啊,其实clear clear不clear clear都行啊,Clear clear呢,只是呢,把右边这个迅速的给清没了啊,其实正常情况下你点击这个package这个程序啊,这个没文打包工具,它就会clean对吧,验证,然后编译测试,最后打包啊这些步骤呢,它都会去找啊,那行,那我们打包一下。
04:10
稍等一下啊。这个带着依赖啊,他打包的时间就会长一些。你看现在打包成功了,打包打包成功之后呢,我们来看一眼。对吧,现在就是两个了,呃,上面这个不带依赖呢,仍然是6KB,下面带依赖的这个大小啊,就多了啊40多兆了,行,那我们用哪一个,我们还是用这个哈,用这个把它复制出来。把这干掉,嗯,粘过来之后呢,我们这里面给它重命名WC简单一些啊,简写一下,方便我们就调用行,那下面呢,我们把这个集群呢,得启动一下。My hideop。启动机型。那启动进行过程当中,我们来思考一个问题哈,我现在打这个架包,它的路径是什么?
05:05
我这里对应的路径是不是Windows环境的路径啊,D盘D盘,那我上传到Linux环境之后,它有这个路径吗。没有吧,Linux下面是根目录开始,哎,然后正常运行,那你这个输入路径,输入路径不存在呀。那怎么办呢?那我们需要对它进行一个修改,改成对应的集群路径。那集群路径,我这个程序我想更灵活一点,也就是说我想根据你的输入的。这个路径根据你执行程序的时候传进哪些路径。然后我来改,那比如说我们类似啊,你还记得不记得我们在讲hadoop。嗯,OT哈豆这样。我们之前写的程序呢,叫hioop价包赛尔。再见。这对吧,呃,She下面呢也要有hi doop hiop下面呢有这个MAP6MAP程序呢,有hi doop map以example,这是我们官方的word count案例,然后input。
06:08
Output,以前我们是不是这样写的,那么这个输入路径和输出路径,我们是可以根据你这个程序,哎,动态的输入对吧,我们想达到这种效果,那想达到这种效果的话,我们就需要改变你传进来这个固定死的参数,那怎么办呢?哎,那这里面啊,呃,我再复制一份哈,这个原来这个word呢,我保留。保留的话呢,我再创建一个包。叫。com点硅谷map。reduce.word。Count to,哎第二个案例,第二个案例呢,我把上面这三个呀,哎,统一的CTRLC复制过来,一定是统一复过来哈,因为你不统一复制过来的话,比如说你先复制的是这个driver,那driver它就会去导上面这个包的这个map和对呃map和reduce and这个导包就发现这个呃串序了哈,你同时倒过来那就没问题,那你看同时倒过来上面都是嗯这个word count2work count2啊。
07:07
好,那来到这里面摘窝,下面这个地方要改一下。把它变成动态的传入。阿格斯。这大家有了解吗?二是相当于是你没方法对吧,哎,从这传进来的相关的参数,那后面呢。阿克斯一。哎,X0呢,表示的是你传进来第一个参数,那X1表示传进来的第二个参数,那行我们再对它呢,再进行一个打包。这个才是我们真正想要的哈。那我把桌面那个删掉。好,执行完毕了,执行完毕之后呢,我们来看一下这个对应的这个值啊。
08:00
嗯,把它打开右键。Open。打开文件夹,那我们就导这个上面这个哈,不带依赖的。WC,然后看一看我们集群是否已经启动了,这就不要了啊。自己来写。GPS2。好,集群启动成功,那我们把这个架包传上来,传上来的话很简单啊,你直接拖拽。就可以。非常方便啊。WC点价对吧,那我们看一下这个集群上有哪些路径我们可以用啊。Hi doop 9870。打开input下面,Input下面有一个word.t对吧。看一下。卡住了,嗯。哎,有这个值,有这个值的话,那我们就来处理它。那我们现在的写法呢,就是hi doop价,运行WC点价,那WC点价我们不能像那个官网那个案例的直接输入这个world countt,我们这里面需要输入的是全列名,因为它那个是做了这个呃,特殊的一个映射关系啊,我们这里面怎么办呢?找到这个driver,哎,别点错了啊,是这个word count2,然后右键copy。
09:21
哎,在这里面哈啊。Copy reference。右键copy reference,诶拷贝它的权利名。然后呢,来到这儿。粘贴粘贴之后,哎,这地方要看一下啊,是what count2啊这个driver。嗯,然后我们是音input的路径。对应的output对吧,Input out检查一下,这样全类名input output好看一下这个机器上output有没有这个路径啊,有的话把它删掉。哎,真有哈,把它删掉。啊嗯,OK,准备就绪,准备就绪啊,我们把这个监控这个任务运行情况,103也把它打开。
10:08
那我们开始执行走。这是我们自己写的这个word count,看一看跟官方的word count有没有什么差别啊,那同时呢,我们把这个刷新。对吧,现在这里面就跑了一个任务WC点加,目前呢正在运行。看一下哎,Map结束了啊。我们看一下map。好,那这个任务呢,就已经运行结束了,那运行结束之后,我们看一下这个空台有没有问题啊。确实结束了哈,结束之后来到这儿吧。刷新刷新呢,Output就来了,Output来了之后看一下。点开结果。哎,这个呢,是班长波波苍老师啊,宋宋老师,杨哥,那也得看一下我们的输入文件,是不是这个啊。
11:07
应该是这个。我们的输入WC点一。是word啊。确认一下。对吧,这也是输入数据,输入数据呢,宋送呢出现两次,苍老师呢出现两次,班长呢出现一次,波波呢出现一次啊严格出现一次,对吧?诶现在呢就已经完成了,比如说未来啊,我们在呃企业里面开发的时候怎么办呢?通常情况下是在Windows环境下搭建一个开毒环境,进行一个编写,编写完之后代码进行打包,打包之后上传到APS。然后进行执行命令。比如说我们会放到。这地方。对吧,哎,执行这个命令,那大家有的时候可能会发现啊,海哥,我这么就执行这一个价包,那如果我在企业里面是100个价包。那怎么办呢?诶记住如果是100个啊,或者几百个加包,那其实我们后面会写一个脚本,我们后面讲书商项目的时候,我们里面要跑的这个任务啊,至少得100多个,那100多个呢,那任务哪一个任务先执行对吧?哎,谁任务执行完毕之后再执行下一个任务,那我们有统一的任务调度器,比如说阿兹卡班啊阿兹卡班。
12:23
可以变,哎,后面呢,会有专门的调度器来调度,同时呢,我们也会把这些架这个。这个命令行放到一个脚本里面,比如说S脚本里面,把它封装成脚本,这样我们执行这个脚本,方便我们统一的一个管理啊,这是在企业里面怎么用啊。
我来说两句