项目简介
基于C++的HDFS客户端库是用C++实现的Hadoop分布式文件系统(HDFS)客户端库。为非Java客户端提供轻量级、易部署的HDFS客户端解决方案,避免了JNI的复杂性。该库支持HDFS基本操作,如文件创建、删除、读取和写入,具备高度可扩展性与灵活性。
项目的主要特性和功能
- 轻量级实现:基于原生Hadoop RPC协议和HDFS数据传输协议,避免JNI复杂性。
- 易于部署:无需在每台机器部署HDFS JAR包,简化部署流程。
- 高性能:提供高吞吐量数据访问,适合处理大规模数据集。
- 跨平台支持:使用sse2neon库,支持Intel SSE和Arm/Aarch64 NEON指令集。
- 丰富的API:提供一系列C++ API,支持文件创建、删除、读取、写入等操作。
- 安全认证:支持Kerberos认证,确保数据传输安全。
安装使用步骤
依赖库
编译和使用本项目前,需安装以下依赖库: - cmake (2.8+) - boost (1.53+) - google protobuf - libxml2 - kerberos - libgsasl
编译步骤
- 复制项目:
bash cd libhdfs3
- 创建构建目录:
bash mkdir build cd build
- 配置项目:
bash ../bootstrap
可使用../bootstrap --help
查看更多配置选项。 - 编译项目:
bash make
若需并行编译,可使用make -j8
。 - 运行测试:
bash make unittest make functiontest
运行功能测试前,确保HDFS已启动,并配置好测试文件function - test.xml
。 - 安装:
bash make install
使用示例
以下示例展示如何使用libhdfs3库连接到HDFS并读取文件内容: ```cpp
include "hdfs.h"
include
int main() { hdfsFS fs = hdfsConnect("default", 0); if (!fs) { std::cerr << "Failed to connect to HDFS" << std::endl; return -1; }
hdfsFile readFile = hdfsOpenFile(fs, "/path/to/file", O_RDONLY, 0, 0, 0);
if (!readFile) {
std::cerr << "Failed to open file for reading" << std::endl;
hdfsDisconnect(fs);
return -1;
}
char buffer[1024];
tSize numBytes = hdfsRead(fs, readFile, buffer, sizeof(buffer));
if (numBytes > 0) {
std::cout.write(buffer, numBytes);
}
hdfsCloseFile(fs, readFile);
hdfsDisconnect(fs);
return 0;
} ```
文档
详细的API文档和使用示例可在项目源码的docs
目录中找到。
许可证
本项目遵循Apache License 2.0许可证。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】