簡體   English   中英

MongoDB Hadoop連接器流未運行

[英]MongoDB Hadoop connector streaming not running

我想啟動MongoDB Hadoop Streaming連接器,因此我下載了Hadoop的兼容版本(2.2.0)(請參閱https://github.com/mongodb/mongo-hadoop/blob/master/README.md#apache- hadoop-22

我克隆了git倉庫mongohadoop,將build.sbt hadoopRelease更改為2.2:

$ cat build.sbt
name := "mongo-hadoop"

organization := "org.mongodb"

hadoopRelease in ThisBuild := "2.2"

然后我啟動了:

$ ./sbt package
$ ./sbt mongo-hadoop-streaming/assembly
$ cp core/target/mongo-hadoop-core_2.2.0-1.2.0.jar ../hadoop-2.2.0/lib/
$ cp mongo-2.7.3.jar ../hadoop-2.2.0/lib/ # Previously downloaded
$ cd ../hadoop-2.2.0/
$ ./bin/hadoop jar ../mongo-hadoop/streaming/target/mongo-hadoop-streaming-assembly-1.1.0.jar -mapper ...

我得到這個:

Exception in thread "main" java.lang.ClassNotFoundException: com.mongodb.hadoop.streaming.MongoStreamJob
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:249)
at org.apache.hadoop.util.RunJar.main(RunJar.java:205)

我不明白為什么,我嘗試了幾乎所有應該支持流傳輸的版本,但是我總是遇到相同的錯誤!

我精確地說我在Mac OS X上。謝謝!

那實際上是一個錯誤,將在以后的版本中修復。 該主類的需求已刪除,但生成的清單未刪除。 您可以通過從流式jar中的清單中刪除Main-Class條目來調整jar。 如果您在流jar所在的目錄中運行以下腳本,它將為您解決該問題:

#! /bin/sh

M=META-INF/MANIFEST.MF
mkdir tmp
cd tmp
cp ../$1 .
JAR=$1

jar xf ${JAR}

sed -e '/Main-Class/d' ${M} >> ${M}.new 
mv ${M}.new  ${M}

jar cvfm ${JAR} ${M}

mv ${JAR} ..
cd ..
rm -r tmp

它不是超級漂亮,但應該讓您擺脫困境。 我們將嘗試盡快發布正式的1.2.1版本。 這是其間的吉拉票: https : //jira.mongodb.org/browse/HADOOP-121

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM