简述一下hdfs的数据压缩算法,工作中用的是哪种算法,为什么
答案:1 悬赏:10 手机版
解决时间 2021-03-24 15:58
- 提问者网友:萌卜娃娃
- 2021-03-24 03:36
简述一下hdfs的数据压缩算法,工作中用的是哪种算法,为什么
最佳答案
- 五星知识达人网友:天凉才是好个秋
- 2021-03-24 05:01
1、在HDFS之上将数据压缩好后,再存储到HDFS
2、在HDFS内部支持数据压缩,这里又可以分为几种方法:
2.1、压缩工作在DataNode上完成,这里又分两种方法:
2.1.1、数据接收完后,再压缩
这个方法对HDFS的改动最小,但效果最低,只需要在block文件close后,调用压缩工具,将block文件压缩一下,然后再打开block文件时解压一下即可,几行代码就可以搞定
2.1.2、边接收数据边压缩,使用第三方提供的压缩库
效率和复杂度折中方法,Hook住系统的write和read操作,在数据写入磁盘之前,先压缩一下,但write和read对外的接口行为不变,比如:原始大小为100KB的数据,压缩后大小为10KB,当写入100KB后,仍对调用者返回100KB,而不是10KB
2.2、压缩工作交给DFSClient做,DataNode只接收和存储
这个方法效果最高,压缩分散地推给了HDFS客户端,但DataNode需要知道什么时候一个block块接收完成了。
推荐最终实现采用2.2这个方法,该方法需要修改的HDFS代码量也不大,但效果最高。
2、在HDFS内部支持数据压缩,这里又可以分为几种方法:
2.1、压缩工作在DataNode上完成,这里又分两种方法:
2.1.1、数据接收完后,再压缩
这个方法对HDFS的改动最小,但效果最低,只需要在block文件close后,调用压缩工具,将block文件压缩一下,然后再打开block文件时解压一下即可,几行代码就可以搞定
2.1.2、边接收数据边压缩,使用第三方提供的压缩库
效率和复杂度折中方法,Hook住系统的write和read操作,在数据写入磁盘之前,先压缩一下,但write和read对外的接口行为不变,比如:原始大小为100KB的数据,压缩后大小为10KB,当写入100KB后,仍对调用者返回100KB,而不是10KB
2.2、压缩工作交给DFSClient做,DataNode只接收和存储
这个方法效果最高,压缩分散地推给了HDFS客户端,但DataNode需要知道什么时候一个block块接收完成了。
推荐最终实现采用2.2这个方法,该方法需要修改的HDFS代码量也不大,但效果最高。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯