Hadoop常见错误总结

Hadoop常见错误总结

20xx-12-30 13:55

错误1:bin/hadoop dfs 不能正常启动,持续提示:

INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s).

原因:由于 dfs 的部分文件默认保存在tmp文件夹,在系统重启时被删除。 解决:修改core-site.xml 的 hadoop.tmp.dir配置文件路径:

/home/hadoop/tmp。

错误2:hadoop出现了一些问题。用$ bin/hadoop dfsadmin -report 测试的时候,发现dfs没有加载。

显示如下:

Configured Capacity: 0 (0 KB)

Present Capacity: 0 (0 KB)

DFS Remaining: 0 (0 KB)

DFS Used: 0 (0 KB)

DFS Used%: ?%

Under replicated blocks: 0

Blocks with corrupt replicas: 0

Missing blocks: 0

查看日志:

ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:

java.io.IOException: Incompatible namespaceIDs in /home/hadoop/data: namenode namespaceID = 2033006627; datanode namespaceID = 1589898341

经分析,是由于namenode namespaceID = 2033006627;和datanode namespaceID = 1589898341 不一致造成原因。

修改了namenode namespaceID = 1589898341 可以使用,但是重启之后,又不可以用了。

最后解决方案:删除hadoop用户下的name文件夹,data文件夹,tmp文件夹,temp文件里的内容,然后重新执行namenode命令。

重启电脑之后,正常。

错误3:File /home/hadoop/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1

出现此错误,一般发生在datanode与namenode还没有进行连接,就开始往hdfs系统上put数据了。稍等待一会,就可以了。

也可以使用:hadoop dfsadmin –report命令查看集群的状态。

错误4:

每次启动总有部分datanade不能去全部启动,查看日志文件,显示为: ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:

java.net.UnknownHostException: zgchen-ubutun: zgchen-ubutun at java.net.InetAddress.getLocalHost(InetAddress.java:1426)。

分析:这是由于datanode 找不到服务host引起的。

解决:通过查找/etc/hostname 找到hostname;比如:ubuntu。

然后找到/etc/hosts ,添加:127.0.1.1 ubuntu

错误5:

java.lang.OutOfMemoryError: GC overhead limit exceeded

分析:这个是JDK6新添的错误类型。是发生在GC占用大量时间为释放很小空间的时候发生的,是一种保护机制。解决方案是,关闭该功能,可以添加JVM的启动参数来限制使用内存: -XX:-UseGCOverheadLimit

添加位置是:mapred-site.xml 里新增项:mapred.child.java.opts 内容:-XX:-UseGCOverheadLimit

java.lang.OutOfMemoryError: Java heap space

出现这种异常,明显是jvm内存不够得原因,要修改所有的datanode的jvm内存大小。

Java -Xms1024m -Xmx4096m

一般jvm的最大内存使用应该为总内存大小的一半,我们使用的8G内存,所以设置为4096m,这一值可能依旧不是最优的值。(其实对于最好设置为真实物理内存大小的0.8)

错误6:Too many fetch-failures

Answer:

出现这个问题主要是结点间的连通不够全面。

1) 检查 、/etc/hosts

要求本机ip 对应 服务器名

要求要包含所有的服务器ip + 服务器名

2) 检查 .ssh/authorized_keys

要求包含所有服务器(包括其自身)的public key

错误7:处理速度特别的慢 出现map很快 但是reduce很慢 而且反复出现 reduce=0%

Answer:

结合第二点,然后修改可用内存大小。

conf/hadoop-env.sh 中的export HADOOP_HEAPSIZE=4000

错误8:能够启动datanode,但无法访问,也无法结束的错误

在重新格式化一个新的分布式文件时,需要将你NameNode上所配置的

dfs.name.dir这一namenode用来存放NameNode 持久存储名字空间及事务日志的本地文件系统路径删除,同时将各DataNode上的dfs.data.dir的路径 DataNode 存放块数据的本地文件系统路径的目录也删除。如本此配置就是在NameNode上删除/home/hadoop/NameData,在DataNode上删除

/home/hadoop/DataNode1和/home/hadoop/DataNode2。这是因为Hadoop在格式化一个新的分布式文件系统时,每个存储的名字空间都对应了建立时间的那个版本(可以查看/home/hadoop /NameData/current目录下的VERSION文件,上面记录了版本信息),在重新格式化新的分布式系统文件时,最好先删除NameData

目录。必须删除各DataNode的dfs.data.dir。这样才可以使namedode和datanode记录的信息版本对应。

注意:删除是个很危险的动作,不能确认的情况下不能删除!!做好删除的文件等通通备份!!

错误9:java.io.IOException: Could not obtain block:

blk_194219614024901469_1100

file=/user/hive/warehouse/src_20xx0924_log/src_20xx0924_log 出现这种情况大多是结点断了,没有连接上。或者

mapred.tasktracker.map.tasks.maximum 的设置 超过 cpu cores数目,导致出现获取不到文件。

错误10:Task Id : attempt_20xx10291615_0001_m_000234_0, Status : FAILED Error: java.io.IOException: No space left on device

Task Id : attempt_20xx10291615_0001_m_000240_0, Status : FAILED java.io.IOException: Spill failed

磁盘空间不够,应该分析磁盘空间df -h 检查是否还存在磁盘空间。

错误11:Task Id : attempt_20xx11011336_0007_m_000001_0, Status : FAILED org.apache.hadoop.hbase.client.RegionOfflineException: region offline: lm,,1288597709144

网上说,将/hbase删除;重启hbase后,可以正常应用了。但是我找不到/hbase目录,只好自己重新删除掉一些hadoop文件,重新生成文件管理系统。

还有一个可能是,配置错了/hbase/conf/hbase-env.sh的HBASE_CLASSPATH,这个默认是不配置的,所以可以不配置。

错误12:org.apache.hadoop.hbase.TableNotFoundException:

org.apache.hadoop.hbase.TableNotFoundException: lm

找不到表,hbase启动了,检查一下是否存在需要的Htable。

 

第二篇:hadoop常见启动问题总结

Hadoop 节点问题总结 1. hadoop主节点意外关机重启后hadoop不能启动.

Hadoop namenode由于某些原因关机重启,重新启动后hadoop服务不能正常启动. 每次开机都得重新格式化一下namenode才可以.其实问题就出在tmp文件,默认的tmp文件每次重新开机会被清空,与此同时namenode的格式化信息就会丢失于是我们得重新配置一个tmp文件目录.

首先在home目录下建立一个Hadoop_tmp目录:sudo mkdir ~/hadoop_tmp 接着修改core-site.xml文件:

gedit /home/user/hadoop-x.x.x/conf/core-site.xml

<property>

<name>hadoop.tmp.dir</name>

<value>/home/user/hadoop_tmp</value>

<description>A base for other temporary directories.</description> </property>

修改完之后记得重新格式化namenode

进入hadoop目录:bin/hadoop namenode –format

开启hadoop:bin/start-all.sh

2. hadoop 安装完成后不能格式化

将/tmp文件夹中的所有与hadoop相关的文件、文件夹删除重新格式化

3. hadoop添加datanode

给新的节点安装jdk和ssh

修改host和普通的datanode一样,添加namenode的ip

修改namenode节点的配置文件conf/slaves:添加新增节点的ip和host 在新的节点上启动服务

# ~/bin/hadoop-daemon.sh start datanode

#~/bin/hadoop-daemon.sh start tasktracker

均衡block

#~/bin/start-balancer.sh

如果不balance,那么cluster会把新的数据都存放在node上,这样会降低mapred的工作效率

设置平衡阀值,默认的为10%。值越低各节点越平衡,但耗时会更长。

 

第三篇:hadoop认识总结

一、对hadoop的基本认识 Hadoop是一个分布式系统基础技术框架,由Apache基金会所开发。利用hadoop,软件开发用户可以在不了解分布式底层细节的情况下,开发分布式程序,从而达到充分利用集群的威力高速运算和存储的目的。

Hadoop是根据google的三大论文作为基础而研发的,google的三大论文分别是:MapReduce、GFS和BigTable。因此,hadoop也因此被称为是

google技术的山寨版。不过这种“山寨版”却成了当下大数据处理技术的国际标准(因为它是世界上唯一一个做得相对完善而又开源的框架)。

Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释

MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。

MapReduce从它名字上来看就大致可以看出个缘由,两个动词Map和Reduce,“Map(展开)”就是将一个任务分解成为多个任务,“Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。这不是什么新思想,其实它的本质就是一种“分治法”的思想,把一个巨大的任务分割成许许多多的小任务单元,最后再将每个小任务单元的结果汇总,并求得最终结果。在分布式系统中,机器集群就可以看作硬件资源池,将并行的任务拆分,然后交由每一个空闲机器资源去处理,能够极大地提高计算效率,同时这种资源无关性,对于计算集群的扩展无疑提供了最好的设计保证。任务分解处理以后,那就需要将处理以后的结果再汇总起来,这就是Reduce要做的工作。

多任务、并行计算、云计算,这些词汇并不是新名词,在hadoop出现之前,甚至在google出现之前,就已经出现过分布式系统和分布式程序,hadoop新就新在它解决了分布式系统复杂的底层细节,程序员可以在不了解底层分布式细节的情况下编写高效的分布式程序,hadoop服务会自动将任务分配给不同的计算机节点,由这些节点计算最后汇总并处理计算结果。利用hadoop,程序作者可以将精力放在具体的业务逻辑上,而不是繁琐的分布式底层技术细节。另外,传统的分布式系统一般会利用若干台高性能的计算机,而hadoop则只需将大量普通的pc机连系在一起,组成一个分布式集群。

Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。

Hadoop带有用 Java 语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。 Hadoop 有许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS(对于本文)

的上一层是 MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。

二、 Hadoop下几个项目构成

其中MapReduce和hdfs是hadoop的核心,在很多时候,说hadoop往往就是指MapReduce和hdfs,其它项目是与它相关的配合使用的项目。

hadoop认识总结

1、Hadoop Common :Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。

2、HDFS:分布式文件系统,提供高吞吐量的应用程序数据访问,对外部客户机而言,HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 的一个缺点(单点失败)。

存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中

(DataNode)。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。

HDFS

hadoop认识总结

内部的所有通信都基于标准的 TCP/IP 协议。

3、MapReduce :一个分布式海量数据处理的软件框架集计算集群,它的原理如下图所示。

hadoop认识总结

4、Avro :doug cutting主持的RPC项目,主要负责数据的序列化。有点类似Google的protobuf和Facebook的thrift。avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑。

5、Hive :类似CloudBase,也是基于hadoop分布式计算平台上的提供data warehouse的sql功能的一套软件。使得存储在hadoop里面的海量数据的汇总,即席查询简单化。hive提供了一套QL的查询语言,以sql为基础,使用起来很方便。

6、HBase :基于Hadoop Distributed File System,是一个开源的,基于列存储模型的可扩展的分布式数据库,支持大型表的存储结构化数据。

7、Pig :是一个并行计算的高级的数据流语言和执行框架 ,SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能。

8、ZooKeeper :Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

9、Chukwa :一个管理大型分布式系统的数据采集系统 由yahoo贡献。

10、Cassandra :无单点故障的可扩展的多主数据库

11、Mahout :一个可扩展的机器学习和数据挖掘库

三、hadoop的应用场景 Hadoop项目是Lucnce搜索引擎项目的一个部分而发展以来的,也就是说,它最初是为了解决搜索引擎领域里的海量数据处理问题而诞生的,由此也不难理解它的应用场景,它是专为处理海量数据而生的。

首先,什么是海量数据?1G算不算?10G算不算?可以明确的说,这个数量级的数据完全不能算是海量,hadoop是专门处理TB甚至PB级数据的。当数据量庞大到TB级它的作用太能明显体现。

1.在线旅游:目前全球范围内80%的在线旅游网站都是在使用Cloudera公司提供的Hadoop发行版,其中SearchBI网站曾经报道过的Expedia也在其中。

2. 移动数据:Cloudera运营总监称,美国有70%的智能手机数据服务背后都是由Hadoop来支撑的,也就是说,包括数据的存储以及无线运营商的数据处理等,都是在利用Hadoop技术。

3.电子商务:这一场景应该是非常确定的,eBay就是最大的实践者之一。国内的电商在Hadoop技术上也是储备颇为雄厚的。

4.能源开采:美国Chevron公司是全美第二大石油公司,他们的IT部门主管介绍了Chevron使用Hadoop的经验,他们利用Hadoop进行数据的收集和处理,其中这些数据是海洋的地震数据,以便于他们找到油矿的位置。

那么,哪些行业不适合使用hadoop呢? Hadoop的突出优点是利用较低性能的计算机,对海量数据的分布式处理,它的重点是对数据的处理、分析、挖掘。因此,对于那些需要大量事务处理,实时响应等应用时不适合的,例如,银行系统等。

四、认识总结

Hadoop实际上就是一个云计算或者说分布式计算的工具,mapreduce 是它的计算引擎,hdfs是 它的文件系统,而其它项目如hbase、hive等都是在它基础上与它配套使用的外围软件。

以上这些是我对hadoop技术的初步认识,除了对它的基本认识之外,我自己曾经按照网上和书上的说明,搭建过一个基本的hadoop环境,运行了里面的示例程序。至于更多的技术细节,尚未作深入了解。

相关推荐