知识点
相关文章
更多最近更新
更多[Hadoop Err] Call to ? failed on local exception: java.net.NoRouteToHostException: No route to host
2019-03-28 13:47|来源: 网络
表现:
如果你 grep datanode 的 log 发现了这个 Error,原文如下:
Hadoop-hadoop-tasktracker-slave1.hadoop.log.2011-01-25:2011-01-25 23:00:53,810 ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because java.io.IOException: Call to namenode/192.168.17.128:9001 failed on local exception: java.net.NoRouteToHostException: No route to host
那么基本上你的 reduce 不太可能会成功,在 name node 的 console 里每当执行到 reduce 的时候会报出这种错误:
Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out
原因:
这可能是由于你的 hostname 域名和 /etc/hosts中配置的虚拟域名不一致引起的。因为 hadoop 使用配置文件中定义的”master“和"slave"域名,并在/etc/hosts中找到相关的ip地址来进行引用的。而 Map-Reduce 或任何 Hadoop class 又可能使用机器名 hostname 来进行引用。我这边的情况是我的 master 的 hostname 是 master.hadoop 而在 /etc/hosts 中我定义的虚拟域名是 namenode,而我的 slave 的 hostname 是 slave1.hadoop 和 slave2.hadoop,而在 /etc/hosts 中我定义的虚拟域名是 datanode1 和 datanode2 。
解决方案:
方法1:修改hostname 和 /etc/hosts 里的虚拟域名一致,在我的case里,我需要把master机器的hostname改成‘namenode’,把slave机器的hostname分别改成‘datanode1’和‘datanode2’
方法2:如果由于种种原因你没法修改域名(域名已经在其他地方被使用,比如这台机器同时是一台文件服务器或者因特网服务器),你可以修改 /etc/hosts 来为每个记录增加一个和其域名一致的域名别名(domain name alias) 。根据我的case,我应该把 /etc/hosts 文件改成这样:
xxx.xxx.xxx.xxx namenode master.hadoop
xxx.xxx.xxx.xxx datanode1 slave1.hadoop
xxx.xxx.xxx.xxx datanode2 slave2.hadoop
更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
相关问答
更多-
答案是尝试直接在Bluemix中打开dashDB服务,这表明dashDB服务不可用: The answer was to try and open up the dashDB service directly in Bluemix which shown me that the dashDB service was unavailable:
-
Hadoop:java.net.ConnectException:连接被拒绝(Hadoop: java.net.ConnectException: Connection refused)[2023-01-06]
按照本教程找到我的答案: http : //codesfusion.blogspot.in/2013/10/setup-hadoop-2x-220-on-ubuntu.html 然后进行以下编辑: https : //stackoverflow.com/a/32041603/3878508 Found my answer by following this tutorial: http://codesfusion.blogspot.in/2013/10/setup-hadoop-2x-220-on-ubun ... -
SFTP(安全FTP)与FTPS(FTP over SSL)不同。 确保你没有混合苹果和橘子。 I suppose Apache Commons libs does not provide SFTP APIs, so I switched to JCraft Jsch (http://www.jcraft.com/jsch/) and it works like a charm.
-
Hadoop MapReduce错误:Mkdirs无法创建文件;(Hadoop MapReduce error: Mkdirs failed to create file; job failed)[2023-06-17]
(如果其他人遇到此问题,请从评论中复制) 基于日志行 Mkdirs failed to create file:/usr/local/hadoop/1/output10/_temporary/0/_temporary/attempt_local960306821_0001_r_000000_0 (exists=false, cwd=file:/home/brina/workspace/C4.5Hadoop) 问题不在HDFS中,而在本地文件系统中。 因此,您需要调整在节点上写入的权限。 (Copy fro ... -
对于env属性SONARQUBE_JDBC_URL,而不是SERVER_IP_ADDRESS,使用链接容器的别名(在你的情况下它是mysql)。 所以,你的命令是 docker run -d --name sonarqube-container \ --link mysql-sonarqube-container:mysql \ -p 9000:9000 -p 9092:9092 \ -e SONARQUBE_JDBC_USERNAME=sonar \ -e SONARQUBE_JDBC_PASSWORD= ...
-
尝试冲洗iptable之类的 su -c“iptables -F” Try to flush iptable like su -c "iptables -F"
-
异常意味着它说的是:你的操作系统没有到目的地的网络路由。 它可以将主机名转换为IP地址,但是当它试图联系那个目的地时,就没有路由。 鉴于localhost总是可路由的,我的印象是您的代码尝试连接的服务不是localhost而是一些其他服务。 如果你将包括完整的堆栈跟踪,它会变得明显。 如果您尝试从Android运行环境连接到开发计算机上运行的服务,则需要在模拟器上设置网络连接 。 The exception means exactly what it says: your OS has no network ...
-
本地文件系统上的Hadoop(Hadoop on Local FileSystem)[2022-01-08]
您可以从mapred-site.xml文件中删除fs.default.name值 - 这应该只在core-site.xml文件中。 如果要在本地文件系统上以伪模式运行,通常通过在所谓的本地模式下运行来实现 - 通过将core-site.xml中的fs.default.name值设置为file:///(您目前已将其配置为hdfs:// localhost:54310)。 您看到的堆栈跟踪是辅助名称节点启动时 - 在“本地模式”下运行时不需要这样,因为没有用于2NN的fsimage或编辑文件。 修复core-s ... -
在容器创建之后,60秒应该是网络开始工作的经验法则。 60 seconds should be the rule of thumb for the networking start working after container creation.
-
完整的猜测,直到你发布更多的代码...但我猜你忘了返回打印你的消息后返回str,如果不是它将尝试执行其余的代码.. private String myFunction(String url){ if (str == null) { System.out.println("Error: No Connection"); return null; } //do other stuff that you are already doing . } Compl ...