2010-06-19 71 views
5

我刚开始接触学习Hadoop的,我想知道以下几点:假设我有一堆的,我想分析大量生产的MySQL表。从MySQL提取数据到Hadoop的

  1. 好像我有倾倒的所有表转换成文本文件,以使它们Hadoop的文件系统 - 这是正确的,或者是有一些蜂巢或猪或任何可以访问数据的方式从MySQL直接?
  2. 如果我将所有生产表转储为文本文件,是否需要担心在转储过程中影响生产性能? (是否取决于表使用的是什么存储引擎?我该怎么办,如果这样的吗?)
  3. 是更好地每个表转储到一个文件,或每个表拆分为64MB(或任何我的块大小)文件?

回答

10

从MySQL导入的数据可以很容易地完成。我建议你使用Cloudera的hadoop发行版,它提供了一个名为'sqoop'的程序,它提供了非常简单的界面,用于从mysql直接导入数据(其他数据库也受支持)。 Sqoop可以与mysqldump或普通的mysql查询一起使用(select * ...)。 使用此工具,不需要手动将表分区为文件。但对于hadoop来说,拥有一个大文件要好得多。

相关链接:
Sqoop User Guide

+0

+1供SQOOP参考 – 2010-07-21 00:14:28

1

2)
因为我不知道你的环境,我会AIRE在安全,一边 - 是的,不用担心影响生产性能。

根据频率和数据量的写入,您可能会发现它在一个可接受的时间量的过程,特别是如果你只是写新/更改的数据。 [主题到您查询的复杂性]

如果你不要求实时或您的服务器具有典型周期时,他们正在利用(过夜?),那么你可以在这个时候创建​​的文件。

根据您有您的环境设置,你可以复制/登陆舰是谁的唯一的工作就是创建数据文件(一个或多个)特定数据库服务器(一个或多个)。


3)
无需您分割文件,HDFS会照顾分割数据文件导入bocks和复制集群超过。默认情况下,它会自动分割成64MB数据块。
看到 - Apache - HDFS Architecture

重:WOJTEK答案 - SQOOP clicky(注释中不工作)

如果您还有其他问题或特定的环境信息,让我们知道 HTH 拉尔夫