基于Thrift(C++)的hBase通信接口开发文档整理
来源:互联网 发布:mac app store无法下载 编辑:程序博客网 时间:2024/05/20 00:15
吐血整理:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
一.编译boost:
1.下载boost源码。boost_1_56_0.zip(http://www.boost.org/)。
2.解压到指定目录:E:\HBase\boost_1_56_0。
3.打开vs2013本地命令行开发工具。
4.进入到boost文件夹路径:“cd E:\HBase>cd boost_1_56_0”。
5.执行bootstrap.bat,生产boost编译工具。命令行输入:“bootstrap.bat”。
6.命令行执行编译命令,可以指定文件路径:“bjam install stage --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120"”。
7.等待约1个小时后编译完成,在C:\Boost\boost_vc_120文件夹下生产三个文件夹。
include文件夹包含".h头文件";
lib文件夹包含".lib库文件"。
8.boost库编译完成。
二.编译libevent:
1.下载:libevent-2.0.22-stable.tar.gz(http://libevent.org/)。
2.解压libevent到指定文件夹路径:E:\HBase\libevent-2.0.22-stable。
3.打开vs2013本地命令行开发工具。
4.进入到libevent文件夹路径:cd E:\HBase\libevent-2.0.22-stable。
5.命令行执行编译命令:“nmake /f Makefile.nmake”
6.编译成功后生产3个lib库文件:libevent.lib;libevent_core.lib;libevent_extras.lib;将3个lib文件复制到在E:\HBase\libevent-2.0.22-stable路径下建立的lib文件夹中。
7.将WIN32-Code文件夹以及event.h,evhttp.h,evutil.h复制到include文件夹下。
8.libevent编译完成。
三.编译openssl:
1.下载ActivePerl编译工具(http://www.activestate.com/activeperl/downloads/)。
2.安装ActivePerl到指定路径(C:\Perl64),直接点击下一步即可安装完成。
3.cmd命令行进入到C:\Perl64\eg路径:执行“perl example.pl”命令进行测试,显示“Hello from ActivePerl!”表示安装成功。
4.配置windows环境变量,在path目录下配置:C:\Perl64\bin。cmd命令行窗口执行perl -h命令成功则表明Perl安装配置成功。
5.将VS2013安装的执行程序路径也配置到环境变量中。E:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
6.下载openssl源码(https://www.openssl.org/source/):openssl-1.0.1t.tar.gz。
7.加压openssl到指定文件夹:E:\HBase\openssl。
8.打开vs2013本地命令行开发工具。
9.进入到openssl文件路径,执行Configure命令(配置编译参数):“perl configure VC-WIN32”
10.编运行ms\do_ms命令。“ms\do_ms”
11.编译openssl:“nmake -f ms\nt.mak”
12.编译成功后,在inc32文件下保存有openssl的头文件文件夹,在out32文件夹下生成:libeay32.lib和ssleay32.lib两个lib文件。
13.将inc32文件下的头文件复制到一个include文件夹中,将libeay32.lib和ssleay32.lib两个lib文件复制到一个lib文件夹中,其它程序可以直接对头文件和库文件进行引用调用。
14.openssl编译完成。
四.编译thrift:
1.下载thrift-0.9.3.tar.gz。
2.解压thrift到指定目录:E:\HBase\thrift-0.9.3
3.在E:\HBase\thrift-0.9.3\thrift-0.9.3\lib\cpp目录下利用VS2013打开“test”工程,包含两个项目:libthrift和libthriftnb。
4.在test工程目录下建立include、lib两个文件夹,用于保存“.h头文件”和“.lib库文件”。
5.将boost、libevent、openssl文件夹下:所有include文件复制到test目录下的include文件夹中;所有lib文件复制到test目录下的lib文件夹中。
6.由于thrift工程中只对一些典型的库文件进行了编译。在开发hBase接口时需要添加一些thrift的现有项进行编译。包括:
TOutput.h、TOutput.cpp、protocol\TProtocol.h、protocol\TProtocol.cpp、async\TConcurrentClientSyncInfo.h、async\TConcurrentClientSyncInfo.cpp。
6.打开libthrift项目“属性”配置:
1)在"配置属性"\"C\C++"\"常规"\"附加包含目录"中,添加include文件夹路径。
2)在"配置属性"\"库管理器"\"常规"\"附加库目录"中,添加lib文件夹路径。
7.打开libthriftnb项目“属性”配置:
1)在"配置属性"\"C\C++"\"常规"\"附加包含目录"中,添加include文件夹路径。
2)在"配置属性"\"库管理器"\"常规"\"附加库目录"中,添加lib文件夹路径。
8.编译libthrift和libthriftnb两个项目,编译成功后在Debug目录下生产“libthrift.lib”和“libthriftnb.lib”两个库文件。
9.建立thrift客户端测试项目:TestClient。
10.添加hBase数据库接口C++源文件:HistInterface.h;HistInterface.cpp;zg_constants.h;zg_constants.cpp;zg_types.h;zg_types.cpp。
11.在TestClient项目目录下建立include、lib两个文件夹。
1)将thrift项目下的include路径下的文件和thrift\cpp\src路径下的文件都复制到include文件夹中。
2)将thrift项目下的lib路径下的文件和thrift\cpp\Debug中编译出来的libthrift.lib和libthriftnb.lib文件复制到lib文件夹中。
11.打开TestClient项目“属性”配置。
1)在"配置属性"\"C\C++"\"常规"\"附加包含目录"中,添加include文件夹路径。
2)在"配置属性"\"库管理器"\"常规"\"附加库目录"中,添加lib文件夹路径。
12.在"配置属性"\"链接器"\"输入"\"附加依赖项"中添加"libthrift.lib"、"libeay32.lib"、"ssleay32.lib"库文件名。
13.编译TestClient项目,无报错。
14.将编译出的TestClient.exe可执行程序复制到服务器上可以直接点击运行,不需要再加载库文件。至此,hBase的Thrift(C++)版本通信接口执行成功。
五.总结:
1.按照上述操作在win7和win10的64位操作系统,VS2013的编程环境中测试成功。
2.所有上述底层库的编译都是基于“源代码”的形式进行编译,也可以直接在官网上下载都应版本的二进制执行文件,(版本可能会存在差异)。
3.在相同的windows64位操作系统,VS2013开发环境下,可以直接复制编译好的include头文件和lib文件进行程序二次开发。
4.程序部署时可以在windows64位的裸机上直接使用编译好的可执行程序(例如TestClient.exe)。如果没有VC120的开发环境,需要将windows系统的msvcp120.dll、msvcp120d.dll、msvcr120.dll、msvcr120d.dll系统文件复制到执行程序文件夹下。
5.在windows系统thrift的C++版本开发实现中,需要使用到boost、libevent、openssl等底层库文件,有可能出现库版本、编译不通过等多种问题。保持耐心,多测试、多查阅资料,最终会大功告成。
0 0
- 基于Thrift(C++)的hBase通信接口开发文档整理
- hbase的thrift接口
- hbase的thrift接口
- hbase的thrift接口
- HBase Thrift 接口函数
- thrift(1)------基于thrift通信组件的简单RPC服务
- hbase的thrift服务
- Thrift介绍与应用(三)—hbase的thrift接口
- Thrift介绍与应用(三)—hbase的thrift接口
- Thrift开发接口
- Thrift java 基于阻塞IO的服务端多线程通信
- 手机客户端接口开发文档模板整理
- 使用Erlang和Thrift,与Hbase通信
- 基于MapReduce的HBase开发
- 基于MapReduce的HBase开发
- 基于MapReduce的HBase开发
- 通过Python使用HBase Thrift接口 url
- thrift 提供的接口
- HTML学习
- error: ‘for’ loop initial declarations are only allowed in C99 mode
- 编程,如何编程,什么是编程
- Java面向对象--Object类
- STM32时钟配置及相关问题
- 基于Thrift(C++)的hBase通信接口开发文档整理
- 操作系统大端小端(big endian、little endian)
- Uri转Path
- 2016.10.17
- Xml格式的转换-marshaling
- SVN如何打tag,以及主干,分支的相互合并操作
- 黑马程序员UI设计学院公开课,10月18日开讲啦!
- jrebel 6.5 license server
- 类加载主要步骤