要在Hadoop集群運(yùn)行上運(yùn)行JNI程序,首先要在單機(jī)上調(diào)試程序直到可以正確運(yùn)行JNI程序,之后移植到Hadoop集群就是水到渠成的事情。
Hadoop運(yùn)行程序的方式是通過(guò)jar包,所以我們需要將所有的class文件打包成jar包。在打包的過(guò)程中,無(wú)需將動(dòng)態(tài)鏈接庫(kù)包含進(jìn)去。
在集群中運(yùn)行程序之前,Hadoop會(huì)首先將jar包傳遞到所有的節(jié)點(diǎn),然后啟動(dòng)運(yùn)行。我們可以在這個(gè)階段將動(dòng)態(tài)鏈接庫(kù)作為附件和jar包同時(shí)傳遞到所有的節(jié)點(diǎn)。方法就是給jar命令指定-files參數(shù)。命令如下:
hadoop jarSegment.jar Segment -files ./bin/lib***.so input output
通過(guò)該命令,jar包和動(dòng)態(tài)鏈接庫(kù)都會(huì)傳遞到所有節(jié)點(diǎn),然后啟動(dòng)mapreduce任務(wù)。