谈谈 hdfs 上的数据压缩解压缩和数据流

image.png

一想到 只要业务活着,日志数据就永远不会停止流到 hdfs上,可是 hdfs 容量是有限的,虽然时刻都有可能会扩容,我们要做的就是用有限的空间 解决无限 的数据存储,要想解决 空间问题,最主要的思想就是置换,用时间来置换空间,放在存储上,就是数据压缩 ,数据压缩要消耗时间,压缩后的数据 在计算时 如果不支持分片 会消耗更多时间,不能责怪。谁让你 穷逼一个,买不起机器 买不起硬盘

步入正题
正常来说 ,我们的日志数据在线上web服务器上生成 通过数据流管道输出到hdfs上,为了方便 日志的回溯,在线上机器上 日志会压缩备份。

如果读取实时日志,就都是原始的,scp put 会有 一个小时的延迟
使用 flume logstash kafka 可以做到 接近实时

如果修补数据 可以直接把之前天的 day.tar.gz scp put到 hdfs上,然后在hdfs上直接解压,可以做到 只解压部分文件,由于 一个tar有多种类型的文件 ,hadoop 在mapReduce 时直接读取 tar包类型输入文件还是支持不够友好的
然后解压后的日志 本身太大,需要再压缩成理想的格式,减少对空间的占用
有时候 感觉 某种压缩格式 对自己的需求不够友好,有需要转为另一种压缩格式
有时候我们希望 在 hadoop做一下 归档,把一个目录的文件再打成一个包包 tarball
总结一下,假设都是发生在hdfs上的
1.multi file type in one tar.gz To origin Files && could select file type for compress or decompress

  1. origin files To compress codec files
  2. one Compress Codec file To other Compress Codec file
  3. multi origin files To one Tar.gz
  4. compress Codec files To origin files

所以单纯数据压缩 解压缩 就有这些需求,另外解决上述问题就有三种方式 ,虽然都是需要编程,其中两种都有致命的缺点
第一种 就是使用 mapReduce 来做压缩和解压缩,
局限是不能操作 多文件类型的tar包,而且 生成的数据文件 命名 全部错乱,数据也会被打乱顺序,优点是利用集群资源 快,这个老大尝试了,但是我坚持没有尝试,主要是我认为 这个伤害太大,做了就没有后悔药了,无法撤回 对数据的影响

第二种 就是使用本地资源完成 压缩和解压缩,原理 其实就是 把hdfs 数据 get到本地,在本地 tar -zxvf unzip ,然后再 put到 hdfs 上 虽然也是编程实现的,能保证数据单个文件的完整性 正确,但是缺点 显然就是 超级慢,而且容易丢掉多个数据文件,我的尝试是一个目录下解压缩,最后总是有一些没有被put到hdfs ,修补数据让我非常恼火,需要一个个比对,超级繁琐。另外 这个 由于 使用append 的map类型,会造成数据的 格式稍微影响,所以耽搁文件的完整性并不能很好的保证,

第三种 简直是最完美的方案,利用集群资源 计算 传输解压缩 和压缩,使用hadoop 暴露出来的 操作 hdfs的接口 及hadoop本身自带的支持的压缩类完成数据压缩解压缩,不能太好了。稳定,验证数据也是完全完整,不丢数据,
快 准 稳 ,当然 从我大致翻遍 gayhub 上的资源,基本上没有非常合适这些场景的,看来给我留的时间就是 把这些开源了,造福广大人类 /手动微笑/,我在 尝试第三种方式时,其实还碰到了 写入的数据不完整性,总是少 几千行 几百行 但是我坚持认为 第三种方式必然是最完美的解决方案,通过不断拍错,debug,我找到了 符合预期的效果,并且也加深了我对 jvm上 inputsream outstream bufferStream
FSDataStream CompressionInputStream 等 流对象的深入了解。

好了,我把主要思想 都讲明白了 ,具体代码我择日 选择开源 供大家fork 膜拜 ,争取让你们用到生产环境中,我想 对于大部分公司,我们120T的都可以用,大家也不愁 不好使

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容