#hdfs #apache #binding #hdfs3 #modification #libhdfs3 #hawq

sys libhdfs3-sys

Apache hawq项目的libhdfs3的Rust绑定

2个不稳定版本

0.2.0 2022年4月19日
0.1.0 2022年2月13日

17 in #hdfs

GPL-3.0 许可证

780KB
17K SLoC

C++ 15K SLoC // 0.2% comments Rust 1.5K SLoC // 0.0% comments Shell 152 SLoC // 0.2% comments RPM Specfile 60 SLoC // 0.2% comments

libhdfs3-sys

libhdfs3-sys是Apache hawq项目的hdfs3库的Rust绑定:[https://github.com/apache/hawq/tree/master/depends/libhdfs3](https://github.com/apache/hawq/tree/master/depends/libhdfs3)

使用libhdfs3的优点是它不使用JNI,因此无需拥有Hadoop jars或JVM系统库即可使用HDFS。

这里包含libhdfs3的一个副本。修改是为了cmake构建文件,以便使用依赖库的最新版本进行编译。

Rust绑定灵感来源于[https://github.com/yahoNanJing/fs-hdfs](https://github.com/yahoNanJing/fs-hdfs)

要求

主要要求是libhdfs3所需的依赖。

  • cmake [http://www.cmake.org/](http://www.cmake.org/)
  • google protobuf [http://code.google.com/p/protobuf/](http://code.google.com/p/protobuf/)
  • libxml2 [http://www.xmlsoft.org/](http://www.xmlsoft.org/)
  • kerberos [http://web.mit.edu/kerberos/](http://web.mit.edu/kerberos/)
  • libuuid [http://sourceforge.net/projects/libuuid/](http://sourceforge.net/projects/libuuid/)
  • libgsasl [http://www.gnu.org/software/gsasl/](http://www.gnu.org/software/gsasl/)

此外,编译C++测试代码可能需要Google Test框架(可能从构建中移除这些依赖项,因为C++测试并不是Rust绑定的真正部分,并将简化所需的依赖项)。

  • gtest
  • gmock

注意,src/CMakeLists.txt的安装部分已修改,如下

INSTALL(TARGETS libhdfs3-static libhdfs3-shared
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
INSTALL(FILES ${HEADER} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hdfs)
INSTALL(FILES libhdfs3.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)

原始源代码中包含硬编码的路径,例如libinclude。这会导致在Fedora/CentOS/RHEL和其他系统上出现问题,在这些系统中,64位库应放在/usr/lib64而不是/usr/lib。使用GNUInstallDirs变量CMAKE_INSTALL_LIBDIRCMAKE_INSTALL_INCLUDEDIR允许使用或覆盖使用cmake时调用的正确位置。

注意

libhdfs3.tar.gz是libhdfs3源目录内容的tar gzipped文件。这可以用于生成RPM构建。

依赖

~1.4–4MB
~107K SLoC