00:00
那接下来我们就要进入到数据采集的模块了,那在讲数据采集模块之前啊,我们这有这么一个查看所有进程的脚本,那这脚本有什么用啊,我们现在有三台机器。那每台机器下面我都会部署很多个应用,那它都有很多进程,那我们在查询进程的时候,我就对应的要到不同的机器上来GPS了啊,每台机器我都要GPS,他查看起来啊,就不是很方便,那我现在就在想,我能不能在这一台机器上来GPS,那在这一台机器上它就会打印出来我三台机器的GPS进程呢,还是可以实现的,在这儿啊,我们就有一个查看所有服务器进程的这么一个脚本,我们来看一看。首先还是通过for循环的方式循环我们所有的机器,那在这儿我们就执行这么一行命令。X X sh Dollar循环到不同的机器是用啥呀?Dollar一个星,Dollar星,它就是获取我们在这个脚本当中啊,传递过来的一个参数,你比方说我传过来一个GPS,那么到了星它就能获取到GPSSSH的时候,它就会在三台机器上分别执行GPS,然后打印出来了,好,那这个脚本也非常简单啊,我呢直接给他拿过来,CTRLC来到我的项目当中,我CAD到。
01:34
加目录的闭目录啊,VM一个X cax。然后给它粘贴进来。啊,冒号WQ保存保存完了,我给他一个权限,Ch mod777X好好回车完我们试一试它好不好使啊X靠,跟一个GPSOK,你看它对应的就把三台服务器的进程全都给打印出来了啊由于我们现在还没有运行进程,所以说它没有打印啊那接下来我们就要开始搭建这个大数据组件了,那搭建大数据组件之前,我们首先要看一看我们这个数据啊,它是如何传输的呢?数据通道是什么样的啊,你看啊,这也是我们用户行为数据的一个数据采集通道啊,我们看一看吧,啊数据采集通道,那首先我们在哈杜OP102和103上是不是分别都生成了哎,这么一份日志啊,啊在102和103上都有了,好了,那然后呢,我们要通过把数据给它采集。
02:45
到哪啊,哎,是不是要先给它采集到卡夫卡呀,采集到卡卡的一个topic当中,Topic的名字就叫做topic_log啊好,那在这我们首先是不是,哎日志服务器已经有了,那flow卡不卡我们还没安装吧,好,那接下来我们要安装这个大数据组件啊,那来吧,那第一个我们安装谁呀,我们先安装这个卡豆吧,行,我们先把卡豆给它安装了。
03:12
嗯,哈,杜甫的安装,把文档打开。那安装哈杜来吧,我们安装啊三台三台服务器嘛,安装三台,那安装组件啊,首先我们就要知道这个集群部署的这个规划,那我们哈杜op有这么多个角色,那每一个角色我们都安装在哪一个节点上呢?看在这儿呢,哎,这个大家应该很熟悉了啊,你看消耗内存的分开name note。Resource manager以及secondary name node,哎,我们分别部署在不同的机器上,然后其他的节点啊,你看每一个节点放一个,每一个节点放一个,OK,那接下来我们就部署一下我们的这个哈多跑,那部署哈豆法,首先我们要把这个哈豆的安装包,诶拿到我们的项目当中,好。
04:07
来到哈102CD,杠OPT model soft where,哎,不是杠OPT soft where进来之后啊,我们把哈杜普的安装包啊也给他拿过来。看多吗?OK,把这个拖拽进来好。啊,等一会儿啊哈,度是比较大的啊,你看300多兆。好,那拖拽进来之后啊,我们先给它解压一下嘛,它杠ZXVF好。好3.1.3,然后杠大C啊加压到OTO路啊进来。好。
05:04
那加完之后啊,我们CD到OBD模格进来,进来之后,那我的我的习惯呢,依然是给它重并个名啊MV啊3.1.3名字就叫做哈度啊进来OK,那接下来之后,那来吧,接下来我们CD到哈度公度啊CD到那我们就配置我们哈杜的一些相关配置了啊那说到这儿啊,我们要回想一下了,哈杜我们要修改哪些配置文件呢?那首先是几个啊,我们就想一想了,是不是有五个呀,那第一个是car杠塞,第二个是HDFS杠塞,第二第三个呢,雅N杠啊迈right杠啊迈right杠好,这是四个,那还有一个沃克斯吧,哎,配ers啊一共呢五个配置文件啊好,那接下来我们就一个一个的配置文件修改。
06:04
好。一个个修改啊,首先我们先修改哪一个呢?哎,我们呢,先修改靠杠side啊啊靠塞,那靠杠side在哪啊,我们CD到ETC目录,在ETC目录下面有一个函look,那函动里你看这也就是我们所有的配置文件了,那我们先修改VIM1杠号杠三进来看一看啊,那靠杠赛的这里都修改哪些内容呢?啊我们看一看,首先指定name notde的连接地址啊name note我们给它指定到哈杜1028020,好,那说到这个name note的连接地址啊,它的这个端口号你看现在是8020,那我们现在用的是什么版本呀?是哈杜三点一点X的版本,诶它的默认内note端口号是8020,那哈杜呢,我们知道也有一些大版本的演进啊,那早期呢,是1.x版本,那1.s版本这个端口号是多少啊哎,这个1.s版本呢,它也是8020。
07:16
好,那在一点版本之后啊,还有一个叫2.s版本,2.s版本它的默认端口号是9000。啊9000啊,那2.s版本之后就是3.s版本了,注意3.s版本呢,它也有一个区分,哎,分三点。三点零点X和三点一点X,那三点零点X的时候啊,这个端口号它是9020啊9020 OK,那么到了三点一点S版本了,这个端口号,诶它又回来了,跟1.s版本是一样了啊,它一点S8020啊OK,那这是四个版本的演进啊,那带有哈多吧数据存储的目录啊,哈多吧这个数据存储的目录,那我们呢,给它配置到一个我们自己的目录啊,配置到OPT model哈杜下面的date目录,那它默认存储的是哪呢?它默认存储的是杠time目录啊time-time目录啊,它是临时,哎这么一个临时目录默认呢是存储30天,哎默认的保存30天,30天之后就被清理掉了,那对于我们哈多来说,你把数据给它存储到temp目录了,那time目录默认保存30天。
08:38
30天之后数据咔丢了啊,那肯定不行,我们哈多呢,这个数据是要永久存储的啊,那你把哈的数据给干丢了,那是非常危险的,我们要给他修改一下啊,必须修改。啊,接下来我们看一看这一个配置,配置HDFS网页登录使用的静态用户啊,这是什么意思呢?你看啊,我们配置了一个IV5用户,那我们在这个页面上,我们的这个内nob呀,是不是有一个页面呢?啊,在这个页面上我们能干嘛?我们是不是能查看我们的这个文件和文件夹呀,HDFS上的数据吧,好,那不管是文件还是文件夹后边都有一个按钮上什么按钮删除,哎,删除啊,那我们在这儿啊,配置了一个用户,艾特硅谷用户啊,那配置这个用户有什么用呢?当我们用艾特硅谷用户启动我们的HDFS的时候,那么这个你是可以删除的啊,你删除是可以删除的,如果说你没有用艾特硅谷用户啊启动我们的哈豆,那么这个你是删除不掉的啊,OK啊,就是这么一个情况,那接下来我们看啊,这儿还有一个这是什么呀,来配置代理啊配置代。
09:51
用户啊,配置谁为代理用户呢?配置我们的爱的硅谷用户为代理用户,那这个代理用户它的作用又是什么呢?好,我们画一个图。
10:04
多讲一会,然后我们画一个图,呃,那我们假设啊,我们现在要提交一个生语句啊,提交一个serve语句,提交serve语句我们通过什么提交啊,是不是要通过have server serve可以通过这个have server to来提交吧,那提交到哪呢?提交到我们的雅N上吧,啊,Have,我们是用map produce reduce,哎,来这个。执行的,那提交到雅安上,那提交到雅安上,假设啊我呢,提交成一个任务啊,提交成一个一个的任务,好,那这啊,我们现在有一个用户,有个用户,这个用户他是。艾硅谷用户啊,他是艾特硅谷用户,艾特硅谷,艾特硅谷用户呢,他创建了一个have so two的客户端,然后在雅N上提交了一个任务,叫做at硅谷,好了,那我这还有一个用户,B用户。
11:06
啊,B用户,B用户呢,他也创建了一个have sor to的客户端啊,然后呢,他也提交了一个任务,任务B,好,那我这儿还有一个C用户啊。所以。他呢也创建了一个还有serve to的客户端啊,然后呢,他提交了一个任务,CCOK给他往上一点。好,那现在我们来看一看这个情况啊,那艾特维谷用户呢,他创建了一个客户端啊,怎么样。啊,他这儿创建一个客户端。诶给他拿过来好,然后呢,提交一个他自己的任务,那同样呢,那这三个用户呢,他们都创建了一个客户端,哎,提交了他自己的任务,那我现在是有几个用户啊,我现在是有三个用户啊。
12:12
那如果说我有30个用户,300用户呢,那每一个用户他们都要创建一个客户端啊,你们应该也咨询过这个have so two,还有serve two呢,它是非常占用内存的啊,它非常占用内存,那如果说我们客户端一多了,那占用的内存是不是相对来说也就多了呀?啊,它不太好,那我们想要最好是能达到一个什么效果呢?我们能不能让这三个人呢,都通过一个客户端,哎,我想这样,那这一个客户端呢,提交所有的任务,我想达到这样一个效果,它能不能呢?啊,默认的情况下是不能的,那怎么样能呢?啊,我们先看看啊默认情况,你看爱的硅谷创建的这个还有so客户端,那么这个客户端它只有权限去提交艾特硅谷任务。
13:05
哎,它只有这么一个权限,那我B这个任务,我依然想通过爱特硅谷用户他创建的这个客户端访问B他能不能访问的,默认情况下他是访问不到的,没有这个权限,那如何能访问到呢?好,这个参数它生效了,这也就是我们所说的代理用户,什么意思呢?啊,你看我们配置爱的硅谷用户啊为代理用户,那么他能代理谁呀?你看他能代理所有的house的节点。所有的用户组,以及所有用户组下面的所有用户啊,那爱的硅谷用户它就具有所有节点,所有用户组以及所有用户的这么一个代理权限了,那你看那爱特硅谷用户他创建的客户端就能代理我们B用户和C用户啊,那么我们的B用户和新用户对应的他就可以提交诶他们自己的任务了啊OK,那么这个就是代理用户的一个配置啊好,那你看啊,这是这个什么耗的节点啊,所有的这个主机节点是星啊,用户组以及用户都是星啊,就代表所有的意思啊,能代理所有的用户以及所有的节点,好,那这个配置文件我给他拿过来,哎,只拿configuration啊,注意啊,这个地方你只复制configu就完事了,CTRLC,诶上面这两行不用配置啊,不用拿,为什么呢?我们过来看一看。
14:31
来到啊,Configu configuration都不用拿,我们只拿configuration中间的就可以来,只拿这中间的就行,CTRLC拿过来之后来到这,你看这是什么呀,靠刚塞的吧,靠杠塞的这里我们已经都给你放好了啊,放好了那进来我们给它粘贴进来就完事了啊,右键粘贴啊,冒号WQ保存,OK,那car-set我们就要配置完了啊。
15:01
好,那刚刚我们配置完了这个靠杠赛啊,啊第二个我们配置HDFS杠赛啊,那现在来吧,给这文件打开VMHDFS杠好进来,那来看一看HDFS-site我们要配置什么呢?哎,首先呢,我们要配置一个name note web端访问的这个地址啊,默认的端口号是9870,哎,那我们呢,给它放在哈102上好,那这个端口呢,它也有一个历史的连击啊,默认是9870,我们现在是3.x版本。啊,3.x版本它是9870,那在1.x和2.x,哎,这两个端口号啊,是50070,好,那我们再看看下面这个2NN的外网访问端口现在是多少啊哈,杜帕104的9868,那它现在呢,也是3.x版本。
16:11
好,那在二点S3版本这个默认端口号,它也不是9868啊,它是500,哎九零啊,那这是版本号的一个历史的演进啊,说到不同的版本啊,我们呢,应该知道这个版本号,那你像面试的时候,那面试官可能就会问你,那说一些你知道的常见的版本号,那你呢,可能给他说了,说了这么一大堆什么9868呀,9870啊,然后还有什么这个啊,8020啊,那如果说你现在跟他说一说,哎,关于版本号的历史的演进,哎,那是不是面试官他也会对你刮目相看啊啊。再来,那接下来HDFS的副本数,哎,我们呢,一般呢都会给它指定成三个啊,那如果说测试集群啊,我们呢,可以给它指定成一个副本啊好吧,那这个配置我们也给它拿过来,同样啊,我们依然只要复制configuration里边的那里边的内容就可以了,其他的呢,不需要复制啊,这是HDFS-set啊好,那过来我们粘贴进来。
17:19
右键粘贴。好,然后冒号WQ保存,那保存完了,接下来我们看一看雅恩杠赛,嗯,雅恩杠赛我们要配置哪些内容呢?我们看一看,那第一个叫什么意思啊,哎,指定我们的map produce啊,是走沙的啊好,你看my produce,那接下来我们指定resource manager的一个地址。哎,在哪呢?哈布103,那接下来我们这儿还有一个环境变量的继承啊,什么意思呢?你看继承什么呢。那Java home诶哈杜op什么什么的home,你看各种的哈杜op的home啊,哈杜op home都有,那继承这个有什么用呢?啊,那我们的哈豆啊,它因为需要用到JDK哎相关的内容,所以说呢,它就要用到JDK相关的环境变量,那好了,现在问题来了,如果说我没有配置Java home这个环境变量,那么我们的哈loop它是不是就用不了我们安装的CDK了呀,所以说环境变量,哎我们要是要给它配置上的啊,我们这个地方才能用那这个环境变量啊,在2.s版本的时候,我们是不需要在这手动的给它继承上的,哎,在默认的配置当中就有这些内容,那只不过在3.s版本它默认的配置当中给删掉了啊把这个配置呢,给它变到一个显示的配置啊啊OK啊,再来雅单个容器。
18:59
允许分配的最大最小内存,还有雅恩容器允许管理的物理存大小啊,那这是什么意思呢?什么是雅安容器允许管理的物理内存大小啊,啊,你看雅安node manager,哎,Resource啊,MYMB什么什么意思,就是no manager的大小嘛,那not manager在哪啊?啊,你看啊画图什么是not manager呢?啊,这也是我们的机器。
19:33
哎,这也是我们的机器啊。这是哈102啊哈103吧,哈103,那我们这个机器默认大小是多大呀?是不是四个G内存呢?啊4G的内存好,那我们在哈多103上是不是要安装一个节点呢?安装一个什么节点呢?安装一个note manager吧,这也是我们的no manager节点啊,我呢给他一个颜色啊。
20:07
OK,咱们给他一个颜色,这个是我们的not manager,好,那not manager我们要能允许用它使用多大呢?我们呢,哎,在这给它设置的是四个G啊,啊,那这个是node manager的大小,那再有你看雅恩单个容器允许分配的最大最小内存什么意思啊,什么叫单个容器啊,我们的任务它最终是运行在哪啊,是不是运行在resource manager当中啊,啊,这也是我们的resource manager啊,啊,不是no manager啊,我们的任务啊,它最终是运行在no manager上的啊,No man no manager,那在no manager,我们直接就把任务运行在这儿就完事了吗?哎,没有啊,而是运行在这个noe manager里啊,我们要开启一个一个的container。
21:07
ER,哎,这是container,有这么一个概念,任务呢,我们的map task和reduce task是运行在contain上的,好了,那上面的这个雅安单个容器允许分配的最大最小内存,就是我们卡的大小啊,默认最小我们给它512兆啊,最大呢4096兆,也就是四个G嘛,啊那好了,那这三个参数啊,其实默认的呢,都不是它们几个默认的都是八个G啊,八个G,八个G,那为什么我们不用默认的呢?啊,原因是这样的,你看啊,我们这个服G哈,多103是几个G啊,是四个G,那那这个参数你是。八个G啊,那你呢,我让你最大也用八个G,是不是肯定不行啊,我们根本就没有这么大内存啊,所以说我们要给它限定下,哎,限定成高啊,限定成哎跟这个服务器的内存大小相匹配的啊好,那这三个参数我们想一想,你说这三个参数我们给它设置完了,要不要分发呢?那要不要分发呢?那同学说那来呗,那我们就分发一下呗,好,那分发的时候我们要想一个问题,你看啊,这个呢,我们给它设置的是四个G吧。
22:24
这个地方note manager我们给它设置的是四个G啊,我们假设一下啊,我们现在要分发了,那分发的话,我们除了103以外,是不是还有一个102啊,这还有一个104啊好,我们呢,那慢进这设置成四个G了,那这个呢,哎,你是不是也是四个G呀?诶你看也是四个G,好是不是也可以啊,那假设啊,我这个呢,现在是644的内存吧,我给它设置成644,诶没问题,那现在有这么一个情况,那如果说你是833的话。啊,你是833,你看啊,我们配置的话,一般都会在哈多102配置吧,那在哈多102,我把note manager可配置成四个G没有问题,那然后呢,我在102上给分发到103和104,那我的103只有三个G啊,104也只有三个G啊啊你一分发你的note manager是四个G,那用一用卡把内存用超了啊,那肯定也不行,哎,所以说这个配置啊,尽量呢不要分发啊,再有这是其中一个情况啊,你看啊,现在呢,它是四个G吧,那我们的哈多102是几个G啊,我们的哈多102是不是六个G呀。
23:41
那你要是六个G的话,我这四个G,你看这还有两个G没有用上呢,哎,你看这利用率上,哎有一些问题啊,所以说这个参数呢,我们尽量,哎这三个参数就都不要干嘛呀,哎就都不要分发了,哎这三个参数呢,我们要每一台机器单独的设置啊,只不过我们现在是学习的阶段,那么这三个参数我们是可以分发的,但是分发的时候注意了,如果你想直接粘贴过来,哎,直接复制粘贴的话,你呢,你是644的可以粘贴啊,你644的你可以直接粘贴过来,那如果说你是833的呢,833的你要把这个4096给它修改一下,修改成多少啊,修改成3072,哎改成3072之后你再粘贴,同样这个4096,你也要给它改成3072啊,改成三个G,哎,改成三个G之后你再粘贴,哎,不然呢,他怎么的。
24:41
它是不是跟我们内存大小不匹配呀?啊,OK,那这是雅安单个容器允许的最大最小内存,以及雅安的最大最小内存,哎,就是note manager的这个内存大小,好,那接下来这儿下边还有两个参数,关闭雅恩对物理内存和虚拟内存检测,好啊,这个地方啊,它描述的有点问题,哎,应该是关闭雅恩对虚拟。
25:11
啊,关闭雅对虚拟内存的检测,那物理内存呢?哎,我们不能关闭好这地方应该这么配置啊,关闭雅安对虚拟内存的检查,那物理内存检测和虚拟内存的检测是什么意思呢?哎,首先说一下这两个参数啊,其实它默认都是处。啊,默认都是true,默认虚拟内存和物理内存的检测都是打开的,哎,那如果说只关闭对虚拟内存的检测的话,这个参数我们是不是就不需要配置了,其实只需要配置这一个就完事了啊,因为有一个默认值了,好,那首先我们来看一看什么叫做对物理内存检测啊,啊还是来到这个图。呃,这也是我们的哈,103这台机器,然后我们这有一个note manager,好,那其实在note manager里啊,有这么一个线程,哎,有这么一个线程叫做monitor线程monit monitor,那这线程它是干嘛的呢?哎,Monitor线程它就一直监控我们的这个node manager它的内存的使用量。
26:21
哎,它就一直监控我们的内存使用量好,那监控它干嘛呢?如果说我们这个note manager,它使用的内存已经超过我们设置的内存了。那他会怎么办呢?哎,假设啊这么的吧,我们这个note manager呢,给它设置成三个G的内存,三个G的内存,那我们在哈杜104这台机器上,我除了运行一个note manager。我是不是还会运行一些其他的组件啊,哎,我可能还有一个卡夫卡。啊,没有问题吧,卡不卡啊,那除了卡不卡之外呢,我呀还会部署一个,我得给其他的组件,是不是也预留出一些内存呢?那好了,那这个monitor它就一直监控我们noe manager使用内存的大小,哎,他发现呢,哎,你已经即将要超过三个G了。
27:19
那怎么办呢?那超过三个G了,那你超过三个G了,我就不能在你那不能再让你用了啊,那monitor线程它就是干这个事儿了,哎,它呢就会把note manager卡挂掉,那为什么要把它挂掉呢?啊我们想想你看我们这个note manager它是不是运行需要内存呢?那我们的卡夫卡他们的运行是不是也需要内存呢?那好了,我这个note manager运行运行运行,哎内存呢,它占的越来越多了,然后他咔超了,那超了之后我这没有监控啊,没有监控那超呗,那我再用呗,好好家伙,他把和卡夫卡的内存挂了,那把弗洛姆和卡夫卡给干挂了之后啊,那把他俩的内存是不是给占用了,那把他俩内存给占用,那好了,我们的这个卡普卡和就要进行GC了啊,垃圾回收嘛,那垃圾回收,哎,内存不够了啊,进行的是for GC啊for GC什么叫for GC啊,哎,For GC它就会把。
28:19
自己卡给Q掉,OK,那么现在卡夫卡和挂了,我们整个的大数据框架是不是就停止运转呀,数据传输的通道都没了啊,卡普卡和flow数据传输的通道,甚至是一些其他的组件啊,他挂了,那挂了之后我们整个大数据集群是不是就停止运转了?好了,那这个情况是我们不想看到的,那我们想看到的是啥呀?是不是想让他自己挂掉,那他自己挂掉最多就是我们计算的这个任务啊,他挂了啊,那计算的任务挂了,我们给他重新启动不就完事了吗?好,它不会影响其他的,更不会影响我们大数据的这个组件啊,OK。
29:02
那这就是物理内存的这么一个检测啊,所以说物理内存的检测我们不能关闭,这个我们要开启,OK,那接下来我们看看虚拟内存的检测啊,虚拟内存检测,这个虚拟内存的检测我们要给它关闭掉,那为什么要关闭它呢?这个是,呃,我们的JAVA8啊,也就是JDK8啊,JDK8和渗OS啊,是渗透OS啊和渗透S7他们两个呀,有这么一个bug啊,什么bug呢?啊呃,首先我们要知道这个物理内存,我们知道,那什么是虚拟内存呢?哎,虚拟内存是这样的啊,当我们物理内存不够用的时候,那么它会把一部分资源哎放到虚拟内存上来计算,那这个虚拟内存它是一个什么概念呢?啊,它是怎么计算的呢?那我这个假设啊,整个服务器是四个G,那四个G之后啊,我都占满了,那占满了之后那它就挂了吗?哎,它不会,它会把一部分资源放到虚拟内存上来计算,那不对呀,我们内存一共就四个G啊,你都给占满了,那占满了之后在哪计算呢?哎,其实是在磁盘上计算,哎在磁盘上计算,那可能现在啊,大家都没有听说过这个虚拟预存的概念啊,在早期,哎,也就是我在上小学初中那个年代。
30:31
我们那个时候用的电脑还是什么呢?还是大背头啊,这样的这样的电脑,不知道你们见没见过脑啊,这种这样的电脑啊,大背头啊,那这个电脑。非常的老啊,那非常的老,那在那个年代我们的内存一般都是多大的呢?那个年代的内存一般都是256兆啊,512兆的都算是大内存了,你像一个G的内存,那都是非常非常大的内存了,那这个电脑的配置就非常好了,哎,那个时候的内存都是这样的,所以说那个年代啊,它内存呢就不够用,那不够用它就会经常会出现一个错误,它经常呢,就会出现这么一个弹窗啊,弹窗里写这么几个字叫做虚拟内存不足啊,请扩大虚拟内存好了,那在现在其实我们根本就呃看不到这些概念了,为什么呢?因为我们的电脑现在一般都是八个G啊,哎,16个G啊,内存条也非常的便宜,16G的内存条也就几百块钱,收百块钱,哎,就买买到手了啊。
31:35
那虚拟内存好,现在有这么一个事儿啊,你说呃,有这么一款游戏,我不知道大家听没听说过,叫做j ta5啊,侠盗猎车五这个游戏呢,它推荐的配置啊,是8G内存的。啊,8G内存的,哎,8G内存才能是什么呢?是这个游戏的最低配,那好了,那现在我的电脑我就只有4G内存,你说我能不能运行这8G内存的这么一个应用啊,啊,能不能运行呢?那同学说你这四个G内存完全不够用啊,哎,其实不是这样的啊,那可能我这个游戏啊,我这个应用它是八个G,在最开始的时候它怎么运行呢?它哎一点一点一点一点一点一点一点运行,哎,直到它占用我们这四个G内存之后了,啊,那你这是8G啊,那剩下四个G没法运行了,那怎么办?我游戏挂了吗?哎,不是的,我这应用啊,它也不会挂,那它怎么办呢?它会把超出的部分运行在我们的虚拟内存上,那运行在虚拟内存上。
32:43
那运行在哪啊,哎,它是运行在磁盘上啊,在磁盘上哎做计算了,所以说这个就是我们啊会发现你看我们的电脑啊,经常会出现,哎,这个磁盘占啊不是磁盘内存占用率已经达到99%了,甚至是已经达到100%了,但是我们的电脑。
33:03
它依然可以继续工作,只不过你会发现你的电脑非常非常的卡,那原因在哪呢?原因就是超出这部分工作,它是在磁盘上进行的,哎,那这也就是虚拟内存的一个概念啊,好了,那我们来回到我们的正题,哎,看看我们哈豆的虚拟内存啊,为什么我们要关闭虚拟内存的检测呢?刚刚我们也说了,这个是渗头S7和JDK8的一个bug啊,什么bug呢?啊,你看啊,我们的这个渗头S7啊,它会给我们JDK进程预留出这么一部分虚拟内存,哎,预留出这么一部分虚拟内存。好,这部分呢,是圣OS7给我们JDK预留的啊,预留的。嗯,怎么。他就是嗯,OS。
34:02
七给。给JDK预留的虚拟离存好了,那按理说我们的这个渗透啊,我们的JDK是不是应该用这一部分内存呢啊,而且预留的这一部分还是比较多的啊,预留的还是挺多的,嗯嗯,这么的,把这个呢再往这边移一点啊,把这个呢也往这边移一点啊,它预留的这部分呢,还是挺多的,为什么预留多呢?哎,他给JDK留着使用呢啊。但是啊,我们的这个JDK它并不领你的情,哎,那它呢,根本就没有用到这部分内存,那他用哪了呢?他用这个啊,他用的是这ZDK实际使用的虚拟内存啊,ZDK呢,它实际上啊,它就使用了这一部分的虚拟内存了啊,那它只使用了这一部分虚拟内存,那是不是大量的虚拟内存就空下来了呀?哎,这部分虚拟内存根本就没有人用,那如果说哎用到虚拟内存了啊,你看用到这一点它不行了,挂了。
35:15
啊,那么虚拟内存他你看可用的虚拟内存空间就少了嘛,啊,那这种情况呢,我们是哎不想看得到了啊那怎么办呢?因为虚拟虚拟内存空间少,然后导致我们的这个任务挂掉,哎这个情况呢,我们是不想看得到的,那么我们既然不想看到这种情况出现啊,我们呢,就直接倒不如把这个虚拟内存的检测我给你关闭了,哎,我不让你这个虚拟内存检测了啊,你这个虚拟内存出错,那怎么办呢?啊,我不让你报错就完事了啊你呢依然可以继续运行,那好,那现在我这么一个事儿,那我这个虚拟内存它总体是多大呢?啊多大呢。啊,有这么一个参数啊,它是用来控制我们虚拟内存大小的,然后在哪呢?在官网上我们看一看,在哈杜的官网啊哈杜。
36:11
呃,找到到这稍等啊,有人慢加载一下。啊,不用我们在这找吧,啊在这找你看啊release啊找到它,找到它,我们找到3.1.3啊找到这个三点点三,然后呢,我们点击documention进来,进来之后往下翻啊,找到我们的雅安杠default,诶在这里啊,有这么三个参数啊,我CTRLF哎,找到我们的这个VM啊往下翻,你看这三个参数,这是什么意思啊,PM物理内存VM虚拟内存啊,这是什么take个检测嘛,物理内存的检测默认是开启的,虚拟内存的检测默认也是开启的,哎,但是这个虚拟内存的检测啊,我们要给它关闭掉,那我这个虚拟内存是多大呢?看这。
37:08
VM-PM的一个比例什么意思呢?意思就代表我们的这个1G的啊物理内存,它对应了2.1G的虚拟内存,哎,也就是这个VM和PM是2.1倍的关系啊,我这个1G的物理内存啊,对应了2.1G的虚拟内存啊,啊,那我现在是有多大呢,你看。我这现在是不是有四个G的物理内存呢啊,四个G物理内存那对应多少啊。是不是对应了8.2g的,哎,8.2g的虚拟内存呢,但是渗透S7,哎,它预留出一部分虚拟内存给JDK啊,可能啊预留出这部分非常多啊,有可能已经预留出六个G了,那么实际上所剩的虚拟内存是不是就只剩下几个G了?哎,它就只剩下两个G了啊,那么映射到我们的物理内存上就已经非常非常的少了,OK,那么这个虚拟内存的检测我们在这儿就给它关闭掉啊,OK。
38:09
好,那这个参数我们给他拿回来。这些参数。哎,说的多了,在这。把这个CTRLC拿过来啊,拿过来拿到这vim一个谁呀,雅安吗?啊S进来进来之后给它粘贴进来,右键粘贴,然后冒号WQ保存OK啊雅杠S就完事了啊好,那再往下看,那接下来我们配置一个map。好,你看啊,MY刚才那MY刚这没有什么东西,就只有一个啥意思啊,指定我们MY程序在雅安上运行,哎,给它拿过来CTRLC,然后vim一个my red啊杠side。
39:12
在这粘贴右键粘贴啊,然后冒号WQ保存,OK,那完事之后我们呢,还要配置一个沃克斯,哎,指定我们哈特布集群有几个节点啊,102103104啊VM一个沃克斯进来,那这个文件呢,其实它也有一个历史的演进啊,它也有一个历史的演进,在哈杜,在哈杜的这个1.s版本和2.s版本啊,这个文件的名啊,不叫沃克斯,叫什么呢?叫s level斯s slaves啊,那现在呢,我们叫沃克斯好了,那这个文件我们在配置的时候啊,要有两个注意的点啊,第一它不能有空格,第二它不能有空行,你看我们这现在是不是就有一个空行啊,我要给它删掉啊,给它删掉,那你看空格啊,现在是没有的,空格现在是没有的,看那为什么不能有空格,为什么不能有空行呢?
40:12
这个文件它是这么加载的,逐行加载,如果说我这儿有空行了,那么它会把空行当做一个节点,那如果说我这有空格了,它会把卡多102空格,哎,整体啊,给我们当做一个节点,那就会出现这么一个问题,我根本就找不到节点,那你启动的时候会报错啊好OK,那这个文件我们配置完了,然后冒号WQ保存。OK,那完事之后我们再往后看还有谁呀?啊五个配置文件,我们现在是不是1234,哎五个啊依次呢,都配置完了,好配置文件到这就完事了,那接下来啊,我们还要配置一个历史服务器啊,那为什么要配置历史服务器呢?你看啊,我们的这个任务啊,它在运行的过程当中,我们是可以查看到日志的,那我们不可能说我日志运行的啊,我这个任务运行的,我一直盯着盯着它看啊,肯定不能,那要任务运行完了,诶,我发现他错了,我得知道哪错了呀,那怎么知道呢?我呀要通过日志来查看,那如果说我们没有配置历史服务器的话,那么这个日志运行完了就结束了,哎,运行完就结束了,所以说我们要配置一个历史服务器,把它这个日志啊给保存起来啊啊。
41:31
啊,在这配置一个历史服务器,那历史服务器的这个web端访问的地址啊,是哈豆帕啊102这儿呢,啊19888,然后呢,它内部通信的地址是这个10020,好啊我们给他拿回来。那这个配置在哪呢?我们看一看配置在MYP-site当中,哎,我们是不是刚配置完呀,进来右键粘贴啊,冒号WQ保存OK,那接下来我们还要配置一个日志聚集的功能,那这个功能是什么意思啊,你看我们的任务啊,是分布式运行的,哎,我们要分别部署在102。
42:15
103啊,104上啊,然后呢,我们在执行的时候要先进行任务的切片啊,任务呢,我们给它切分成多个task啊task什么map task reduce task,这个呢,我们就不管它是什么task了,哎,反正呢,切分成多个task,那每一个task我会给它放到不同的体系上运行,那既然是放到不同的机器上运行,我们是不是在每一个机器上它都会产生它自己的日志啊,啊102上的这个task啊,日志产生到这了啊,每一个机器的日志都产生在它的本地了,那么接下来我们要查看日志的话,是不是要分别来到三台机器上查看呢?哎,这个呢,我觉得比较麻烦,那怎么办?日志聚集功能,他来了,他呀可把可以把我们的日志给聚集到一起,那聚集到哪呢?给我们上传到HDFS上啊,上传到HDFS上,那么从HDFS上。
43:16
查看是不是就方便了呀?哎,可以从一个地方查看三个地方的日志,不然呢,你就需要分别来到三台机器上查看啊好,那日志聚集功能我们呢也给它设置一下,怎么设置呢,你看。给它设置成处代表开启日志聚集功能,然后呢,哎,我们还要指定一个这个日志服务器的,哎,这么一个地址啊好,然后在这个地方日志保留的时间来,我们可以设置给他保留七天啊历史的日志呢,我们就没有必要保留了,如果说历史日志我们也保留的话。是不是这个任务啊,啊,这个任务的日志它会越来越大,占用我们HDFS的空间啊,好,那把它也拿回来,这个配置到雅N-S当中,CTRLC拿回来。
44:06
来到我们的这个来到这啊v me杠雅啊杠三杠3OK在这右键粘贴好,右键粘贴,然后冒号WQ保存OK,那保存完了好,那这个视频呢,我先暂停一下啊。好,那配置都配完了,那接下来我们呢,别忘了还要干嘛呀,要给它分发到其他的节点啊,分发到102和1031份啊CD点点二点点杠点点杠点点杠啊XSYNC分发我们的卡来到其他节点,好,那这个分发完了,别忘了我们要启动,是不是还要配置一个环境变量啊啊那配置一个哈杜的环境变量啊。
45:00
在哪呢,在这呢。那这个环境变量呢,我也就不自己配了,我直接给它拿回来CTRLC好来到102,我们速度速度VM-ETC profile.d下面的Yv.SH我在这右键粘贴,冒号WQ保存好,诶那这个环境变量我们看一看吧,你看哈多的环境变量啊哈多干home我们呢要配置两目录,一个是B目录,一个是目录,为什么要配置两个,因为这两个目录啊,都有我们要用到的这个脚本,哎,所以说我们要把这两个目录都给它拼接到系统变量里啊OK,冒号WQ保存好,那完事之后我们呢,要把它也分发到103和104速度嗯,Home啊I的硅谷B目录下面的XSYNC给它分发谁呢一。
46:02
PC目录下面的profile.d下面的MY.sh。对吧,啊。OK,分发完了,分别S一下SORS杠,ETC目录,Profile file.d目录下面的Y为点SH,那同样我给它复制一下啊,这两个机器呢,这两机器哎,也都上一下啊啊上一下右键粘贴好了,那么哈杜啊到这儿我就配置完了,那配置完了还不能直接启动,哎,我们呢,还要进行一个格式化啊,还要进行一个格式化。啊,首先要进行一个name note的格式化啊,OK,我把格式化的命令给它拿过来,那在哪执行呢?在我们哈杜帕102上执行内not的格式化啊回事,OK啊,当这啊成功退出的时候,那就代表我们这个格式化成功了,那成功之后我们在卡102启动谁呀,启动我们的内部note啊哈102我们执行一个start-DFs.SH。
47:13
你看他现在start name notde啊,但是你看我们并没有去干嘛呀,我们并没有启动data notde吧,那data note谁启动的呀?由他启动的,那它启动它怎么启动呢?它分别SSH到其他机器上启动啊创建目录,OK,那启动完了我们XSCJPS一下。哎,进程是不是都启动了呀,啊2N啊也启动了,那接下来我们在103上,注意一定要来到103上启动我们的雅N,为什么?因为resource manager我们给它配置到了哈杜103上啊skr start杠雅n.SH。
48:01
OK,你看雅恩也启动完了,那启动完了我们来看看啊进程xca g PM no manager启动在102 resource manager启动到103,然后对应的data note和name note啊data note和name note每一个进程上,哎,每一个节点上都有这么两个进程,哎,那就没有问题了,那到这我们哈多培啊也就配置完了,那对应的我们再来到页面上看一看啊你看哈多卡1029870,哎这个那再来一个hello 103啊8088 OK,那这个是我们的这个,嗯,雅恩啊OK,那页面进来了,哎,没有问题,好,那这儿我就暂停一下。OK,那接下来啊,我们这儿还有一个什么呀,哈杜的集群启停的脚本,哎,我们哈杜一共有这么多进程啊,一共有这个,嗯,有name node啊,Resource manager,其实还有一个历史服务器,历史服务器呢,我们刚刚没有启动,那每次启动我们都要启动这么多进程,那关闭呢,也要关闭很多进程啊,我呢也觉得比较麻烦,哎,在这儿啊,我们也需要一个脚本,那这个脚本你们学习hard豆的时候,哎,都写过了啊,那我呢,我就不带着你们再重新写了,我直接把这个脚本拿回来我们看一看啊,看这脚本,这脚本我们都写过啊,其实也是非常简单的啊,一个意思啊,如果说我们要控制起形的话,就需要通过一个case来判断你是启动还是停止啊。
49:32
那首先井号叹号并杠ma,这是一个三角角本,进来之后它先判断我们参数的个数,如果说小于一怎么办?哎,直接退出,那大于等于一呢啊那来吧,我们看一看第一个参数,你是启动呢还是停止啊,如果说启动,那我们就执行启动的命令啊,那怎么执行呢?分别SSH到哎这三台机器啊,在SSH到这三台机器来执行我们对应的启动的命令啊好,那如果说停止,那也是分别SSH的这三台机器执行我们的停止命令就完事了啊这个脚本我直接拿回来啊,这脚本你们应该已经写过很多遍了啊,在韩豆那已经有啊,那我们CD到并目录啊并录,然后VI'm一个HDP.ish进来,然后在这右键粘贴啊,粘贴完之后冒号WQ保存,保存之后我给他一个权限,这是MOD777HTP第二。
50:33
SH,好,那完事,我们测试一下看看行不行啊,Xal GPS。OK,进程现在都在,那我们呢,先测试一下,停止S啊S。啊关闭啊,关闭历史服务器,历史服务器我们没开啊,啊关闭雅关闭HDFS好,那我们再一次查询一下进程,哎,你看进程关闭的干干净净,那我们再测试一下启动start好。
51:16
啊,等启动完啊,启动HDFS,启动羊啊,啊启动历史服务器啊,OK,那到这呢,我们再查看一下GPS,好,那对应的进程,你看除了name notde resource manager r之外,还有这些对应的D呢啊,Not manager d not manager之外,哎,你看这个历史服务器啊,我们也就给它启动起来了,OK,那到这这个视频我暂停一下啊,我们在访问哈杜addoopp哈杜104的时候,我们这是不是有一个9868呀,在哈杜1049868,我们可以进入到2NN的这个页面,但是2NN这个页面呢,它没有,哎,它这里面没有内容,那它这个里面就什么都没有吗?其实不是的,它这个地方啊存在一个bug,但这个bug我们怎么能知道出现在哪呢?好,那大家想一想,我们之前呢,在用idea。
52:16
而是写Java的时候,我们怎么样能发现我们的代码写完了出现bug呀,那出现bug它是不是会在conso控制台上出现一个报错呀,那同样在我们的浏览器当中呢,也有一个控制台,昨天呀,已经提前带着大家看了一下了,你看我按下F12,那么这个控制台的页面就出来了,在哪呢?我们这儿也有一个console,我点击过来,这个就是我们浏览器的控制台,那浏览器的控制台很明显呢,我们这报了一个错,这个错误的名字叫做moment is not found,说白了就是我这个moment方法它找不到啊,那没有这个摸的方法,那我们看一看报错的位置在哪呢?看啊,在这呢,DFS-du.gs这个文件,这个文件呢,61行,那接下来我们要找到这个文件的61行,那大家想一想,我现在有三台机器。
53:15
我应该去哪一台机器上找啊,我现在有102 103,还有104,我应该去哪一台机器来找到我们的大点这个DFS呢?应该来到哪一台机器想一想,我现在有三台机器,我们的2NN安装在了104上,那我就来到这个2NN的所在的机器104,找到大点JS在哪呢?啊,告诉大家CD到OT model哈杜,Op在哈杜里啊,我们这有一个share尔,在这呢,进入到share尔目录,在这个里面有一个哈杜。在哈多里面有一个HDFS,那再进来这个里面有一个web APP,它是跟我们web相关的一些这个配置啊,还有静态页面诶等等等等。
54:05
那在这里有一个static sta,它就是我们一些静态的配置,那大家可能没有学过前端,在前端当中有这么一些啊配置文件叫做GS,还有一些CSS等等等等的,那它都给存在了staic这些静态的配置文件当中,那在这里面就这么一个文件叫做DFS-du.gs在这呢,DFS-du.js,那这就是我们出错的这个文件,那接下来我进入到这个文件当中,我vim一个DFS-last.js,那进来之后我们看啊,他说报错的地方是在61行,那我们呢,也要找到61行。那怎么找到61行啊,注意我在这呢,先按一个。冒号,按一个冒号之后,我再来一个set nu,那接下来我在一个回车,回车之后,那前面你们看对应就增加了一个行号了啊,然后我往下找找找找找找到我们的61行在这呢,你看61行它在这执行了这么一个方法,他进行了一个返回。
55:19
返回了一个啊这啊这么看,从前面开始看,前面呢,这有这么一个number函数,Number函数里边它传进来一个V啊,这个意思很明显,就是把我们这个微参数啊,通过number给它转化成一个字符串,然后呢又通过一个moment的方法给它包装了一下,再来一个点format,那这个format就是把我们的时间给进行了一个格式化,说白了就是把我们的时间呢给格式化成一个这样的形式,那那这个函数它是干嘛的呢?那我们看一下函数的名字,其实就能发现了,那这个函数它是来给我们这个时间呢进行一个格式化的,你看把我们的时间来一个to死缀,你比方说我传过来了一个。
56:09
啊,数字类型的时间,我传过来一个13位的这个时间戳,那么我想给它格式化成这样的一个我们能看懂的时间啊,我就通过这个函数来给它进行一个格式化,那这个函数由于出现了一个小bug,它没有,那这个东西呢,我们不能用了,所以说这个函数啊,返回的函数我们要给它重写一下,那我呢之前学过GS,我要retn,我呢就用GS的函数告诉大家这个应该怎么做,那首先还是我要把这个V传过来的,这个V我先给它转成一个数字,那这个V它应该是一个死句类型的,我要先给它转化成数字类型,我还是把这个函数啊直接拿过来复制,复制之后我在这诶。复制之后,我在这儿右键粘贴。
57:04
拿过来之后,我不是要给它转化成一个。格式化之后的字符串吗?啊,我可以用这个函数,这个函数是GS,它自带的一个函数叫做to o Co e,然后string给他一个括号,来一个分号,那上面的这一行我就可以给它删掉了,那删掉之后我冒号WQ保存,那接下来你说我需不需要把这个配置文件我给它分发到啊,这个配置文件给它分发到102和103上,以及我需不需要把这个104给它重启,我现在修改了一个配置文件,它是不需要分发的,为什么呢?因为啊,我们的2NN是安装在了104上,所以说不需要分发,那重启呢,重启其实也是不需要的啊,原因就是因为我们这个文件它是一个静态文件,静态文件修改完了立即生效,那么我们想看到效果,来到我的浏览器上,我把它关掉,那怎么办?我在这儿刷新一下,刷新一下,按理说它应该变过来了。
58:08
但实际上它没变过来,为什么呢?这并不是我们改的有问题,而是浏览器它有一个缓存,我点击我右边的这三个点,然后点击更多工具,然后我点击清理浏览器数据,点完之后我在这儿清除数据,那清除完了我回到2N的界面,我再点击刷新,那么这个界面的内容它就刷新出来了。好了,那这个是2NN的bug解决。
我来说两句