我在一个项目中感到困惑,它要求我优化对HDFS的小文件支持。 它的步骤是这样的:
然后在我的研究中我遇到了一个问题。例如, 如果我使用命令
hdfs fs -put ~/local/smallfile /usr/smallfile
。
如果我们不做任何事情,那么在我的代码中它可能就像这样
FileSystem.get(URI.create("hdfs://loacalhost:9000/usr/smallfile"), conf)
。
但是如果我的项目没问题,那么小文件应该存储到HBase,然后当我在我的代码中使用URI hdfs://loacalhost:9000/usr/smallfile
时,它应该返回NULL
。
问题是,如何重定向到HBase并将其返回。我读了RPC但仍无法得到任何帮助。
我的想法是在用户和hdfs之间添加一个服务器,它可以获取所有URI请求并停止它然后在其中执行某些操作。但我不知道怎么做。它在技术方面是否可行?
答案 0 :(得分:0)
尝试直接从hdfs读取HBase文件不是一个好主意,因为命名是不可预测的。此外,表现将非常糟糕
如果你的文件最大大小是几MB,那么你可以将它存储在HBase中并使用HBase api来获取数据。
将1个文件存储在1个单元格中,然后您就可以通过HBase api轻松检索它。您也可以使用HBase stargate通过Http Rest调用来获取文件。