MapReduce 如何加载本地库 5C

官方的例子如下:
使用DistributedCache 加载本地库
用户可以通过 DistributedCache 加载本地共享库,并分发和建立库文件的符号链接。

这个例子描述了如何分发库文件并在从map/reduce任务中装载库文件。

首先拷贝库文件到HDFS。
bin/hadoop fs -copyFromLocal mylib.so.1 /libraries/mylib.so.1
启动作业时包含以下代码:
DistributedCache.createSymlink(conf);
DistributedCache.addCacheFile("hdfs://host:port/libraries/mylib.so.1#mylib.so", conf);
map/reduce任务中包含以下代码:
System.loadLibrary("mylib.so");

可是实际使用起来无效,请教是什么原因。或者有没有别的方案去加载本地库

0

2个回答

1、更改项目的MANIFEST.MF(如果一键打包,系统会自动给你生成一个这样的文件,如果一步步的打包,在最后一项你可以选择使用自己的MANIFEST.MF文件,这个文件你可以让项目先自动生成一个到项目里,在项目根目录下,然后你再来更改)文件,在"Class-Path: "参数这里写上lib文件夹里的dom4j.jar的路径(Class-Path: /lib/dom4j.jar),然后依次Next,选择根据自己的MANIFEST.MF文件打包jar。但是这样的打包其实并没有将dom4j.jar打包进来,它需要在运行的时候将dom4j.jar放到打包的jar文件同目录下,也就是打包的jar在运行的时候来调用这个dom4j.jar。如果是执行单机程序,这样做肯定是可以的,但是在分布式平台上,这个dom4j.jar明显是不能被其他节点机共享的,所以此路不通!
(这里发现一个比较好玩的,就是在MANIFEST.MF文件里通过参数注明程序运行的主类,如“Main-Class: com.huamei.common.xmlParse“,注意和上面一样,冒号后面有空一格!这样打包之后,我们在命令运行jar的时候,就可以不用再加上主类名了,如”hadoop jar parse.jar /user/input /user/output“,而不用像以前命令”hadoop jar parse.jar com.huamei.common.xmlParse /user/input /user/output “一样,更加简短了)
2、这是在网上看到的,不知道他说这个因何而起,希望看到的盆友,帮我解惑。他说我们将dom4j.jar放到打包的jar(这里是直接打包,不经过第一个,因为第一个不行)同一目录下,然后执行命令"hadoop jar -dom4j.jar parse.jar /user/input /user/output",这个肯定是报错的,无论我将-xxx.jar放到哪里都是错的,但不知道这位高人为什么这么说。 希望大家解惑。
3、通过Ant来打包jar文件,在根目录下新建一个build.xml文件,然后写上打包的配置,之后即可打包。由于我对整个ant不是很了解,试了一下没成功,所以这里不赘述,网上资料很多,大家可以自己搜着试一下。
4、使用hadoop的DistributedCache,这个在org.apache.hadoop.filecache.DistributedCache包里,利用它可以临时将程序运行所需要的外部文件加载到集群上,包括.jar,.zip等等文件,对于jar文件,它会自动添加到ClassPath中,这样我们的程序就可以加载第三方jar包了。当然,你需要先将dom4j.jar上传到hdfs上,DistributedCache里的方法会获取这个hdfs路径。DistributedCache的详解请看:http://dongxicheng.org/mapreduce-nextgen/hadoop-distributedcache-details/,这个方法是非常好用的一种方法。
5、很笨拙的一个方法,那就是将dom4j.jar文件分别复制一份到各节点机$HADOOP_HOME/lib下,这样就可以自动加载了。
6、使用eclipse的插件来打包解决,它是FatJar插件,望采纳,谢谢。

0

DistributedCache.createSymlink(conf);
DistributedCache.addCacheFile("hdfs://host:port/libraries/mylib.so.1#mylib.so", conf);
map/reduce任务中包含以下代码:
System.loadLibrary("mylib.so");

-1
zpf336
三 丰 这种没有作用,我已经试了,上边也贴出来了。
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MapReduce程式如何调用第三方和本地库
MapReduce程式调用第三方包和本地库 ------------------------- 问题: 在MP程式中如何在不同的TaskTracker节点上调用第三方jar包和读取一些只读的文件。 解决方法介绍: 我们知道,在Hadoop中有一个叫做Distri
MapReduce程式调用第三方包和本地库
问题: 在MP程式中如何在不同的TaskTracker节点上调用第三方jar包和读取一些只读的文件。 解决方法介绍: 我们知道,在Hadoop中有一个叫做DistributedCache的东东,它是用来分发应用特定的只读文件和一个jar包的,以供Map-Reduce框架在启动任务和运行的时候使用这些缓冲的文件或者是把第三方jar包添加到其classpa...
maven加载本地库
maven加载本地库的两种实现方式
Hadoop不能加载本地库问题解决
为什么80%的码农都做不了架构师?>>> ...
在Android平台上加载本地库的危险性
摘要:本文作者Hilal Alsibai来自名为“KeepSafe”的创业团队。他们为了给Android应用加密,完全通过JNI来调用加密库。结果在用户使用应用后,由于本地库的缺失,应用不断报错。他讲述了解决此问题的思路及最终方案。 在2012年KeepSafe的创业初期,我们试图找到一种为Android应用加密的方案,通过多次迭代与原型设计,我们最终找到了最佳方案——利用JNI(Jav
hadoop 2.x安装:不能加载本地库 - 重新编译hadoop本地库
不能加载本地库 - 重新编译hadoop本地库
本地库
小人在一本国外翻译过来的书上看到关于本地库的内容,但书中未介绍如何创建本地库。求教高手该如何创建?
oracle如何添加本地库
刚学ORACLE,想在本地安装一个,但不知道如果去配置本地库,就像SQL SERVER那样.安装一个客户端就可以创建表什么的.谢谢了.
eclipse 中运行hadoop 没有加载本地库
在eclipse 中执行hadoop时出现如下错误信息 没有加载到本地库文件       解决方法:   -Djava.library.path=/home/test/hadoop_setup/hadoop-1.2.1/lib/native/Linux-amd64-64         添加本地库的路径         <!--[if !su...
请问JNI加载多个本地库的问题
我已经有一个C++实现的库liba.so,然后我想用JNI提供Java接口,编写.java文件,生成.class,然后javah -jni,然后实现JNI原型的函数,编译成一个新的libb.so,都没问题。在我的Java接口中有:rnstaticrnrn System.loadLibrary("a");rn System.loadLibrary("b");rnrnrn可运行时,老出错,不能解析liba.so中的符号。我改变两个库加载的顺序,没用!rnrn于是,重新把liba和libb的源文件一起编译,生成新的libc.so,然后rnstaticrnrn System.loadLibrary("c");rnrn然后运行,这下没问题了。rnrn环境:redhat linux 9, jsdk1.4.2rnrn这我就不明白了,难道jvm一次只能加载一个本地库??那如果各个so之间有依赖关系怎么办?rnrn请教大虾,谢谢!!
在Android平台上加载本地库的危险性[转]
在2012年KeepSafe的创业初期,我们试图找到一种为Android应用加密的方案,通过多次迭代与原型设计,我们最终找到了最佳方案——利用JNI(Java本地接口)。我们决定将接口写入Java加密库中,完全通过JNI来调用加密库,以实现加密与解密。我们选用了即时解决的方案,以期将对用户体验的影响减到最小,并决定在方案通过后就部署到生产应用上。我们严格测试代码,确认一切顺利,直到事情超出了控制。...
Java和Eclipse中加载本地库(.dll文件)
最近在做的工作要用到本地方法,需要在Java中加载不少动态链接库(以下为方便延用Windows平台下的简写dll,但并不局限于Windows)。刚刚把程序跑通,赶紧把一些心得写出来,mark。也希望对大家的类似工作有所帮助首先,应当明确,dll有两类:(1)Java所依赖的dll和,(2)dll所依赖的dll。正是由于第(2)种dll的存在,才导致了java中加载dll的复杂性大大增加,许多说
Java和Eclipse中加载本地库研究
最近在做的工作要用到本地方法,需要在Java中加载不少动态链接库(以下为方便延用Windows平台下的简写dll,但并不局限于Windows)。刚刚把程序跑通,赶紧把一些心得写出来,mark。也希望对大家的类似工作有所帮助 首先,应当明确,dll有两类:(1)Java所依赖的dll和,(2)dll所依赖的dll。正是由于第(2)种dll的存在,才导致了java中加载dll的复杂性大大增加,许多说
hadoop2.4.0 启动start-dfs.sh 不能加载本地库
解决hadoop2.4.0 启动start-dfs.sh出现14/06/10 10:37:29 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
远程CDN加速不可用,加载本地库
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> <script type="text/javascript"> if (typeof jQuery == 'undefined') ...
Mapreduce加载不上动态库
情况是这样的:rn程序有一个算法是用C++实现的,然后想在Mapreduce中通过JNI运用动态库。rnAPI和命令参数分发动态库的方式都试过了,但在运程中始终调用不上,总是提示找不到动态链接库。rn上传到HDFS然后通过API分发:rn[code=java]rn DistributedCache.createSymlink(conf);rnDistributedCache.addCacheFile(new URI("hdfs://my-pc:9000/lib/libMylib.so.1#Mylib"), conf);rn[/code]rn命令行分发:rn[code=text]rnhadoop jar myjar.jar -files libMylib.sorn[/code]rnMapreduce中加载:rnSystem.loadLibrary("Mylib");rnrn运行时总是提示找不到动态库。rn打印出来,知道库路径是:rn/usr/local/hadoop/libexec/../lib/native/Linux-amd64-64rn将.so文件放进去的话是可以运行。但这不是我想要的方式啊~rn有没有人遇到过这样的问题呢,请问有知道应该怎么解决的吗?谢谢了rn
如何删除maven本地库之后重新下载本地库
在使用maven进行开发的时候,总是会碰上maven下载包不完全或者缺少的问题。其中最常见的问题就是在开发中因为缺少了某一个包而一直报错,解决方法就是在项目下的maven库中找到对应的包,然后找到该包在本地库中的位置,在本地中把这一个包删除。之后对工程进行maven install一下就OK.然后今天遇到了同样的问题,只不过报错提示的是我的jdk里面的包有错?这就尴尬了。之后我尝试着对本地的mav...
git本地库如何和GitHub关联
今天由于写blog的原因,需要本地的git库和GitHub做关联,有一些问题,在此记录。git如何和GitHub已有库关联首先我们需要在本地设置git库,命令如下:git init然后需要和GitHub上已有的repository进行关联,命令如下:git remote add origin "GitHub repository's url"举例: git remote add originhtt
maven本地库
maven的本地库默认安装路径是: ${user.home}/.m2/repository。本地库的作用就是需要jar的时候首先从本地库中寻找,如果本地库有则从本地库直接拿,如果没有则从镜像的路径或者私服中下载。修改maven的本地库 maven的安装目录下conf/settings.xml中添加一段<localRepository>G:/maven/repository</loc
Hadoop本地库
#hadoop checknative -a 2019-04-15 04:17:26,229 INFO bzip2.Bzip2Factory: Successfully loaded &amp; initialized native-bzip2 library system-native 2019-04-15 04:17:26,233 INFO zlib.ZlibFactory: Successf...
hadoop-2.5.0-cdh5.3.1centos6.4本地库
hadoop-2.5.0-cdh5.3.1 64位在centos6.4 64位编译好的本地库, 复制到native文件夹下就可以了,注意建立软链接。
Maven本地库
把Jar放到本地libs下面 通过
hadoop2.4.0 本地库
hadoop2.4.0 本地库(64位),本人在64位机子上亲自编译源代码后得到的本地库,经测试完全可用
sqlcipher_4_weixin本地库
微信本地库的工具。SQLcipher.exe作为一个可打开加密数据库的数据库管理工具,是一个exe绿色文件,无需安装,下载完便可使用。SQLCipher开发得和开放源码的扩展,它提供的SQLite数据库的透明加密.数据页之前被写入加密存储和读取解密。
本地库初始化
<p>rn <br />rn</p>rn<p>rn <p>rn 20周年限定一卡通!<span style="color:#337FE5;">可学Java全部课程</span>,仅售799元(原价7016元),<span style="color:#E53333;">还送漫威正版授权机械键盘+CSDN 20周年限量版T恤+智能编程助手!</span>rn </p>rn <p>rn 点此链接购买:rn </p>rn <table>rn <tbody>rn <tr>rn <td>rn <span style="color:#337FE5;"><a href="https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy" target="_blank">https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy</a><br />rn</span>rn </td>rn </tr>rn </tbody>rn </table>rn</p>rn<span>&nbsp;</span> rn<p>rn <br />rn</p>rn本阶段课程涵盖Java开发流行的自动化构建工具:Maven,版本控制系统:SVN和Git,容器虚拟化技术:Docker,权限模型:RBAC,集成测试:Jenkins,微服务架构:SpringCloud等核心内容。旨在应对各种实际开发情况下的的各种开发场景及业务的需要。
hadoop本地库
http://www.cnblogs.com/gpcuster/archive/2011/02/17/1957042.html(博客内容貌似不错) 转载于:https://www.cnblogs.com/johnnyflute/p/3682925.html
本地库和远程库
团队内部协作 跨团队协作
CDH创建本地库,解决本地库问题
https://www.cloudera.com/documentation/enterprise/5-14-x/topics/cdh_ig_yumrepo_local_create.html
Git:从远程库克隆到本地库及更新本地库
1.例如我们克隆远程库gitskills 2.克隆 2.1选择合适的地方(文件目录),点击Git Bash Here. 2.2如果是github远程库,进行以下操作: 点击gitskills,再点击红色箭头处内容 2.3如果是coding远程库,进行以下操作: 2.4输入克隆命令git clonehttps://github.com/d86111356/gitski...
mapreduce mapreduce mapreduce
mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce
MapReduce面试题:MapReduce如何实现数据的去重?
在map阶段,map方法的输出key也应该是数据,value 任意值都可以。而map的输入key和value 是已知的,key为每行文本首地址 相对于整个文本首地址的偏移量,value 是每行文本,因此在map方法从输入到输出的过程中,只需要将输入的value 赋给输出的 key即可。 在mapreduce整个框架下,在map输出和reduce输入之间还有一个shuffule过程,这个是系统自...
[MapReduce] 如何向map和reduce脚本传递参数,加载文件和目录
本文主要讲解三个问题:       1 使用Java编写MapReduce程序时,如何向map、reduce函数传递参数。       2 使用Streaming编写MapReduce程序(C/C++, Shell, Python)时,如何向map、reduce脚本传递参数。       3 使用Streaming编写MapReduce程序(C/C++, Shell, Python)
[Hadoop基础]-- 验证hadoop本地库是否加载成功
1、验证本地库是否加载成功的命令如下 #hadoop checknative   2、验证成功的结果
hadoop 2.x安装:不能加载本地库 - java.library.path错误
解决hadoop安装中不能加载本地库的问题方法之一
MapReduce生成HFile文件、加载HFile到HBase
MapReduce生成HFile文件、加载HFile到HBase   1、程序代码 public class TransformHFile extends Configured implements Tool{ public static final String COLUMN_FAMILY = &quot;info&quot;; public static final String[] C...
如何给Anywhere .db 的本地库消肿?
本地库中不断更新图象资料,旧的已用Delete删除,但.db文件Size日见增大,如何实现真正删除?请高手指点,谢谢?
如何通过连接远程服务器来UPDATE本地库?
比如如果是本地的两个数据库UPDATErn UPDATE talbe1 set cardno=b.cardno from table1 a ,database2.dbo.table2 b where a.peono=b.peonornrn假如database2在另外一台PC上,该如何写此数据? 登录另一台PC的数据库需要登录用户 及登录名的
mapreduce如何并行计算
map将任务分解后如何通过大量的机器来并行结算那?rn需要设计那里?
在tomcat下使用jni加载本地库的问题总结 处理UnsatisfiedLinkError错误
最近想使用
mapreduce如何使用本地文件
2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo