从数据库导出数据并写入HDFS(hadoop fs)
现在我正在尝试从数据库表中导出数据,并将其写入hdfs。
问题是:名称节点会成为瓶颈吗?机制是怎样的,名称节点会缓存一个切片(64MB),然后将其交给数据节点?
除了写hdfs还有什么更好的方法吗?因为我认为它没有利用并行性的优势。
谢谢:)
Now i am trying to export data from a db table, and write it into hdfs.
And the problem is: will the name node become bottleneck? and how is the machanism, will name node cache a slice(64MB) and then give it to data node?
And is there any better way rather than write the hdfs? because i think it dosen't take the advantage of parellism.
Thanks:)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您是否考虑过使用 Sqoop。 Sqoop可用于从任何支持JDBC的数据库中提取数据并将其放入HDFS中。
http://www.cloudera.com/blog/2009/06/introducing- sqoop/
Sqoop import 命令获取要运行的映射作业的数量(默认为 1)。此外,在并行化工作(映射任务 > 1)时,可以指定拆分列,否则 Sqoop 将根据表的序列键进行猜测。每个映射文件都会在目录中为结果创建一个单独的文件。除非创建的文件数量很大(神经网络将有关文件的元数据保存在内存中),否则神经网络不会成为瓶颈。
Sqoop 还可以解释源数据库(Oracle、MySQL 或其他)并使用数据库特定工具(如 mysqldump 和 import)而不是 JDBC 通道以获得更好的性能。
Have you considered using Sqoop. Sqoop can be used to extract data from any DB with supports JDBC and put it in HDFS.
http://www.cloudera.com/blog/2009/06/introducing-sqoop/
Sqoop import command takes the number of map jobs to be run (it defaults to 1). Also, while parallelizing the work (map tasks > 1) the splitting column can be specified or Sqoop will make a guess based on the sequence key for the table. Each map file will create a separate file for the results in a directory. The NN will not be a bottleneck unless a huge number of files created is huge (the NN keeps the meta data about the files in the memory).
Sqoop can also interpret the source DB (Oracle, MySQL or others) and use the DB specific tools like mysqldump and import instead of the JDBC channel for better performance.