C API libhdfs
来源:互联网 发布:淘宝客服电话人工接听 编辑:程序博客网 时间:2024/05/20 21:59
C API libhdfs
Overview
Libhdfs是一个基于C的HDFS的JNI。它为一部分HDFS的API提供了一个C的 API,以使用C来管理HDFS文件和文件系统。Libhdfs是Hadoop发行版的一部分,预编译文件是 $HADOOP_PREFIX/libhdfs/libhdfs.so。
The APIs
Libhdfs APIs是下面的一部分:
Libhdfs的头文件详细的描述了每个API,可以在头文件$HADOOP_PREFIX/src/c++/libhdfs/hdfs.h查看。
A Sample Program
#include "hdfs.h" int main(int argc, char **argv) { hdfsFS fs =hdfsConnect("default", 0); const char* writePath ="/tmp/testfile.txt"; hdfsFile writeFile = hdfsOpenFile(fs,writePath, O_WRONLY|O_CREAT, 0, 0, 0); if(!writeFile) { fprintf(stderr, "Failed toopen %s for writing!\n", writePath); exit(-1); } char* buffer = "Hello,World!"; tSize num_written_bytes = hdfsWrite(fs,writeFile, (void*)buffer, strlen(buffer)+1); if (hdfsFlush(fs, writeFile)) { fprintf(stderr, "Failed to'flush' %s\n", writePath); exit(-1); } hdfsCloseFile(fs, writeFile); }
How To Link With The Library
查看libhdfs源代码目录中的hdfs_test.c的Makefile文件($HADOOP_PREFIX/src/c++/libhdfs/Makefile) ,都是些类似于下面这样的语句:
gcc above_sample.c -I$HADOOP_PREFIX/src/c++/libhdfs -L$HADOOP_PREFIX/libhdfs -lhdfs -oabove_sample
Common Problems
最常见的问题是,当调用一个使用了libhdfs的程序时,CLASSPATH没有被正确设置。确保你将所有的Hadoop需要的jar包放到环境变量中去。目前,无法以编程的方式生成classpath,但是一个好的方式是包含所有$HADOOP_PREFIX and $HADOOP_PREFIX/lib目录中的jar文件,同时配置一个正确的包含hdfs-site.xml的配置目录。
Thread Safe
Libhdfs是线程安全的:
1. 同步和HDFS FS处理
Hadoop FS的实现包括一个FS缓存处理器,缓存基于namenode的URL和用户的连接。所以,调用hdfsConnect将返回相同的handle,但是用不同用户调用hdfsConnectAsUser将返回不同的handle。但是,因为HDFS客户端handle是完全线程安全的,这对于并发没有影响。
2. 同步和libhdfs/JNI
Libhdfs调用JNI应该总是创建线程的本地存储,所以,理论上,libhdfs应该像底层调用HDFS FS一样是线程安全的。
- libhdfs 的C API
- C API libhdfs
- C API libhdfs
- libhdfs api调用
- HDFS: c/c++接口 libhdfs
- c 使用libhdfs写数据 配置blocksize
- hdfs的C接口libhdfs的测试
- Hadoop C访问error while loading shared libraries: libhdfs.so.0
- libhdfs源码分析(1)
- libhdfs源码分析(2)
- libhdfs源码分析(3)
- libhdfs源码分析(5)
- libhdfs配置与使用
- hadoop的libhdfs使用
- hadoop libhdfs的使用方法
- 如何编译hadoop中的libhdfs
- libhdfs源码分析(4)
- Hadoop 如何使用libhdfs.so
- POJ 2739 Sum of Consecutive Prime Numbers(水题)
- linux核心文件目录详解
- poj 3057
- OpenCV训练分类器
- druid简单教程
- C API libhdfs
- 不连续取球(取球博弈)
- ??jQuery.fn =jQuery.prototype
- Hadoop系列——MapReduce过程简版
- JSON数据解析
- 更改IP
- 【转载】用BATOOL进行Pro*C程序制造的一点心得
- CVPR2014关于DL的文章列表
- PHP基于数组的分页函数(核心函数array_slice())