2013-02-14 24 views
0

在遠程計算機上安裝Hadoop(example.host.com)。豬也安裝在那臺機器上。如何使用Pig訪問遠程機器上的HDFS?

如何從其他機器訪問該機器上的hdfs?

我不想從遠程複製文件。我只想對那些以模式存儲的avro格式的文件運行查詢。

我我的本地機器上安裝了豬,並添加以下行pig.properties文件

fs.default.name=hdfs://example.host.com:8020 
mapred.job.tracker=example.host.com:8021 

但是,當我開始養豬它提供了以下錯誤

2013-02-15 12:35:26,534 [main] INFO org.apache.pig.Main - Apache Pig version 0.10.1-SNAPSHOT (rexported) compiled Feb 14 2013, 17:55:12 
2013-02-15 12:35:26,535 [main] INFO org.apache.pig.Main - Logging error messages to: /log/path/pig_1360911926530.log 
2013-02-15 12:35:26,818 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://example.host.com:8020 
2013-02-15 12:35:26.907 java[2346:1c03] Unable to load realm info from SCDynamicStore 
2013-02-15 12:35:27,574 [main] ERROR org.apache.pig.Main - ERROR 2999: Unexpected internal error. Failed to create DataStorage 
Details at logfile: /log/path/pig_1360911926530.log 

而且在內容日誌文件「/log/path/pig_1360911926530.log」爲

Error before Pig is launched 
---------------------------- 
ERROR 2999: Unexpected internal error. Failed to create DataStorage 

java.lang.RuntimeException: Failed to create DataStorage 
     at org.apache.pig.backend.hadoop.datastorage.HDataStorage.init(HDataStorage.java:75) 
     at org.apache.pig.backend.hadoop.datastorage.HDataStorage.<init>(HDataStorage.java:58) 
     at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.init(HExecutionEngine.java:205) 
     at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.init(HExecutionEngine.java:118) 
     at org.apache.pig.impl.PigContext.connect(PigContext.java:208) 
     at org.apache.pig.PigServer.<init>(PigServer.java:246) 
     at org.apache.pig.PigServer.<init>(PigServer.java:231) 
     at org.apache.pig.tools.grunt.Grunt.<init>(Grunt.java:47) 
     at org.apache.pig.Main.run(Main.java:487) 
     at org.apache.pig.Main.main(Main.java:111) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:601) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:156) 
Caused by: org.apache.hadoop.ipc.RPC$VersionMismatch: Protocol org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 61, server = 63) 
     at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:401) 
     at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:379) 
     at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:119) 
     at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:238) 
     at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:203) 
     at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:89) 
     at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1386) 
     at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:66) 
     at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1404) 
     at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:254) 
     at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:123) 
     at org.apache.pig.backend.hadoop.datastorage.HDataStorage.init(HDataStorage.java:72) 
     ... 14 more 
================================================================================ 

回答

0

提取Hadoop tar文件在本地計算機上,然後將配置文件指向羣集中的NameNode,然後使用hadoop fs -get命令將文件從遠程計算機獲取到本地計算機。

+0

我從哪裏得到hadoop tar文件?我對這一切都很陌生,請詳細解釋一下。 – msfk 2013-02-15 06:14:45

+0

我不想從遠程複製文件。我只想對那些以模式存儲的avro格式的文件運行查詢。 – msfk 2013-02-15 06:16:39

1

正如你所看到的,你得到的異常是版本不匹配。你確定XXX有$ HADOOP_HOME init的類路徑嗎?它看起來像是指向錯誤的罐子。

+0

謝謝。這是版本不匹配。 – msfk 2013-02-21 05:47:46

相關問題