分享

阿里云部署hadoop,使用shell操作一切正常,但是使用java api操作上传文件大小为0

明雨轻弹 发表于 2017-12-2 15:30:39 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 11949
本帖最后由 明雨轻弹 于 2017-12-2 15:54 编辑

本人是初学者,第一次使用hadoop搭建伪分布就遇到一个解决了一周的问题,真心求助,已经解决了一周了。谢谢。
问题描述:
我使用腾讯云(之前使用的是阿里云)部署了伪分布式hadoop,目前只配置了HDFS。在腾讯云服务器中使用shell命令操作文件,一切正常,很完美。但是在本地使用java api操作hdfs,怎么弄都不对,在网上找了各种解决方法,比如防火墙,端口权限,操作权限,namenode,datanode是否开启正常,内存问题等等,都试了,使用java api操作就是不行。使用公网ip也可以打开50070页面
存在问题:
1、在云服务器中使用shell一切正常
2、使用java api操作可以上传文件、但是内容为空
3、使用java api操作可以创建文件夹
配置截图:
1、hostname -> hadoop000
2、hosts -> 10.139.153.11 hadoop000 (其中119.27.190.152为分配的公网地址,10.139.153.11为内网地址)
3、core-site.xml
<configuration>
            <property>
                <name>fs.default.name</name>
                <value>hdfs://hadoop000:8082</value>
            </property>
            <property>
                <name>hadoop.tmp.dir</name>
                <value>/root/temp</value>
            </property>
</configuration>

4、hdfs-site.xml
<configuration>
            <property>
                <name>dfs.replication</name>
                <value>1</value>
            </property>
            <property>
                <name>dfs.permissions</name>
                <value>false</value>
            </property>
</configuration>

5、slave
hadoop000

主要配置就是这些,操作的用户是root
异常截图:
1、上传文件异常如下
INFO BlockStateChange: BLOCK* processReport: from storage DS-d96f29c8-724b-4c65-9bfd-d8da87c9dee1 node DatanodeRegistration(10.139.153.11, datanodeUuid=6c4734c7-8176-4612-8f04-f463dd915245, infoPort=50075, infoSecurePort=0, ipcPort=50020, storageInfo=lv=-56;cid=CID-4fa581a3-dc2d-48c1-a9b3-74fdc5691f93;nsid=1215230189;c=0), blocks: 1, hasStaleStorage: false, processing time: 2 msecs2017-12-02 15:16:07,493 INFO org.apache.hadoop.hdfs.server.blockmanagement.CacheReplicationMonitor: Rescanning after 30000 milliseconds2、读取文件异常如下org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-1260603395-119.27.190.152-1512142941561:blk_1073741825_1001 file=/hello.txtat org.apache.hadoop.hdfs.DFSInputStream.chooseDataNode(DFSInputStream.java:1001)
这是为的服务器密码,希望真心求助Sk@.123456


已有(7)人评论

跳转到指定楼层
arsenduan 发表于 2017-12-2 17:39:47
通过jps看下进程
回复

使用道具 举报

明雨轻弹 发表于 2017-12-2 20:09:20

这就是jps下面的进程,现在是伪分布式搭建的

15154 Jps
1919 SecondaryNameNode
1634 NameNode
1758 DataNode

回复

使用道具 举报

明雨轻弹 发表于 2017-12-2 21:51:56
大家给点思路也行啊,真的搞不定啊
回复

使用道具 举报

langke93 发表于 2017-12-2 22:27:13
明雨轻弹 发表于 2017-12-2 21:51
大家给点思路也行啊,真的搞不定啊

去logs目录下看日志。你的DataNode可能是僵尸进程。另外说下你的版本

日志位置,可参考下面文章
Hadoop日志位置在哪里?确切日志位置指定
http://www.aboutyun.com/forum.php?mod=viewthread&tid=5856


回复

使用道具 举报

明雨轻弹 发表于 2017-12-3 15:44:27
langke93 发表于 2017-12-2 22:27
去logs目录下看日志。你的DataNode可能是僵尸进程。另外说下你的版本

日志位置,可参考下面文章

版本是:hadoop-2.6.0-cdh5.7.0.tar
问题是我用shell命令都能成功,为什么使用java api操作就失败呢
回复

使用道具 举报

langke93 发表于 2017-12-4 06:57:01
明雨轻弹 发表于 2017-12-3 15:44
版本是:hadoop-2.6.0-cdh5.7.0.tar
问题是我用shell命令都能成功,为什么使用java api操作就失败呢

如果shell能上传成功,可能原因1.api使用不当造成的。需要看下自己的本地环境
2.跟运行方式也有关系,是在开发环境运行,还是提交jar包。


回复

使用道具 举报

vaf714 发表于 2018-10-10 14:50:04
我也遇到了相同问题,解决了,经验我写了篇博客,https://blog.csdn.net/vaf714/article/details/82996860
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条