Hadoop-thrift介绍及应用
2015-01-15 14:02
176 查看
一、概述
hadoop是目前使用比较多的分布式文件系统,由于hadoop是用Java写的,对非Java程序人员,不好直接使用它的接口,不过它提供了thrift接口服务器,因此也可以采用其他语言来编写hadoop的客户端,本文主要介绍的是它C++客户端的使用。目前hadoop稳定版是1.2.1,thrift接口文件位于/src/contrib/thriftfs/if/hadoopfs.thrift,启动thrift服务的脚本位于/src/contrib/thriftfs/scripts/start_thrift_server.sh,C++语言文件位于/src/contrib/thriftfs/gen-cpp,包括
hadoopfs_constants.cpp/.h,hadoopfs_types.cpp/.h,ThriftHadoopFileSystem.cpp/.h和ThriftHadoopFileSystem_server.skeleton.cpp七个文件,其中最后一个文件没有用。
hadoopfs.thrift非常简单,包括4个结构,2个异常,19个service函数。以下将分别介绍结构和函数。
二、安装
Hadoop的thrift server是需要安装的。如果下载的是带bin的包,其中thrift server是没有编译到包中的,因此需要下载源代码重新编译。具体的编译过程,可以参考http://blog.csdn.net/jiangheng0535/article/details/12089023,大致要下载ant,ivy,m4,autoconf,automake,libtool,然后用ant来编译。采用文章中描述的步骤,基本上可以成功启动thriftserver。开启thrift sever的脚本如下(当然,首先应启动hadoop):
[plain]
view plaincopy
/src/contrib/thrifts/scripts/start_thrift_server.sh 端口号
如果不写端口,则侦听端口是随机的,无论哪种情况,注意一下启动的输出,其中有端口号。
三、接口结构
接口结构比较少,如下:ThriftHandle:这个东西相当于文件句柄
Pathname:文件路径
FileStatus :实际上是文件的各种属性,包括名称、长度、文件/目录、块复制数、块大小,权限属性等。
BlockLocation :文件块的属性,包括位置属性,该块在文件中的偏移量,大小等。
四、接口service函数
本文thrift采用的是0.9.1,此时hadoop自带的C++文件中,hadoopfs_types和ThriftHadoopFileSystem会发生编译错误,其中命名空间中的facebook应改为::apache,hadoopfs_types.h中包含文件reflection_limited_types.h应该改为TApplicationException.h,可以看出,此处生成的文件,采用的是老版本的thrift compiler。setInactivityTimeoutPeriod:设置超时时间(s),如果超过此时间,服务器断开。
shutdown:断开与服务器的连接
create、createFile:这两个是创建文件,并输出文件句柄供写入,后一个函数提供了更多的文件属性参数来控制文件的创建。
open:以读写方式打开一个已存在的文件,输出文件句柄供操作。
append:以添加方式打开一个已存在的文件,输出为文件句柄。
write:向已打开的文件写入数据,返回是否成功。
read:向已打开的文件读取数据,与通常文件读取一样,需指定读取位置和读取大小。
close:关闭文件
rm:删除文件或目录,可以指定是否递归删除目录
rename:重新命名文件或目录
mkdirs:创建目录
exists:检查文件或目录是否存在
stat:获取文件或目录的属性,输出的是FileStatus结构。
listStatus:如果输入是一个目录,则输出是目录下所有文件的FileStatus结构(数组)
chmod:设置文件/目录的权限
chown:设置文件/目录的组和所有者
setReplication:设置文件的复制因子(多少份)
getFileBlockLocations:得到文件的块的信息,输出是BlockLocation数组。
以上这些接口除了具有复制因子、块等信息外,与通常的文件操作没有什么区别,因此对它们进行再次封装似乎没有必要,除非有特殊的要求。
相关文章推荐
- thrift介绍及应用(四)—hadoop的thrift接口
- thrift介绍及应用(四)—hadoop的thrift接口
- Hadoop入门进阶课程10--HBase介绍、安装与应用案例
- Hadoop入门进阶课程10--HBase介绍、安装与应用案例
- thrift介绍及应用(一)—介绍
- Hadoop入门进阶课程7--Pig介绍、安装与应用案例
- Hadoop入门进阶课程9--Mahout介绍、安装与应用案例
- thrift介绍及应用(二)—简单应用
- Hadoop入门进阶课程12--Flume介绍、安装与应用案例 3ff8
- Thrift介绍与应用(三)—hbase的thrift接口
- Hadoop入门进阶课程12--Flume介绍、安装与应用案例
- 什么是HADOOP、产生背景、在大数据、云计算中的位置和关系、国内外HADOOP应用案例介绍、就业方向、生态圈以及各组成部分的简介(学习资料中的文档材料)
- thrift介绍及应用(一)—介绍
- hadoop学习第七节:Pig介绍、安装与应用案例
- hadoop学习第九节:Mahout介绍、安装与应用案例
- thrift介绍及应用(二)—简单应用
- thrift介绍及应用(一)—介绍
- Hadoop入门进阶课程12--Flume介绍、安装与应用案例
- Hadoop入门进阶课程12--Flume介绍、安装与应用案例
- “大数据分析挖掘-基于Hadoop/Mahout/Mllib的大数据挖掘(含Spark、Storm和Docker应用介绍)”培训