我已經通過遵循Amazon自己的教程(http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hbase-launch.html),使用具有所有默認設置的AWS控制檯設置了Amazon EC2集羣。我部署了一個運行Hadoop 2.2.0和HBASE 0.94.7的AMI 3.0.4。我希望能夠在我自己的計算機上運行一個Java程序,該程序將使用JAVA API連接到HBASE。以前,我已經能夠成功地使用我自己設置的Amazon EC2實例,但使用更新版本的HBASE(0.96.1.1-hadoop2),但是我在此新羣集設置下收到以下錯誤:如何通過Java API遠程連接到EC2上的HBASE
Exception in thread "main" org.apache.hadoop.hbase.MasterNotRunningException: com.google.protobuf.ServiceException: java.io.IOException: Call to <MY_EC2_MASTER_INTERNAL_HOST_NAME>/<THE_EC2_MASTER_EXTERNAL_IP>:60000 failed on local exception: java.io.IOException: Connection reset by peer
我已經檢查了服務器運行的是,我已經正確映射的EC2內部主機名在我的本地/ etc公共IP地址/ hosts文件正是因爲我曾與我建立了亞馬遜的實例來完成我。我也在亞馬遜上打開了正確的端口(2181,60000,60010,60020,60030-可能甚至不需要所有這些端口),並且目前接受來自所有IP源的流量(暫時直到我完成正確的設置並且我解決了這個問題問題)。
我的Java API使用下面的配置(和最後一行導致錯誤):
Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", "<EC2_MASTER_PUBLIC_IP_ADDRESS>");
config.set("hbase.zookeeper.property.clientPort","2181");
this.conf = config;
this.tokenizer = ObjectFactory.createOpenNLPTokenizer();
HBaseAdmin.checkHBaseAvailable(this.conf);
任何想法可能會造成什麼問題呢?這可能是我的hbase客戶端版本(0.96.1.1-hadoop2)與Amazon HBase爲0.94.7的事實不符?我在這個版本的maven倉庫找不到HBase客戶端,這就是爲什麼我使用稍微更新的版本。
請您詳細說明如何映射/ etc/hosts文件中的IP地址嗎? – Gevorg