2016-10-17 28 views
1

我在服務器(遠程)中安裝了獨立的HBase。 我編寫了一個Java客戶端,它使用Phoenix進行通信,並看到它嘗試了36次嘗試並因此拋出異常。
用於HBASE的JDBC Phoenix驅動程序,重試36並拋出異常

HBase-Version : 1.1.5 
Phoenix-core: 4.8.0-HBase-1.1 

的ConnectionString:

Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); 
Connection connection = DriverManager.getConnection("jdbc:phoenix:192.168.1.xxx:2181"); 

我錯過somethinghere,CZ其不連接的。

例外:

Exception in thread "main" java.sql.SQLException: org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=36, exceptions: 
Mon Oct 17 11:50:18 IST 2016, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=80992: row 'SYSTEM:CATALOG,,' on table 'hbase:meta' at region=hbase:meta,,1.1588230740, hostname=HOSTNAME,16201,1476683863488, seqNum=0 

有人可以幫我..!

+0

請看看[this](https://groups.google.com/forum/#!topic/nosql-databases/yr9GKevhezs),可能有幫助...可能是區域服務器問題! –

+0

默認情況下是否訪問HadoopSystems?有關此問題的任何想法? – peaceUser

+0

我不確定@peaceUser –

回答

2

那麼其內部的IP映射誤差,
任何人,掙扎朝服務器的請求的第一推動,請makesure主機串被配置。 Modifying host here

+0

peaceUser - 你可以在這裏發佈步驟嗎?該鏈接現在無法訪問! – mbaxi

+0

@mbaxi,它的工作鏈接,https://support.rackspace.com/how-to/modify-your-hosts-file/ – peaceUser

+0

好吧,似乎我的firewell阻止它 – mbaxi

3

以我的經驗,這通常發生在掃描儀超時時。對你來說,這似乎是真實的,以及B/C在錯誤消息中,它說:

callTimeout = 60000,callDuration = 80992

這意味着你接着81秒的時候,你的暫停是一分鐘。在查詢HBase時,您需要確保您使用的是rowkey或更新版本的phoenix,以及時間戳。任何其他的HBase查詢將會非常低效。您可以嘗試的幾件事情:

  1. 嘗試的HBase的超時時間設置爲一個高得離譜的數字,如4小時
  2. 再次更改查詢使用現有的rowkey。在我們有一個表,該rowkey的第一個字符是0-9,所以我們會運行以下命令:

    select * from TABLE WHERE ROWKEY like '0%' AND [other_conditions] 
    select * from TABLE WHERE ROWKEY like '1%' AND [other_conditions] 
    etc... 
    

    ,然後合併結果,或者如果我們計算,只需乘以10 B/C對於我們的目的來說,這通常是足夠好的

  3. 最後,您可能必須編寫一個更好的rowkey來爲您的phoenix查詢進行優化。這是更高級的話題,但所有HBase查詢都是如此。 HBase擅長一件事,那就是查詢其強大的索引:rowkey。使用鳳凰並不能緩解這個問題。

順便說一下,從堆棧溢出的角度來看,它有助於發佈一些關於查詢和表結構的信息。

+0

@WattslnABox感謝您提供這樣的細節..是的,這背後有一個原因。奇怪的是,我的系統防火牆不允許完整的請求達到法定人數......! – peaceUser

+0

啊,有趣的@peaceUser,我從來沒有遇到過這樣的事情。我很高興你明白了。你可以回答你自己的問題,並接受答案 – WattsInABox

+1

任何人訪問這個問題,我會說檢查兩個答案,因爲這兩個仍然是由於相同的原因。 – peaceUser

相關問題