关于HDFS读写中断的问题

AllDeth 2017-07-17 03:28:07
近日,我手头有一个任务,需要将MQ中的数据一条一条的写入到hdfs的文件中。这时候就会有一些高并发和中断后写入的问题。因为hdfs的文件块写入锁会将集群的各个节点锁住,所以多线程中断后写入会有一些问题,一般是文件锁的lease无法按时销毁,导致无法继续拿到写入锁的RemoteException,不知道大家都是什么解决方案?
...全文
437 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
AllDeth 2017-07-17
  • 打赏
  • 举报
回复
引用 1 楼 link0007 的回复:
不要一条一条写,本地缓冲一下,缓冲大小达到blockSize或者超过一定时间才写文件。hdfs并不适合频繁写入,它生来就是满足一次写入多次读取的
hdfs本身是有缓冲机制
引用 4 楼 link0007 的回复:
引用 3 楼 AllDeth 的回复:
[quote=引用 1 楼 link0007 的回复:] 不要一条一条写,本地缓冲一下,缓冲大小达到blockSize或者超过一定时间才写文件。hdfs并不适合频繁写入,它生来就是满足一次写入多次读取的
感谢回答,缓冲这块已经考虑到了,现在要解决的是客户端异常死亡,重启之后会遇到拿不到文件租约的问题。
这块没有了解。。。我们都是用hbase或者ES来存储MQ数据。[/quote]再次感谢
LinkSe7en 2017-07-17
  • 打赏
  • 举报
回复
引用 3 楼 AllDeth 的回复:
引用 1 楼 link0007 的回复:
不要一条一条写,本地缓冲一下,缓冲大小达到blockSize或者超过一定时间才写文件。hdfs并不适合频繁写入,它生来就是满足一次写入多次读取的
感谢回答,缓冲这块已经考虑到了,现在要解决的是客户端异常死亡,重启之后会遇到拿不到文件租约的问题。
这块没有了解。。。我们都是用hbase或者ES来存储MQ数据。
AllDeth 2017-07-17
  • 打赏
  • 举报
回复
引用 1 楼 link0007 的回复:
不要一条一条写,本地缓冲一下,缓冲大小达到blockSize或者超过一定时间才写文件。hdfs并不适合频繁写入,它生来就是满足一次写入多次读取的
感谢回答,缓冲这块已经考虑到了,现在要解决的是客户端异常死亡,重启之后会遇到拿不到文件租约的问题。
LinkSe7en 2017-07-17
  • 打赏
  • 举报
回复
另外如果一定要一条条写(比如有实时性要求),那么hbase是个不错的选择
LinkSe7en 2017-07-17
  • 打赏
  • 举报
回复
不要一条一条写,本地缓冲一下,缓冲大小达到blockSize或者超过一定时间才写文件。hdfs并不适合频繁写入,它生来就是满足一次写入多次读取的

20,808

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧