我有一个关于在我的一个项目中实现hadoop的问题。基本上要求是,我们每天都会收到包含视频相关信息的日志(何时播放、何时停止、哪个用户播放等)。
我们要做的是分析这些文件并返回stats数据以响应http请求。请求示例:http://somesite/requestdata?startdate=somedate&enddate=anotherdate. 基本上,这个请求要求对在一个日期范围内播放的所有视频进行计数。
我的问题是我们能用hadoop来解决这个问题吗?
我读过很多文章,hadoop不是实时的。因此,为了实现这个场景,我应该结合使用hadoop和mysql吗?
我想做的是在mysql中为每一天的每一个视频编写一个map/reduce作业并存储count。hadoop作业可以安排为每天运行一次。然后可以使用mysql数据实时地为请求提供服务。
这种方法正确吗?Hive在这方面有用吗?请对此提供一些指导。
2条答案
按热度按时间juzqafwq1#
是的,您的方法是正确的-您可以使用mr job或hive创建每日数据,并将它们存储在mysql中以实时提供服务。
但是,配置了tez的新版本的hive可以提供良好的查询性能。您可以尝试将每天的数据存储在hive中,然后直接从那里为它们提供服务。如果查询是一个简单的select,那么它应该足够快。
bgibtngc2#
决定使用hadoop是一项投资,因为您需要集群和开发/操作工作。
要使hadoop解决方案有意义,您的数据必须很大。大的,比如说太字节的数据,来得非常快,可能没有正确的目录信息。如果您可以在当前环境中存储/处理数据,请在那里运行分析。
假设您的目标不是教育性的,我强烈建议您重新考虑选择hadoop。除非你有真正的大数据,否则只会让你付出更多的努力。
另一方面,如果您真的需要一个分布式解决方案,我认为您的日常运行方法是正确的,请接受除了编写map/reduce作业之外还有更好的替代方法,例如hive、pig或spark。