测试HDFS 5000万个文件场景时,看到Datanode的log上不断的报如下异常
11/11/10 00:00:00 ERROR datanode.DataNode: DatanodeRegistration(172.17.1.23:50010, storageID=DS-857985192-202.106.199.37-50010-1320820941090, infoPort=8083, ipcPort=50020):DataXceiver java.lang.IllegalArgumentException: n must be positive at java.util.Random.nextInt(Random.java:250) at org.apache.hadoop.hdfs.server.datanode.DataBlockScanner.getNewBlockScanTime(DataBlockScanner.java:284) at org.apache.hadoop.hdfs.server.datanode.DataBlockScanner.addBlock(DataBlockScanner.java:301) at org.apache.hadoop.hdfs.server.datanode.DataXceiver.writeBlock(DataXceiver.java:372) at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:103) at java.lang.Thread.run(Thread.java:662)
经过跟踪,发现问题是出在DataBlockScanner内:
long period = Math.min(scanPeriod,
Math.max(blockMap.size(),1) * 600 * 1000L);
return System.currentTimeMillis() - scanPeriod +
random.nextInt((int)period);
当BlockMap特别大的时候,比如我这里上传了5000万个文件,每个文件4KB,该数值会大于Integer.MAX 小于Long.MAX,强制转换成int会负数,导致nextInt抛出异常。
该处修改,只需要把
random.nextInt((int)period)
,替换成
random.nextInt(Math.abs((int)period))
即可。
后来又发现Hadoop已经有人提这个bug了,
https://issues.apache.org/jira/browse/HDFS-2541
分享到:
相关推荐
Apache Hadoop YARN:Moving beyond MapReduce and Batch Processing with Apach 2 【yarn权威指南】
实战Hadoop 2.0:从云计算到大数据(第二版)
Hadoop安全:大数据平台隐私保护 Hadoop安全:大数据平台隐私保护 Hadoop安全:大数据平台隐私保护
Hadoop实战:Hadoop in Action
Hadoop是大数据处理领域的一个核心框架,主要用于分布式存储和计算。这个文档集合应该是关于Hadoop开发者的下载资源,可能包含了源代码、开发工具和其他相关资料。由于没有具体的描述,我将根据一般Hadoop开发者的...
Hadoop安全:大数据平台隐私保护,让集群数据可以更加安全,按照文档中内容操作,可以保障集群中的数据
Hadoop实例:二度人脉与好友推荐,供大家一起共同分享学习。
"Data Analytics with Hadoop: An Introduction for Data Scientists" ISBN: 1491913703 | 2016 | PDF | 288 pages | 7 MB Ready to use statistical and machine-learning techniques across large data sets? ...
- **书名**:《Hadoop:The Definitive Guide》(第二版) - **作者**:Tom White - **前言作者**:Doug Cutting - **出版社**:O'Reilly Media, Inc. - **出版日期**:2010年10月 - **版权**:版权所有 © 2011 Tom...
资源名称:云计算Hadoop:快速部署Hadoop集群内容简介: 近来云计算越来越热门了,云计算已经被看作IT业的新趋势。云计算可以粗略地定义为使用自己环境之外的某一服务提供的可伸缩计算资源,并按使用量付费。可以...
我的报错:Could not locate Hadoop executable: E:\big_data\hadoop-3.3.0\bin\winutils.ex hadoop的winutils.exe及hadoop.dll文件,可以用于hadoop3.3. 下载好直接将两个文件复制到我们hadoop的bin目录下就行了
格式化namenode时 报错 No Route to Host from node1/192.168.3.101 to hadoop05:8485 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host解决方案 一、报错信息概要: 在配置...
《Hadoop:权威指南》是了解和掌握Apache Hadoop生态系统不可或缺的一本著作。这本书由Tom White撰写,全面深入地介绍了Hadoop的各个组件及其工作原理,对于初学者和专业人士来说都是一份宝贵的参考资料。 Hadoop是...
实战Hadoop:开启通向云计算的捷径
Apache Hadoop软件库是一个框架,它允许使用简单的编程模型跨计算机群集分布式处理大型数据集。它旨在从单个服务器扩展到数千台机器,每台机器提供本地计算和存储。该库本身不是依靠硬件来提供高可用性,而是设计...
Hadoop::Admin - 管理 Hadoop 集群的模块 概要 use Hadoop::Admin; my $cluster=Hadoop::Admin->new({ 'namenode' => 'namenode.host.name', 'jobtracker' => 'jobtracker.host.name', }); print $cluster->...