现在我正在尝试从 db 表中导出数据,并将其写入 hdfs。
问题是:名称节点会成为瓶颈吗?机制如何,名称节点会缓存一个切片(64MB)然后将其提供给数据节点吗?
还有比写hdfs更好的方法吗?因为我认为它没有利用并行性。
谢谢:)
现在我正在尝试从 db 表中导出数据,并将其写入 hdfs。
问题是:名称节点会成为瓶颈吗?机制如何,名称节点会缓存一个切片(64MB)然后将其提供给数据节点吗?
还有比写hdfs更好的方法吗?因为我认为它没有利用并行性。
谢谢:)
您是否考虑过使用 Sqoop。Sqoop 可用于从任何支持 JDBC 的 DB 中提取数据并将其放入 HDFS。
http://www.cloudera.com/blog/2009/06/introducing-sqoop/
Sqoop import 命令获取要运行的映射作业的数量(默认为 1)。此外,在并行化工作(映射任务 > 1)时,可以指定拆分列,否则 Sqoop 将根据表的序列键进行猜测。每个映射文件将为目录中的结果创建一个单独的文件。NN 不会成为瓶颈,除非创建的文件数量巨大(NN 将有关文件的元数据保存在内存中)。
Sqoop 还可以解释源数据库(Oracle、MySQL 或其他)并使用数据库特定工具(如 mysqldump 和 import)而不是 JDBC 通道来获得更好的性能。