如何清洗存储在hadoop(HDFS)中的原始数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何清洗存储在hadoop(HDFS)中的原始数据相关的知识,希望对你有一定的参考价值。

存储在hadoop集群HDFS文件系统中的原始数据,如何进行数据清洗,数据预处理。数据清洗工具有哪些?可以用Python对HDFS上的数据进行清洗吗?在网上看可以利用MapReduce、spark、hive、Python。应该使用哪个工具更合理?

参考技术A 都可以,看你自己用哪个顺手
目前主流的会使用spark

HDFS文件压缩

  起因: 集群磁盘剩余空间不足。

  删除了存储在HDFS上的,一定时间之前的中间结果,发现并不能释放太多空间,查看计算业务,发现,每天的日志存在数量竟然是10份。/惊恐

  /a/log=20180101   #每日原始日志

  /b/log=20180101  #每日原始日志,做了清洗

  /c/log=20180101  #清洗后的日志移到这里使用

  /opt/backup/log=20180101  每日原始日志压缩  

  四个地方存储了原始日志(每天30G左右),由于所有目录都是3个副本,导致HDFS上几乎相同的文件存了9份(270G),一份本地压缩(5G)

  由于都是文本文件,压缩率比较高,就想把其中不常用的目录下的文件拉下了,压缩,放回去。

  ------------------正文---------------------

  第一版操作如下:    

1、获取文件
     hadoop fs -get /aa/test/xxxx.log
2、压缩
     tar -zcvf xxxx.log.tar.gz xxxx.log
3、上传
     hadoop fs -put xxxx.log.tar.gz /aa/test/
4、删除本地临时文件
     rm *
5、删除hdfs上文件
     hadoop fs -rm /aa/test/xxxx.log

  可以执行,但是很慢。

  反思一下:  

一个文件30G需要如下这么多时间:
    从hdfs拉到本地: 10 m 
    压缩 : 30+ m 
    上传到hdfs: 10 m

时间太长,花很长的时间把文件来下来压缩了,下次突然要用,可能来不及解压缩。。。

  

以上是关于如何清洗存储在hadoop(HDFS)中的原始数据的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop3数据容错技术(纠删码)

Hadoop3数据容错技术(纠删码)

Hadoop3数据容错技术(纠删码)

HDFS文件压缩

hadoop hdfs学习

大数据相关概念和hdfs