`
scholers
  • 浏览: 619602 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

一种HADOOP上的通用数据服务开发框架和机制

 
阅读更多
前言
如何快速的将hadoop上海量的数据快速的以可视化的方式展示给用户,很多传统的数据仓库或者OLAP在处理这种场景也是各种方式。我们这里数据平台采用了一种特殊的方式,
大大简化了数据产出的难度,提高了数据开发的成本。

核心模块
下图是常见的离线计算的数据流向图:



这种大数据处理的框架的好处是隔离性好,数据存储在应用的关系型数据库之后,查询性能较好,在关系型数据库上建立索引,就能够很容易满足大部分查询情况。
我们团队在开发数据分析平台的时候,利用MYSQL采用了一种创新型的数据存储方式,并在此基础上形成了一套完整的数据交换,数据存储,以及数据服务。
其整体架构图如下:



其包含三个部分的处理模块:
数据产出单元
这部分是数据ETL的开发,也就是产出数据的脚本,大部分是HIVE SQL,当然也有Map/reduce程序(以JAR包的方式),部署在HADOOP平台上,然后通过任务调度,循环执行产出数据。
这块的功能主要是在hadoop上,这里不详细描述了。

数据交换单元
当用户在HADOOP上产出一份二维表的数据的时候(上面所讲的模块),常见的处理方式如下(左边的表示HADOOP表,右边表示关系型数据库表)




在数据分析平台里面采用的方式是这样的,原始方式表和表的数据对拷,我们的方案变化为:所有的数据变成单表的一个字段




在这里CONTENT字段是利用了MySql的mediumtext字段,最大长度支持16777215个字符,换算出来大概是32M的容量。也就是说如果这个HADOOP上的按照日期的单表总数据容量不超过32M,那么就可以存成一个一个字符串。
其表结构的设计如下:



考虑到通用性以及存储成本,在TXT,XML,JSON三种格式中选择了JSON,这样又可以节省不少存储空间,占用的网络带宽也小。
于是这样一种低成本的数据同步方案就达成了,其好处有:
1. 不需要单独在应用(数据分析平台) 新建任何数据表,只需要按照存储格式进行转换之后存如MYSQL(或者其他关系型数据库)的单表中;
2. 节省开发时间,可以快速建立数据同步和回流;
3. 数据解析的成本较小,采用通用性的JSON格式,可以直接输出成用户想要的格式;

不过这样的缺点也很明显:容易产生OOM;
当需要将数据还原的时候,需要花费大量的计算在解析JSON数据上;
所以我们统一做了一个解析JSON格式的小引擎来完成JSON数据还原为二维表的工作。原先采用JSONLIB格式解析JSON数据,发现性能有问题:当同时有多个用户在浏览大数据时,经常导致OOM。
当多个字符串JSON文本拼凑成一个完成的数据串时,会占用大量的内存,一下子就会撑满内存。典型的场景就是用户在导出/查询超过100W条记录的数据时,内存中都是非格式化的数据;以线上数据库4G内存为例,最多也就能容纳125条记录,也就100W条的数据(以每万条记录最多保存32M为例,实际情况可能根据每个hadoop表字段长短和字段值大小有关系)。

数据解析单元
当数据存储在MYSQL单表数据库中,作为一个大文本字段之后,这些数据需要解析出来变成JAVA对象提供服务。所以需要设计一个解析引擎。



就是将上图3的数据流向变成反向:
  从KV结构转变成标准的二维表结构

遇到的问题
1. 数据量大,解析查询耗时耗力;在采用分布式缓存之后,仍然会存在少量的OOM;
类似全网流量试图数据,每天有800W以上,一次查询仍然会导致OOM;
有张表每天800W的数据,大致会导致数据库每天增加20G左右的容量,导致磁盘空间写满;
下图是线上实际遇到的一个问题,海量的数据将磁盘写满:


2. 不能利用数据库中的索引以及SQL的各种功能,完全依靠查询时解析文本并拼凑数据,故目前只适合后台系统;
存储改进方案
将MYSQL的innodb引擎变成开源的infobright数据仓库引擎,非常方便的将数据LOAD到数据库里面
优点:
  查询性能高:百万、千万、亿级记录数条件下,同等的SELECT查询语句,速度比MyISAM、InnoDB等普通的MySQL存储引擎快5~60倍
  存储数据量大:TB级数据大小,几十亿条记录
  高压缩比:在项目中可以达到10:1到40:1,极大地节省了数据存储空间
  基于列存储:无需建索引,无需分区
  适合复杂的分析性SQL查询:SUM, COUNT, AVG, GROUP BY

InfoBright的字段格式压缩:



  限制:
  不支持数据更新:社区版Infobright只能使用“LOAD DATA INFILE”的方式导入数据,不支持INSERT、UPDATE、DELETE
  不支持高并发:只能支持10多个并发查询;
非常适合这种海量数据的大容量存储与查询。
  • 大小: 34.2 KB
  • 大小: 57 KB
  • 大小: 46.4 KB
  • 大小: 131.5 KB
  • 大小: 16 KB
  • 大小: 30 KB
  • 大小: 25.3 KB
  • 大小: 20.8 KB
分享到:
评论
2 楼 di1984HIT 2014-06-13  
学习了,写的不错啊。
1 楼 dacoolbaby 2013-04-27  
我看到DATAX,楼主肯定是阿里系的人~~

这个方案是用来解决使用Hive对大数据进行AD-HOC的吧?

相关推荐

    基于Hadoop豆瓣电影数据分析实验报告

    Hadoop作为一款强大的分布式计算框架,自2006年诞生以来,已经在多个领域展现了其卓越的数据处理能力。本实验旨在利用Hadoop进行豆瓣电影数据的分析,以洞察电影产业的发展趋势。 Hadoop的核心组件包括: 1. **HDFS...

    Hadoop数据分析_大数据_hadoop_数据分析_

    3. **Pig**:一种高级数据流语言和执行框架,用于构建大规模数据处理的管道。 4. **Spark**:快速、通用且可扩展的大数据处理引擎,支持批处理、交互式查询(通过Spark SQL)和实时流处理(通过Spark Streaming)。...

    行业分类-设备装置-一种Hadoop平台下的数据处理方法和系统.zip

    标题中的“行业分类-设备装置-一种Hadoop平台下的数据处理方法和系统”表明这是一个关于在Hadoop平台上进行数据处理的技术方案,可能涉及到大数据处理、分布式计算和存储领域。Hadoop是一个开源框架,主要用于处理和...

    Hadoop集群程序设计与开发PPT.rar

    Hadoop是Apache软件基金会开发的一个开源框架,专门用于处理和存储大量数据。它基于Google的MapReduce编程模型和GFS分布式文件系统理念,为大数据处理提供了可靠的、可扩展的解决方案。以下将从几个关键知识点进行...

    Hadoop权威指南天气数据

    1. **HDFS**:Hadoop分布式文件系统是一种分布式文件系统,它将大文件分割成块,并在多台服务器上复制和存储这些块。这样做的好处是提高了数据的容错性和可用性,即使部分节点故障,数据仍然可以被访问。在这个案例...

    《Hadoop大数据开发基础》源数据和代码.rar

    HDFS提供了高容错性的分布式文件系统,能够将大型数据集分布在多台廉价服务器上,而MapReduce则是一种编程模型,用于大规模数据集的并行计算。 书中可能详细介绍了Hadoop的安装和配置过程,包括单机模式、伪分布式...

    hadoop海量数据处理.pdf

    HDFS是一种分布式文件系统,它将大文件分割成多个块,并将这些块分布在集群的不同节点上。这种设计使得数据的并行处理成为可能,提高了处理效率。HDFS的关键特性包括高容错性、高可扩展性和高效的读写性能。通过心跳...

    数据算法: Hadoop+Spark大数据处理技巧.pdf

    《数据算法:Hadoop+Spark大数据处理技巧》是一本深入探讨大数据处理技术的专业书籍,主要聚焦于两大主流的大数据处理框架——Hadoop和Spark。这本书不仅涵盖了基础理论,还提供了丰富的实践指导,对于想要深入了解...

    Hadoop平台数据挖掘技术研究.pdf

    云计算不仅关注计算能力,更是一种服务形式,它强调大规模、虚拟化和通用性。基于Hadoop的云计算平台通过提供分布式计算和存储的能力,为不同类型的应用提供了强大的支持。 二、数据挖掘技术在Hadoop平台的应用 ...

    新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发

    第一天 hadoop的基本概念 伪分布式hadoop集群安装 hdfs mapreduce 演示 01-hadoop职位需求状况.avi 02-hadoop课程安排.avi 03-hadoop应用场景.avi 04-hadoop对海量数据处理的解决思路.avi 05-hadoop版本选择和...

    hadoop集群通用wordcount测试程序

    MapReduce是一种编程模型,用于大规模数据集的并行计算。 二、WordCount程序原理 1. Map阶段:在这一阶段,输入的数据被分割成多个小块(split),每个split对应一个map任务。map函数接收这些数据,对每一行文本...

    数据算法 Hadoop Spark大数据处理技巧

    Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它由Apache基金会开发,主要包含两个核心组件:HDFS(Hadoop Distributed File System)和MapReduce。HDFS负责数据的分布式存储,而MapReduce则提供了...

    基于Hadoop的云计算平台安全机制研究.pdf

    5. Hadoop框架设计问题:Hadoop最初的框架设计是基于通用计算机设备组成的,这在数据传输、存储和处理的安全性方面存在一定的缺陷。 由于Hadoop云计算平台的安全机制存在上述问题,因此,提高其安全性是一个迫切...

    hadoop重要源码包和jar包

    Hadoop是大数据处理领域的一个核心框架,其源码和jar包对于理解其内部工作机制和进行二次开发至关重要。本文将深入探讨Hadoop的核心组件、模块结构、主要类库以及如何使用jar包进行分布式计算。 首先,Hadoop由两个...

    海量数据处理-Hadoop生态系统和成功案例

    Hadoop的核心组成部分包括HDFS(Hadoop Distributed File System,分布式文件系统)和MapReduce(一种大规模数据集的并行运算框架)。此外,为了更好地管理和处理数据,Hadoop生态系统还包括了一系列工具和技术,如...

    基于Hadoop平台的亿贝用户邮件数据分析(苏立)

    在Hadoop平台上,可以使用多种工具进行数据分析,例如Pig(一种高级脚本语言)、Hive(基于SQL的查询工具)、Spark(快速通用的大数据处理引擎)等。这些工具各有优缺点,选择合适的工具能有效提高分析效率。 七、...

    Hadoop 和 Spark 流行的大数据处理框架.docx

    ### Hadoop 和 Spark 大数据处理框架的知识点详解 #### 一、Hadoop:开源大数据处理框架 **1.1 Hadoop概述** Hadoop 是一个开源框架,它为大规模数据集提供存储和处理的能力,主要由以下几个核心组件构成: - **...

    基于Hadoop的云计算数据安全性研究.docx

    Hadoop作为一种开源的分布式计算框架,为处理海量数据提供了高效且经济的解决方案。本文将深入探讨基于Hadoop的云计算数据安全性的研究,这对于理解大数据环境下的信息安全至关重要。 首先,我们需要理解Hadoop的...

    hadoop入门测试数据

    在大数据处理领域,Hadoop是一个不可或缺的开源框架,它提供了分布式存储和计算的能力,使得海量数据的处理变得可能。这个“hadoop入门测试数据”压缩包正是为了帮助初学者理解和实践Hadoop的核心功能而设计的。下面...

    Uber开源Marmaray:基于Hadoop的通用数据摄取和分散框架

    Marmaray由我们的Hadoop平台团队设计和开发,是一个建立在Hadoop生态系统之上的基于插件的框架。用户可以新增插件以便从任何来源摄取数据,并利用Apache Spark将数据分散到接收器上。Marmaray这个名

Global site tag (gtag.js) - Google Analytics