手动搭建hadoop集群005历史服务器日志聚集动态管理单独
编辑
然后我们配置历史服务器去,在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这个要知道。