问题描述
最近因为想修改一下主机名,用户名什么的
但是一开始没有注意到主机名和用户名对于Hadoop服务的影响
导致修改后,导致Hadoop启动,失败,即jps
后,没有namenode,datanode,显然这两个文件对于hadoop是至关重要的,要不然无法获取数据
一开始没有考虑查看日志排错(因为对于异常处理方面不敏感:😦
因为机缘巧合,碰巧试了试,然后就行了
之所以出错,归根结底还是对于原理不熟
解决方案
首先要知道Linux下的主机名和用户名是什么,如何查看
命令行终端下
格式 :
用户名@主机名
实例 :
hadoop@localhost_virtualbox
如图 :
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成功关键主要看namenode,datanode是否启动,更主要看datanode
记得,每次修改大的操作,建议重启虚拟机,以免防止缓存,或者其它原因,设置没有生效,以为是生效了
总结:归根原因是没有理解,应用name,datanode的相关知识
没有采取和利用合理的排错手段,如日志,异常报错等