问题描述

最近因为想修改一下主机名,用户名什么的
但是一开始没有注意到主机名和用户名对于Hadoop服务的影响

导致修改后,导致Hadoop启动,失败,即jps后,没有namenode,datanode,显然这两个文件对于hadoop是至关重要的,要不然无法获取数据

一开始没有考虑查看日志排错(因为对于异常处理方面不敏感:😦

因为机缘巧合,碰巧试了试,然后就行了

之所以出错,归根结底还是对于原理不熟

解决方案

首先要知道Linux下的主机名和用户名是什么,如何查看

命令行终端下

格式 :
用户名@主机名
实例 :
hadoop@localhost_virtualbox

hadoop启动jobhistory hadoop启动后jps没有namenode_hadoop启动jobhistory


如图 :

python就是用户名

ubuntu就是主机名

01

本操作基于伪分布式

知道伪分布式Hadoop的一些原理

本地节点作为name节点,也作为datanode

区别于分布式,Master和Slave

02

有两个配置至关重要
1.

vim /etc/hostname

这个配置文件与主机名有关
2.

vim /etc/hosts

这个文件与域名解析有关

域名解析指的什么呢?

03

如是单机模式或者伪分布式 都是一个节点同时作为datanode(数据节点)和namenode(名称节点)

这样域名解析,指向的都是同一本地节点

/etc/hosts应该是这样

127.0.0.1	localhost  # 表示本地主机
127.0.1.1	默认主机名  
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
# 假设/etc/hostname为 hadoop
则应该正确被启动的datanode是 ....datanode-hadoop
# 假设/etc/hosts配置的域名是 hadooptest
则按照配置解析的datanode是...datanode-hadooptest

自然找不到

# 假设/etc/hostname为 hadoop
则应该正确被启动的datanode是 ....datanode-hadoop
# 假设/etc/hosts配置的域名是 hadoop
则按照配置解析的datanode是...datanode-hadoop

自然就找到了

注意两点




NOTICE

应该被启动的node

按照给出的域名,解析的node


hadoop启动jobhistory hadoop启动后jps没有namenode_用户名_02

一般来说,启动Hadoop成功关键主要看namenode,datanode是否启动,更主要看datanode

hadoop启动jobhistory hadoop启动后jps没有namenode_hadoop_03

记得,每次修改大的操作,建议重启虚拟机,以免防止缓存,或者其它原因,设置没有生效,以为是生效了

总结:归根原因是没有理解,应用name,datanode的相关知识
没有采取和利用合理的排错手段,如日志,异常报错等