问题描述
场景:我们在网络上面有多台MySql数据库,我们想要使用Hadoop处理数据库中的数据。对于如何处理现在有两种意见:1.要把数据从Mysql中取出,然后导入到Hadoop的集群(集群和Mysql数据库服务器不在同一个地方)中,然后进行处理,将处理的结果存储到Mysql数据库或者是Hbase中。2.直接用Hadoop操作数据库。使用Hadoop的DBInputFormat读取数据库中的数据。具体的是这样的,就是将Mysql数据库所在的服务器,部署成Hadoop集群的一个节点。在Hadoop分配任务时,将任务分配到有相应数据的节点上,在通过API取数据,并执行数据分析的操作。我现在是认为,第二种不太可行,但是我的大多数同学和老师都支持第二种,我就想问一下,这两种应该哪种更适合。还有就是第二种,我记得那个操作数据库的API,是在Job启动的时候就已经配置好了吧,每次只能使用一个数据库中的数据吧。求解惑,谢谢了
解决方案
解决方案二:
第二种。。没太明白,可能没用过你说的方式,不过第一种很明显我觉着很好实现,就是用sqoop直接导出到hdfs上,然后自己写mapreduce处理完数据,再sqoop出到数据库就可以了。
解决方案三:
如果你的mysql只有一台而你的hadoop集群是三台以上组成的条件是这4台机器的磁盘性能都是差不多的那么第二种方式属于瞎折腾如果你们老师不服,让他来找我
时间: 2024-08-01 03:46:13