c语言中的hadoop hdfs客户端

7gs2gvoe  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(371)

这个问题是关于用c语言设计和实现hdfs客户机的。libhdfs页面http://hadoop.apache.org/docs/r1.0.3/libhdfs.html 提到客户机使用jni接口。有人能解释为什么c客户机使用jni吗。客户机需要做的就是在运行在datanode和namenode上的java程序中调用一个远程方法,这可以通过按datanode期望的方式序列化方法调用来实现。将jni用于如此琐碎的事情是令人困惑的。

7rfyedvj

7rfyedvj1#

hdfs完全是用java实现的,它使用java语言和api的一些特性来提高性能并易于编程。hadoop-rpc协议使用起来非常简单。简单性来自于hadoop使用 Proxy 类来拦截调用并与 Writable 接口将远程程序调用序列化到服务器端;然后打开行李打电话。所以协议在某种程度上依赖于java。
另一方面,使用jni开发c biding使得实现和重用java代码更加容易和快速。而且不容易出错,因为您不必处理诸如持久性或模仿java行为之类的事情。
有一种使用apacheavro的运动,这将使它更容易与其他语言绑定。到目前为止,它似乎被搁置。

相关问题