Mysql Applier是Mysql向hdfs进行实时备份的工具。其中用到了libhdfs,是hadoop提供的C语言访问hdfs的接口。以下是编译过程和遇到的问题。
libhdfs编译过程比较顺利,执行如下命令即可:
ant compile-c++-libhdfs -Dislibhdfs=true
下面的官方提供的例子:
#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 to open %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);
}
其中default是hostname,根据需要进行更改。
执行如下命令进行编译:
gcc testHDFS.c -I${HADOOP_HOME}/src/c++/libhdfs -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux -L${HADOOP_HOME}/c++/Linux-amd64-64/lib/ -lhdfs -L${JAVA_HOME}/jre/lib/amd64/server -ljvm -o testHDFS
执行的过程中遇到错误:
error while loading shared libraries: libhdfs.so.0: cannot open shared object file: No such file or directory
或者
error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory
解决方法有两种:
1、编辑/etc/ld.so.conf
在ld.so.conf中添加如下两行:
${HADOOP_HOME}/c++/Linux-amd64-64/lib
${JAVA_HOME}/jre/lib/amd64/server
其中${HADOOP_HOME}和${JAVA_HOME}分别是hadoop和java的home目录,替换成绝对路径,我没替换貌似不行。
执行/sbin/ldconfig -v刷新一下cache
2、编辑.bashrc
添加如下:
export LD_LIBRARY_PATH=${HADOOP_HOME}/c++/Linux-amd64-64/lib:${JAVA_HOME}/jre/lib/amd64/server
这个相比方法1要灵活。
分享到:
相关推荐
libhdfs.so是hadoop提供的操作HDFS的C语言客户端,hadoop3.1.2
通过 libhdfs.so 在hadoop上执行 tensorflow 包含 libhdfs库及配置方法
为了能够运行 libhdfs 基准测试,请在编译时指定包含目录和库路径: $ cd libhdfs-benchmark $ mkdir build $ cd build $ cmake -DLIBHDFS_INCLUDE_DIR=/usr/local/include/hdfs -DLIBHDFS_LIBRARY=/usr/local/lib/...
它还具有较少的配置和各种安全设置问题,并且不需要复杂的libhdfs3构建过程。 因此,建议所有对hdfs3有麻烦的用户尝试使用pyarrow。旧的自述文件hdfs3是libhdfs3的轻量级Python包装器, 是与Hadoop File System...
本人经过4个小时顺利将hadoop官方的32位编译为64位,通过测试可用,方便在64位linux安装hadoop的用户使用,编译时间很长,也很苦啊,解决了很多报错的问题,所以分多要一点,还望理解! 注:*****因为本人CSDN等级...
适用于 Windows 64 的 libhdfs基于 hadoop 2.6.0请使用 CMake 和 vs2013 构建
941920
使用本机库(即,maven配置文件-Pnative )编译的Hadoop 如果需要更多说明,请参考 。 用法 将此添加到您的Cargo.toml: [ dependencies ] hdfs = " 0.0.4 " 这到你的板条箱根: extern crate hdfs; hdfs-rs使用...
libhdfs ++ libhdfs ++是C ++ 11中HDFS客户端的现代实现。 它针对在HDFS中同时访问数千个文件的大规模并行处理(MPP)应用程序进行了优化。 libhdfs ++的重点是: 事件驱动架构 零拷贝API 使用Continuation ...
hadoop提供的一个接口,使用C++操作hdfs的时候会使用到的。
hadoop的hdfs系统 开发vc++客户端使用 hadoop版本 2.6.0
hadoop 64位编译后的成果,native目录 libhadoop.a libhadoop.so libhadoop.so.1.0.0 libhadooppipes.a libhadooputils.a libhdfs.a libhdfs.so libhdfs.so.0.0.0
hadoop 64位编译后的成果,native目录 libhadoop.a libhadoop.so libhadoop.so.1.0.0 libhadooppipes.a libhadooputils.a libhdfs.a libhdfs.so libhdfs.so.0.0.0
libhdfs-rs HDFS客户端的纯Rust实现(尚未准备好)
通过libhdfs操作hdfs,需要配置好开发环境,makefile中的文件路径根据实际路径修改。
编译中 $ cd hdfs-benchmark $ mkdir build $ cd build $ cmake .. 如果将Hadoop安装在/usr/local/hadoop或Clouderas Hadoop发行版(CDH)中,则不带参数运行$ cmake ..通常会找到Hadoop提供的libhdfs。 为了链接到...
大数据笔记,hdfs 包含:hdfs的安装和一些介绍 大数据笔记,hdfs 包含:hdfs的安装和一些介绍
自己编译的hadoop2.8版64位windows插件,windows下使用eclipse的hadoop插件时需要放在windows/system32中。
之前一直使用hdfs的命令进行hdfs操作,比如: hdfs dfs -ls /user/spark/ hdfs dfs -get /user/spark/a.txt /home/spark/a.txt #从HDFS获取数据到本地 hdfs dfs -put -f /home/spark/a.txt /user/spark/a.txt #从...
hdfs c/c++ API, libhdfs库中提供的接口函数声明; 如:hdfsBuilderSetNameNode,hdfsConnect,hdfsOpenFile等