2013-12-17 31 views
0

我擊中的一部分的NullPointerException()

我試圖執行github.com/stormprocessor/storm-state的示例代碼https://github.com/stormprocessor/storm-state/blob/master/src/jvm/storm/state/example/MapExample.java代碼。它使用HDFS。

,但它給一個NullPointerException異常如

java.lang.NullPointerException 
    at storm.state.hdfs.HDFSStore.getMeta(HDFSStore.java:37) 
    at storm.state.PartitionedState.getState(PartitionedState.java:11) 
    at storm.state.bolt.StatefulBoltExecutor.prepare(StatefulBoltExecutor.java:36) 
    at backtype.storm.daemon.executor$fn__4052$fn__4061.invoke(executor.clj:610) 
    at backtype.storm.util$async_loop$fn__465.invoke(util.clj:375) 
    at clojure.lang.AFn.run(AFn.java:24) 

在上面的鏈接的代碼,我已經改變

builder.setBolt("counter", new StatefulBoltExecutor(new WordCount(), new HDFSStore("hdfs://ip-10-202-7-99.ec2.internal:8020/tmp/data")), 8) 
      .fieldsGrouping("spout", new Fields("word")); 

builder.setBolt("counter", new StatefulBoltExecutor(new WordCount(), new HDFSStore("hdfs://localhost:9000/home/mohit/hadoop/tmp/dfs/data")), 8) 

這是我的HDFS路徑。

代碼錯誤日誌中存在的

https://github.com/stormprocessor/storm-state/blob/master/src/jvm/storm/state

對不起,非常少的環節,因爲我是一個學生的學習有非常少的聲譽, 請幫助,在此先感謝!

回答

0

我認爲你得到的錯誤是因爲你的namenode沒有監聽你在給定的代碼中配置的端口9000。嘗試在core-site.xml文件中驗證此屬性的值fs.default.name,並檢查您的namenode正在使用哪個端口。我認爲它可能是8020.如果這就是說8020,那麼你的代碼將如下所示。

builder.setBolt( 「反」,新StatefulBoltExecutor(新字計數(),新HDFSStore( 「HDFS://本地主機: /家庭/莫希特/ Hadoop的/ tmp目錄/ DFS /數據」)),8 )

我希望這可以解決您的問題

+0

謝謝您的答覆,我的端口是9000核心-site.xml中,讀我試着回答這兩個變化方案和核心-site.xml中的端口後,到8020,我的名字節點正在工作,並在端口8020聽到。我通過在瀏覽器中訪問本地主機:50070來符合此要求。但是在日誌文件中也有相同的錯誤。 –

+0

我認爲你應該嘗試重新啓動集羣,即所有的守護進程服務,並檢查是否有效 – Binary01