比较使用Hadoop和不使用Hbase的性能

时间:2015-07-19 05:56:08

标签: hadoop hbase

我正在构建一个应用程序,使用Hadoop从用户的输入图像中查找所有类似的图像。

我以两种方式实施它:

方式1: 我的集合图像被转换为​​SequenceFile以用作地图功能的输入。 然后在map函数中,使用OpenCV库来比较这些图像与用户输入图像之间的相似性,其中包括以下步骤:   - 提取关键点   - 计算描述符   - 计算每对之间的距离以找出相似性 在Reduce功能中,我只复制与输出文件夹类似的图像。

方式2:

类似于方式1,除了:

我首先使用Hbase存储图像特征(关键点,描述符)。要做到这一点,因为OpenCV不支持将关键点,描述符数据类型直接转换为bytes []的方式(为了将数据插入Hbase,我们必须转换为bytesl [])所以我必须使用我引用的技巧在此:OpenCV Mat object serialization in java

然后在map函数中,我将只查询来自Hbase的图像特征,以与用户的输入图像特征进行比较。

在正常的思想中,我们可以看到将所有图像特征保存到数据库然后只是查询它们以与用户的输入图像进行比较将比每个地图函数更快我们必须开始提取这些功能来进行比较

但实际上,当我在我的虚拟机中执行并测试两种方式(独立模式)时,我发现2的运行方式比方式1慢,并且运行时间是不可接受的。在我看来,我认为2的运行方式很慢,因为在map函数中,需要花费很多时间将Hbase中的bytes []值转换为关键点,openCV中的描述符数据类型进行比较。这就是为什么它会降低整个地图功能的性能。

我的收藏图片只包含了jpg格式的240张图片。

所以我的问题在于,除了我认为如上所述的原因之外,让路2运行速度比方式1慢。是否还有其他原因让路2比1路慢,例如:

  • 建议不要在独立模式下运行Hbase?
  • 输入大小不足以使用Hbase?

感谢。

0 个答案:

没有答案