用于冷藏和检索的HDFS

时间:2016-03-10 16:58:22

标签: hadoop binary hive sqoop

我需要每天从DB2数据库中将数据提取到具有必要分区文件夹或配置单元分区的HDFS中。例如,基于业务线(LOB),状态,日期的分区。 DB2表包含一个存储GZip压缩XML的blob列。一旦数据被摄取,需求也是基于分区列和XML的一些值每天左右检索。查询或检索过程不需要基于所有分区列;它可以仅基于LOB和州,但不是基于日期。例如,基于状态检索的数据可能很大(压缩 - 160 GB,解压缩 - 1600 GB)。

需求摘要:

  1. 每天从DB2表中将数据提取到带有分区文件夹的HDFS中。

  2. 该表包含blob列(包含GZIP压缩XML)

  3. 将数据保存在HDFS中X年(可能约有40 TB的数据)

  4. 根据某些预定义查询(Hive / MR)检索数据

  5. 还必须定期转换XML,并且可能需要存储多个版本的XML。

  6. 我在想的解决方案:

    摄入:

    1. Sqoop作业每天以avro格式摄取数据以允许二进制导入 - 着陆区(在处理后清除)

    2. 将数据从登陆区域移动到具有必要分区的另一个hive表(动态分区移动) - 基表。这是一个Snappy压缩和avro格式的表。在此步骤中,着陆区中的压缩xml将解压缩并存储在基表中,但基表本身将被压缩。

    3. 选择AVRO是因为sqoop导入的二进制文件作为序列文件格式存储了特定于sqoop格式的二进制文件,而用于avro的相同解压缩代码不适用于序列文件。 ORC是另一种选择,但我希望MR中的处理灵活性,而不仅仅是hive。

      对此有什么想法?

      检索:

      由于sqoop不支持二进制导出到DB2,我有这些导出选项

      1. 将数据作为文本文件导出到某个文件服务器(需要从HDFS到边缘节点再到文件服务器的数据移动)。

        子选项:GZip压缩的文本文件。

      2. 以Avro格式导出,以便Hadoop之外的任何进程也可以处理它。

        子选项:GZip压缩的Avro文件。

      3. Sqoop将解压缩的XML(文本)导出到DB2表。

      4. 导出的数据可以是文本格式~2 TB解压缩,如果GZip压缩则为2 GB。我还没有用Avro测量过。

        我不确定选择哪一个。首先,将这个卷导出是一个好主意吗?

        注意:客户端也投资了Azure,以防万一它是导出选项(不确定安全策略是否允许)。

0 个答案:

没有答案