编辑 然后我们配置历史服务器去,在120上我们配置历史服务器 编辑 把日志收集到120上 编辑 可以看到进入到120的配置文件目录 编辑 编辑 编辑配置文件 编辑 把历史服务器内容填上 !历史服务器端地址propertynamemapreduce。jobhistory。addressnamevaluehadoop102:10020valueproperty!历史服务器web端地址propertynamemapreduce。jobhistory。webapp。addressnamevaluehadoop102:19888valueproperty 编辑 然后保存退出,然后分发一下把,这个配置分发到集群其他机器上 编辑 然后 编辑 在optmodulehadoop3。1。3bin下面有个mapred命令 编辑 用这个启动历史服务器 编辑 jps一下启动成功了 编辑 然后我们在hdfs上创建一个input目录,在根目录创建,然后上传一个word。txt文件 编辑 然后去执行一下wordcount,这个例子程序 编辑 然后去集群监控页面看看 编辑 看这个最新的任务,点击history 编辑 可以看到这个时候自动跳转到了这里19888,这个是我们历史服务器的端口地址 编辑 可以看到执行的过程 编辑 点击左侧的configuration,还可以看到执行的时候的配置 编辑 点进去map可以看到map的内容了。 自己操作一下: 编辑 可以看到编辑配置文件,然后配置内容,然后分发就可以了 编辑 看看内容配置内容 mapreduce。jobhistory。address hadoop102:10020 mapreduce。jobhistory。webapp。address hadoop102:19888 configuration!指定MapReduce程序运行在Yarn上propertynamemapreduce。framework。namenamevalueyarnvalueproperty!历史服务器端地址propertynamemapreduce。jobhistory。addressnamevaluehadoop120:10020valueproperty!历史服务器web端地址propertynamemapreduce。jobhistory。webapp。addressnamevaluehadoop120:19888valuepropertyconfiguration 这里要知道,这个历史服务器地址,是我们指定的,这里我们指定了120,做为历史服务器,然后120做为历史服务器的web地址。 172。19。126。122HDFS:SecondaryNameNodeDataNodeYarn:NodeManager 172。19。126。121HDFS:DataNodeYarn:ResourceManagerNodeManager 172。19。126。120HDFS:NameNodeDataNodeYarn:NodeManager历史服务器历史服务器web地址19888端口 现在是这样的 配置好了以后需要重新启动一下yarn,可以看到要走到 编辑 走到optmodulehadoop3。1。3sbin里面找到,stopyarn。sh 编辑 可以看到去重启一下yarn。注意yarn的话要在,121服务器上去重启,启动关闭哈 然后,再去启动历史服务器。 编辑 可以看到关闭运行的yarn,然后启动yarn,然后去optmoudlehadoop3。1。3bin 下面去启动history历史服务器,可以看到启动成功了对吧多了一个JobHistoryServer。 然后我们去验证一下。 编辑 首先创建一个input文件夹在hdfs中 hadoopfsmkdirinput这个就是在根目录创建 可以看到我们先在opthadoop3。1。3目录下创建mkdirwcinput目录 然后进入cdwcinput目录然后创建vimword。txt文件 然后我们写入: python java java net 测试内容,随便写一写就行,让提供的案例程序去统计单词。 然后执行:hdoopfsputwcinputword。txtinput上传这个文件到dfs的input目录下 然后我们看看: 编辑 这个目录下已经有这个文件了。 有这个文件了,然后我们执行 hadoopjarsharehadoopmapreducehadoopmapreduceexamples3。1。3。jarwordcountinputoutput 编辑 可以看到,说是报错了。。。报错了啊。。。 Containerkilledonrequest。Exitcodeis143 这个错误 〔2023022318:26:18。896〕Containerkilledonrequest。Exitcodeis143〔2023022318:26:18。908〕Containerexitedwithanonzeroexitcode143。2023022318:26:30,524INFOmapreduce。Job:TaskId:attempt16771373568630001m0000001,Status:FAILED〔2023022318:26:28。350〕Container〔pid7520,containerIDcontainer1677137356863000101000003〕isrunning229390848BbeyondtheVIRTUALmemorylimit。Currentusage:61。2MBof1GBphysicalmemoryused;2。3GBof2。1GBvirtualmemoryused。Killingcontainer。Dumpoftheprocesstreeforcontainer1677137356863000101000003:PIDPPIDPGRPIDSESSIDCMDNAMEUSERMODETIME(MILLIS)SYSTEMTIME(MILLIS)VMEMUSAGE(BYTES)RSSMEMUSAGE(PAGES)FULLCMDLINE7520751875207520(bash)009797632287binbashclibjvmbinjavaDjava。net。preferIPv4StacktrueDhadoop。metrics。log。levelWARNXmx820mDjava。io。tmpdiroptmodulehadoop3。1。3datanmlocaldirusercacherootappcacheapplication16771373568630001container1677137356863000101000003tmpDlog4j。configurationcontainerlog4j。propertiesDyarn。app。container。log。diroptmodulehadoop3。1。3logsuserlogsapplication16771373568630001container1677137356863000101000003Dyarn。app。container。log。filesize0Dhadoop。root。loggerINFO,CLADhadoop。root。logfilesyslogorg。apache。hadoop。mapred。YarnChild172。19。126。12244771attempt16771373568630001m000000131optmodulehadoop3。1。3logsuserlogsapplication16771373568630001container1677137356863000101000003stdout2optmodulehadoop3。1。3logsuserlogsapplication16771373568630001container1677137356863000101000003stderr7529752075207520(java)7092247445094415372libjvmbinjavaDjava。net。preferIPv4StacktrueDhadoop。metrics。log。levelWARNXmx820mDjava。io。tmpdiroptmodulehadoop3。1。3datanmlocaldirusercacherootappcacheapplication16771373568630001container1677137356863000101000003tmpDlog4j。configurationcontainerlog4j。propertiesDyarn。app。container。log。diroptmodulehadoop3。1。3logsuserlogsapplication16771373568630001container1677137356863000101000003Dyarn。app。container。log。filesize0Dhadoop。root。loggerINFO,CLADhadoop。root。logfilesyslogorg。apache。hadoop。mapred。YarnChild172。19。126。12244771attempt16771373568630001m00000013〔2023022318:26:28。759〕Containerkilledonrequest。Exitcodeis143〔2023022318:26:28。764〕Containerexitedwithanonzeroexitcode143。2023022318:26:38,680INFOmapreduce。Job:TaskId:attempt16771373568630001m0000002,Status:FAILED〔2023022318:26:37。397〕Container〔pid7555,containerIDcontainer1677137356863000101000004〕isrunning247761408BbeyondtheVIRTUALmemorylimit。Currentusage:66。9MBof1GBphysicalmemoryused;2。3GBof2。1GBvirtualmemoryused。Killingcontainer。Dumpoftheprocesstreeforcontainer1677137356863000101000004:PIDPPIDPGRPIDSESSIDCMDNAMEUSERMODETIME(MILLIS)SYSTEMTIME(MILLIS)VMEMUSAGE(BYTES)RSSMEMUSAGE(PAGES)FULLCMDLINE7565755575557555(java)15785249282150416884libjvmbinjavaDjava。net。preferIPv4StacktrueDhadoop。metrics。log。levelWARNXmx820mDjava。io。tmpdiroptmodulehadoop3。1。3datanmlocaldirusercacherootappcacheapplication16771373568630001container1677137356863000101000004tmpDlog4j。configurationcontainerlog4j。propertiesDyarn。app。container。log。diroptmodulehadoop3。1。3logsuserlogsapplication16771373568630001container1677137356863000101000004Dyarn。app。container。log。filesize0Dhadoop。root。loggerINFO,CLADhadoop。root。logfilesyslogorg。apache。hadoop。mapred。YarnChild172。19。126。12244771attempt16771373568630001m000000247555755475557555(bash)109797632248binbashclibjvmbinjavaDjava。net。preferIPv4StacktrueDhadoop。metrics。log。levelWARNXmx820mDjava。io。tmpdiroptmodulehadoop3。1。3datanmlocaldirusercacherootappcacheapplication16771373568630001container1677137356863000101000004tmpDlog4j。configurationcontainerlog4j。propertiesDyarn。app。container。log。diroptmodulehadoop3。1。3logsuserlogsapplication16771373568630001container1677137356863000101000004Dyarn。app。container。log。filesize0Dhadoop。root。loggerINFO,CLADhadoop。root。logfilesyslogorg。apache。hadoop。mapred。YarnChild172。19。126。12244771attempt16771373568630001m000000241optmodulehadoop3。1。3logsuserlogsapplication16771373568630001container1677137356863000101000004stdout2optmodulehadoop3。1。3logsuserlogsapplication16771373568630001container1677137356863000101000004stderr〔2023022318:26:37。805〕Containerkilledonrequest。Exitcodeis143〔2023022318:26:37。808〕Containerexitedwithanonzeroexitcode143。2023022318:26:47,859INFOmapreduce。Job:map100reduce1002023022318:26:48,914INFOmapreduce。Job:Jobjob16771373568630001failedwithstateFAILEDdueto:Taskfailedtask16771373568630001m000000Jobfailedastasksfailed。failedMaps:1failedReduces:0killedMaps:0killedReduces:02023022318:26:49,147INFOmapreduce。Job:Counters:13JobCountersFailedmaptasks4Killedreducetasks1Launchedmaptasks4Otherlocalmaptasks3Datalocalmaptasks1Totaltimespentbyallmapsinoccupiedslots(ms)25131Totaltimespentbyallreducesinoccupiedslots(ms)0Totaltimespentbyallmaptasks(ms)25131Totalvcoremillisecondstakenbyallmaptasks25131Totalmegabytemillisecondstakenbyallmaptasks25734144MapReduceFrameworkCPUtimespent(ms)0Physicalmemory(bytes)snapshot0Virtualmemory(bytes)snapshot0〔roothadoop120hadoop3。1。3〕 编辑 编辑 这个是解决办法 我们修改一下,然后再去重新启动:,这里我们先不配置,我们试试能不能启动,看看默认配置行不行, 因为发现了虚拟机,给配置内存是1GB,太少了,我们改成了4GB,4核心CPU,然后再去试试。先试试行不行。 编辑 修改之前首先去改一下虚拟机的配置,这里处理器,给2核心2逻辑核心,一共4然后内存给40964GB,不知道怎么回事 一看分了1GB。。。三台机器都调整成这样。其实分6G内存也不多。。。 只要不出错了先这样用着吧。 因为修改了配置,重启了机器,我们在 172。19。126。122HDFS:SecondaryNameNodeDataNodeYarn:NodeManager 172。19。126。121HDFS:DataNodeYarn:ResourceManagerNodeManager 172。19。126。120HDFS:NameNodeDataNodeYarn:NodeManager 可以看到我们namenode在120上面,所以在120上启动namenode hdfsnamenodeformat 120:hrstartdfs。sh 121:hrstartyarn。sh 120上再去走到optmodulehadoop3。1。3sbin下去执行startdfs。sh启动dfs 然后再去: 121上执行走到optmodulehadoop3。1。3sbin下去执行startyarn。sh启动yarn 然后对比一下: 编辑 编辑 编辑 可以看到启动以后,跟我们计划是一样的,然后我们再去启动。 这个测试,在120上测试,执行 编辑 hadoopjarsharehadoopmapreducehadoopmapreduceexamples3。1。3。jarwordcountinputoutput 报错,可以看到提示output目录已经有了,这个时候,我们去删除一下这个目录 编辑 编辑 但是在hdfs上,点击删除按钮报错没有权限。 我们用命令进行删除试试: 编辑 hadoopfsrmoutput 可以看到虽然执行了成功了,但是 编辑 后台显示还有这个文件夹。咋整。 修改这个错误,怎么修改? Permissiondenied:userdr。who,accessWRITE,inode:root:supergroup:drwxrxrx这个错误 修改一个配置文件: 首先120上先去关闭: 编辑 hdfs,然后121上关闭yarn 编辑 然后去编辑:vimcoresite。xml 编辑 首先去走到对应的配置文件目录,然后 编辑 然后添加上对应的静态用户配置,然后保存退出 configuration!指定NameNode的地址propertynamefs。defaultFSnamevaluehdfs:hadoop120:8020valueproperty!指定hadoop数据的存储目录propertynamehadoop。tmp。dirnamevalueoptmodulehadoop3。1。3datavalueproperty!配置HDFS网页登录使用的静态用户为rootpropertynamehadoop。http。staticuser。usernamevaluerootvaluepropertyconfiguration 可以看到加上了网页登录使用的静态用户为root, 然后再去把刚修改的文件,分发到集群各个机器上,要注意我这里是从121机器上修改的, 所以要同步到其他集群机器。 编辑 然后再去,120,上启动hdfs,121上启动yarn 编辑 编辑 启动以后,然后我们再去试试: 编辑 可以看到这个时候,web网页端的hdfs,就可以直接点击删除按钮删除,output文件夹了 我们再去执行一下那个案例;wordcount 可以看到还是报错,那么就去修改配置把。 编辑 还是报错一样的错误。 内存不够。 去做一下配置: 编辑 打开对应的配置文件,然后: 编辑 configuration!指定MapReduce程序运行在Yarn上propertynamemapreduce。framework。namenamevalueyarnvalueproperty!历史服务器端地址propertynamemapreduce。jobhistory。addressnamevaluehadoop120:10020valueproperty!历史服务器web端地址propertynamemapreduce。jobhistory。webapp。addressnamevaluehadoop120:19888valuepropertypropertynamemapreduce。map。memory。mbnamevalue2048valuedescriptionmaps的资源限制descriptionpropertypropertynamemapreduce。reduce。memory。mbnamevalue2048valuedescriptionreduces的资源限制descriptionpropertyconfiguration 做好配置,然后保存退出,然后分发配置到,集群各个机器上。 编辑 分发以后 编辑 然后重启一下hdfs,在120上重启hdfs 编辑 在121上重启yarn 编辑 编辑 启动以后, 编辑 然后我们删除ouput文件夹,然后再做一下测试 编辑 可以看到成功了,这次 编辑 然后我们去看看,执行以后的结果,下载下来结果文件 编辑 看一下没问题对吧。 编辑 然后我们去看看历史服务器可以用了吗 然后点击右边的history,可以看到 编辑 打不开,因为还没有启动历史服务器,去启动一下 这里,走到120机器上执行:启动,因为我们配置的120是历史服务器。 〔roothadoop120hadoop3。1。3〕cdbin〔roothadoop120bin〕ll总用量1000rwxrxrx。1100010004419369月122019containerexecutorrwxrxrx。11000100087079月122019hadooprwxrxrx。110001000112659月122019hadoop。cmdrwxrxrx。110001000110269月122019hdfsrwxrxrx。11000100080819月122019hdfs。cmdrwxrxrx。11000100062379月122019mapredrwxrxrx。11000100063119月122019mapred。cmdrwxrxrx。1100010004837289月122019testcontainerexecutorrwxrwxrwx。1rootroot7402月2214:40xsyncrwxrxrx。110001000118889月122019yarnrwxrxrx。110001000128409月122019yarn。cmd〔roothadoop120bin〕mapreddaemonstarthistoryserver〔roothadoop120bin〕jps11681NameNode12177NodeManager12676Jps11862DataNode12614JobHistoryServer 启动以后,然后我们删除output文件夹,在hdfs网页端,然后重新执行一下wordcount程序 历史服务器启动以后,然后我们再去,重新执行一下,wordcount程序,然后看看日志。 这里自己重新执行就可以了 编辑 首先删除掉ouput文件夹,然后: 编辑 再去执行命令。然后: hadoopjarsharehadoopmapreducehadoopmapreduceexamples3。1。3。jarwordcountinputoutput 然后去看看日志: 编辑 看最上面那个,最新的那个,然后点击history。打开历史看看 编辑 打开历史可以看到里面有,mapreduce了,打开就可以看日志了: 但是打开一看,还是不行: 编辑 注意这是因为没有配置日志聚集功能,那么好吧。。。。 编辑 编辑 编辑 去修改这个yarnsite。xml来开启日志聚集服务 编辑 可以看到我们要配置的这个默认的配置是false对吧,这个 可以从默认配置文件中找,这个我们已经整理好了。这些默认配置文件 编辑 然后我们去配置 编辑 配置以后保存退出 编辑。 分发到其他机器上去 编辑 然后再去关闭历史服务器,然后重启历史服务器 在120上重启对吧,因为配置了120是历史服务器 编辑 然后重启一下yarn,我们是在121服务器上是resourcemanager对吧 编辑 然后我们请启动yarn 编辑 然后再去启动历史服务器 编辑 然后再执行wordcount程序 编辑 然后去集群监控网页端看看 编辑 然后再去看详细日志就有了 编辑 然后我们再去看看怎么样单独启动某个进程,意思就是,我启动的时候,比如上面这个DataNode,我只在102这个机器上启动 如果我们用startdfs。sh这样启动,是在集群上启动所有的节点,而上面是,单独在这个机器上启动,比如 只有我们这个机器上的DataNode挂掉了,就可以单独启动这一个节点的了。 编辑 然后我们来实际操作一下,首先配置 日志聚集服务器,可以看到在optmodulehadoop3。1。3etchadoop 去编辑yarnsite。xml这个文件 编辑 编辑以后分发到其他机器 编辑 然后重启historyserver,在120上 编辑 然后重启yarn,在121机器上 编辑 然后在120上重启historyserver 编辑 重启以后,然后测试,首先删除以前生成的output文件夹 编辑 然后再去执行wordcount程序,案例程序 编辑 然后执行以后,去看看日志,集群管理器去看看,可以看到最上面的任务,然后找到history,点击 编辑 然后再点击map,或者拉到右边,点击logs 编辑 点击这个logs 编辑 可以看到日志就可以正常看到了。 编辑 然后我们再看看,如何操作某一台机器,启动某个服务,节点,用 hdfsdaemonstartdatanode 单独启动这个机器上的datanode节点对吧 编辑 编辑 对于启动nodemanager,要用yarn这个要知道。