Hadoop hostname: Unknown host
2024-08-24 15:37:02
本来下想在一台虚拟机上,搭建一个hadoop的测试hadoop,用于调试和阅读hadoop源代码,发现在虚拟机上执行:
$hostname -i
hostname: Unknown host
这个是因为没有设置/etc/hosts文件导致的,如果linux的环境是这样的,那么将会在启动datanode和tasktracker的时候失败,
datanode和namenode将会抛出如下的异常:
2015-01-28 12:36:36,506 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2015-01-28 12:36:36,535 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
2015-01-28 12:36:36,540 ERROR org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Error getting localhost name. Using 'localhost'...
java.net.UnknownHostException: PC_PAT1: PC_PAT1: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1473)
at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.getHostname(MetricsSystemImpl.java:463)
at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.configureSystem(MetricsSystemImpl.java:394)
at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.configure(MetricsSystemImpl.java:390)
at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.start(MetricsSystemImpl.java:152)
at org.apache.hadoop.metrics2.impl.MetricsSystemImpl.init(MetricsSystemImpl.java:133)
at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.init(DefaultMetricsSystem.java:40)
at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.initialize(DefaultMetricsSystem.java:50)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1520)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1539)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1665)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1682)
Caused by: java.net.UnknownHostException: PC_PAT1: Name or service not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
at java.net.InetAddress.getLocalHost(InetAddress.java:1469)
... 11 more
解决方案是在/etc/hosts文件中添加如下红色的内容,即172.18.140.24 PC_PAT1
hadoop@PC_PAT1:~/hadoop-1.0.3> less /etc/hosts
#
# hosts This file describes a number of hostname-to-address
# mappings for the TCP/IP subsystem. It is mostly
# used at boot time, when no name servers are running.
# On small systems, this file can be used instead of a
# "named" name server.
# Syntax:
#
# IP-Address Full-Qualified-Hostname Short-Hostname
# #127.0.0.1 localhost
#127.0.0.1 localhost.localdomain localhost cpyftest-2
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
172.18.140.24 PC_PAT1
# special IPv6 addresses
::1 localhost ipv6-localhost ipv6-loopback fe00::0 ipv6-localnet ff00::0 ipv6-mcastprefix
ff02::1 ipv6-allnodes
ff02::2 ipv6-allrouters
ff02::3 ipv6-allhosts
添加后,hostname –i 将会得到正确的结果:
将hostname unkown的问题解决后,重启hadoop集群,可以发现,datanode/tasktracker , namenode/jobtracker都启动了:
ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.io.IOException: Incomplete HDFS URI, no host: hdfs://data_181.uc:9000
着实郁闷到了,原来在Hadoop中,主机名不要包含下划线“_”,但可以有横线“-”。
Incomplete HDFS URI
最新文章
- 【特别推荐】小伙伴们惊呆了!8个超炫的 Web 效果
- 如何删除或重置spfile中的参数
- 21副GIF动图让你了解各种数学概念
- 【转】Linux时间函数之gettimeofday()函数之使用方法
- UOJ 08 Quine 是在下输了
- 项目源码--Android本地音乐播放器
- hdoj 4612 Warm up【双连通分量求桥&;&;缩点建新图求树的直径】
- js异步脚本
- js实现文件上传,删除效果
- 深拷贝与浅拷贝(mutableCopy与Copy)详解 iOS
- 【应用】Markdown 在线阅读器
- nvarchar 和varchar区别
- Python代码运行助手
- 使用MTL库求解最小二乘解
- day5-python的文件操作-坚持就好
- profile default
- Oracle 12c中文乱码,修改字符集的方法
- 开发人员行走Unix的随身四艺
- 第一个驱动之字符设备驱动(二)mdev
- ubuntu安装mongo数据库
热门文章
- Java多线程之ReentrantLock重入锁简介与使用教程
- 利用sqlserver sa更改系统密码
- idea 配置maven
- 〖Linux〗安装和使用virtualenv,方便多个Python版本中切换
- 使用Phantom omni力反馈设备控制机器人
- python之模块py_compile用法(将py文件转换为pyc文件)
- 浅谈Spring的PropertyPlaceholderConfigurer
- PHP视频学习一 mysql
- 读书笔记——spring cloud 中 HystrixCommand的四种执行方式简述
- VS 2013 with update 5 编译程序出现A task was cancel