在 .NET 中使用 Thrift 在 Hbase 上进行 MapReduce?
我可以使用 Hadoop Streaming 在 .NET 中使用 thrift 在 HBase 上运行 MapReduce 作业吗?或者还有其他方法可以从 .NET 在 HBase 上运行 MapReduce 作业吗?
Can i use Hadoop Streaming to Run MapReduce jobs on HBase using thrift in .NET? Or is there any other way to run MapReduce jobs on HBase from .NET?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您还可以使用 REST API (stargate)。然而,thrift 或 stargate 服务器都不是运行 MapReduce 作业的好方法。两者都需要一个单独的守护进程,该进程将成为单点争用并且不会提供数据局部性。 java mapreduce api 识别输入分割的数据局部区域。所以关键是使用java api和.Net。 这个问题为 hbase 的流 api 提供了第三方增强功能,这将允许您使用通过 stdin/stdout 的 .Net 应用程序。
You could also use the REST API (stargate). However, neither the thrift or stargate servers are good ways to run a MapReduce jobs. Both require a separate daemon process that would be a single point of contention and wouldn't provide data locality. The java mapreduce api identifies data local regions for input splits. So the key is to use the java api with .Net. This question provides a third party enhancement to streaming api for hbase, which would allow you use a .Net app via stdin/stdout.
我已经成功地实现了这一点。所以,答案是肯定的,可以做到。
编辑
我不知道为什么投反对票,问题有答案,但以下是我如何实现它:
Thrift比REST API更轻量级,并且在某些情况下比java api提供更多性能,我已经使用了 Hadoop Streaming API 并为其提供了我自己的 Mapper 实现,该实现使用 Thrift 与 hbase 进行通信,例如
I have successfully achieved this. So, the answer is yes it can be done.
Edit
I don't know why down votes, the question has the answer but following is how I achieved it:
Thrift is more light weight than REST API and in some scenarios gives more performance than java api, I've used Hadoop Streaming API and give it my own Mapper implementation which uses Thrift to communicate with hbase e.g.