HDFS 中文件操作的错误集锦
|
问题1 Java ApI执行追加写入时:无法写入 |
|
|
问题描述: ①当前数据节点无法写入,②追加文件需要再次请求。 |
|
|
问题2 命令行执行追加写入时:无法写入 |
|
|
问题描述: 当前数据节点无法写入 |
|
|
问题3 Java ApI上传时.crc校验文件的校检失败 |
|
|
问题描述: Java ApI上传文件时对原文件进行检验,导致无法正常上传 |
|
|
问题4 多次使用hadoop namenode -format 格式化导致数据节点无法正常启动 |
|
|
问题描述: 使用hadoop namenode -format 格式化时多次格式化造成了spaceID不一致 |
Jps命令没有datanode
|
三、解决方案:(列出遇到的问题和解决办法,列出没有解决的问题):
|
问题1/2 Java ApI或命令行执行追加写入时:无法写入 |
|
|
问题原因 |
我的环境中有3个datanode,备份数量设置的是3。在写操作时,它会在pipeline中写3个机器。默认replace-datanode-on-failure.policy是DEFAULT,如果系统中的datanode大于等于3,它会找另外一个datanode来拷贝。目前机器只有3台,因此只要一台datanode出问题,就一直无法写入成功。 |
|
问题解决: (针对JAVA API) |
在所要执行的代码中添加两句: conf.set("dfs.client.block.write.replace-datanode-on-failure.policy","NEVER"); 一次执行,可能无响应,再次请求即可。 详细内容可参考以下教程解释:https://blog.csdn.net/caiandyong/article/details/44730031?utm_source=copy |
|
问题解决: (针对命令行) |
修改hdfs-site.xml文件,添加或者修改如下两项: <property> <name>dfs.client.block.write.replace-datanode-on-failure.enable</name> <value>true</value> </property> <property> <name>dfs.client.block.write.replace-datanode-on-failure.policy</name> <value>NEVER</value> </property> |
|
注解 |
对于dfs.client.block.write.replace-datanode-on-failure.enable,客户端在写失败的时候,是否使用更换策略,默认是true没有问题 对于,dfs.client.block.write.replace-datanode-on-failure.policy,default在3个或以上备份的时候,是会尝试更换结点尝试写入datanode。而在两个备份的时候,不更换datanode,直接开始写。对于3个datanode的集群,只要一个节点没响应写入就会出问题,所以可以关掉。 详解参考:https://blog.csdn.net/themanofcoding/article/details/79512754?utm_source=copy |
|
问题3 Java ApI上传时.crc校验文件的校检失败 |
|
|
问题原因 |
Hadoop客户端将本地文件text.txt上传到hdfs上时,hadoop会通过fs.FSInputChecker判断需要上传的文件是否存在.crc校验文件。如果存在.crc校验文件,则会进行校验。如果校验失败,自然不会上传该文件。 可能因为之前对原文件有更改,所以会对校检文件的校验进行干扰。 |
|
问题解决: |
cd到文件所在路径,ls -a查看,果然存在.text.crc文件
详细内容可参考以下教程解释:https://blog.csdn.net/bitcarmanlee/article/details/50969025?utm_source=copy |
|
注解 |
crc文件来源 DFS命令:hadoop fs -getmerge srcDir destFile 这类命令在执行的时候,会将srcDir目录下的所有文件合并成一个文件,保存在destFile中,同时会在本地磁盘生成一个. destFile.crc的校验文件。 DFS命令:hadoop fs -get -crc src dest 这类命令在执行的时候,会将src文件,保存在dest中,同时会在本地磁盘生成一个. dest.crc的校验文件。 如何避免 在使用hadoop fs -getmerge srcDir destFile命令时,本地磁盘一定会(没有参数可以关闭)生成相应的.crc文件。 所以如果需要修改getmerge获取的文件的内容,再次上传到DFS时,可以采取以下2种策略进行规避: 1. 删除.crc文件 2. 将getmerge获取的文件修改后重新命名,如使用mv操作,再次上传到DFS中。 更多关于Hadoop的文章,可以参考:http://www.cnblogs.com/gpcuster/tag/Hadoop/ |
|
问题4 多次使用hadoop namenode -format 格式化导致数据节点无法正常启动 |
|
|
问题原因 |
在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。 |
|
问题解决: 使用hadoop namenode -format 格式化时多次格式化造成了spaceID不一致 |
1、停止集群(切换到/sbin目录下) 2、删除在hdfs中配置的data目录(即在core-site.xml中配置的hadoop.tmp.dir对应文件件)下面的所有数据; 3、重新格式化namenode(切换到hadoop目录下的bin目录下) 4、重新启动hadoop集群(切换到hadoop目录下的sbin目录下) 在使用hadoop dfsadmin -report查看使用情况,结果如下图所示: ok没有错误了。再次上传文件,成功。 转载:http://blog.csdn.net/weiyongle1996/article/details/74094989 详见:https://blog.csdn.net/love666666shen/article/details/74350358 |
HDFS 中文件操作的错误集锦的更多相关文章
- HDFS中文件的压缩与解压
HDFS中文件的压缩与解压 文件的压缩有两大好处:1.可以减少存储文件所需要的磁盘空间:2.可以加速数据在网络和磁盘上的传输.尤其是在处理大数据时,这两大好处是相当重要的. 下面是一个使用gzip工具 ...
- php中文件操作常用函数有哪些
php中文件操作常用函数有哪些 一.总结 一句话总结:读写文件函数 判断文件或者目录是否存在函数 创建目录函数 file_exists() mkdir() file_get_content() fil ...
- python中文件操作的六种模式及对文件某一行进行修改的方法
一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...
- python中文件操作的其他方法
前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...
- Hadoop第4周练习—HDFS读写文件操作
1 运行环境说明... 3 :编译并运行<权威指南>中的例3.2. 3 内容... 3 2.3.1 创建代码目录... 4 2.3.2 建立例子文件上传到hdfs中... 4 ...
- HDFS常用文件操作
put 上传文件 hadoop fs -put wordcount.txt /data/wordcount/ text 查看文件内容 hadoop fs -text /output/wo ...
- Python中文件操作2——shutil模块
1 文件操作 文件有很多的操作,之前的文件操作中介绍了内建函数对文件的打开.读取以及写入,这三种操作是对文件基本的使用.文件还有复制.删除.移动.改变文件的属主属组等操作.下面主要看os模块和shut ...
- Python 中文件操作
上代码: import os import os.path rootdir = "d:/code/su/data" # 指明被遍历的文件夹 for parent,dirnames, ...
- hdfs基本文件操作
编程实现下列要求: 1.创建一个自己姓名首字母的文件夹 2.在文件夹下创建一个hdfstext1.txt文件,项文件内输入“班级学号姓名HDFS课堂测试”的文字内容: 3.在文件夹下在创建一个好的fs ...
随机推荐
- 标准模板库中的栈(stack)
////C++数据结构与算法(第4版) Adam Drozdek 著 徐丹 吴伟敏<<清华大学出版社>> STL中的通用栈类实现为容器适配器:使用以指定方式运行的容器.栈容 ...
- java学习-初级入门-面向对象④-类与对象-类与对象的定义和使用2
我们继续学习类与对象,上一篇我们定义了 坐标类(Point), 这次我们在Point的基础上,创建一个圆类(Circle). 案例:创建一个圆类 题目要求: 计算圆的周长和面积:求判断两个圆的位置关 ...
- Hadoop的伪分布式安装和部署的流程
1.准备工作 下载一些用到的命令 yum install -y vim yum install -y lrzsz yum install net-tools 目录约定 /opt #工作目录 /opt/ ...
- C++ Primer Plus 6 笔记(2)
第4章 1.求数组元素个数的一种方法:num=sizeof 数组名/sizeof (元素类型) 2.确定字符串所需的最短数组时,别忘了将结尾的'\0'计算在内.表面可以无,内存必须有. 3.'S'表示 ...
- python实现PCA算法原理
PCA主成分分析法的数据主成分分析过程及python原理实现 1.对于主成分分析法,在求得第一主成分之后,如果需要求取下一个主成分,则需要将原来数据把第一主成分去掉以后再求取新的数据X’的第一主成分, ...
- LoadRunner回放脚本时,显示浏览器的设置
打开LoadRunner的VuGen,选择Tools-->General Options-->Display,在Display里将 Show browser during replay打钩 ...
- pygame库的学习
第一天:我学习了如何设置窗口和加载图片,以及加载音乐.这个库真的很有意思啊,打算py课设就拿这个写了. 代码: import pygamefrom sys import exit pygame.ini ...
- java 牌型种数
牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得 ...
- 剑指offer第12题打印从1到n位数以及大整数加法乘法
字符和数字加减就是字符的ASCII码和数字直接加减. 方法一: 1)在字符串操作中给一个整形数字加(字符0)就是把它转化为字符,当然给一个字符减去(字符0)就可以把它转化为数字了:如果确实是最后 ...
- 剑指offer 按之字型顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 使用两个栈进行存储,我们在打印某一行节点 ...






