2013-05-12 74 views
0

我正在使用具有標準列類型和組合類型鍵的cassandra列族。 cassandra集羣有3個節點,複製因子爲3.數據從列族中插入,更新和刪除。cassandra列數據出現長時間延遲和不正確的時間戳

例如,可以說柱族的當前狀態是

Row X 
column=1:a, value=v1, timestamp=1000 
column=1:b, value=v2, timestamp=1010 
column=2:a, value=v3, timestamp=1020 

許多更新發生在一段時間內其中Row X列可以得到更新,有時新行得到插入或刪除。

我正在觀察的問題是,假設說與密鑰2列:a更新在timestamp=1030值爲v4。當我使用cassandra-cli觀察數據時,即使在幾個小時之後,它也不會顯示鍵2:a。後來,鍵1:a,1:b被刪除,並最終 - 在幾個小時後,鍵2:a出現,但有一個時間戳早於1030 - 比如說990.

我讀到,如果有時鐘跨節點的差異,那麼具有最新時間戳的作者寫其他人。如果它們是相同的,那麼較高的值將按照字典順序排列在較低的值上。但是,就我而言,只有一個編寫器進程更新了列族,並且編寫器僅更新了密鑰2:a並且稍後刪除了1:a和1:b。所以沒有多個作家爲同一個關鍵。作者是多線程的,因此線程觸摸各種鍵,但不是相同的鍵。

所以我的問題是:

  1. 下,我們能有什麼情況下鍵顯示不出來,甚至寫發生後很長一段時間?
  2. 什麼會導致密鑰的時間戳變得混亂?在上面的例子中,2:a應該有1030的時間戳,但是當它最終被看到時顯示爲990。

有人可以分享一些關於什麼可能是錯的,或如何解決問題的指針或任何有用的文章來分析問題?

回答

0

卡桑德拉不立即刪除數據。列標記爲墓碑,稍後將通過壓縮刪除,這解釋了您的滯後幾個小時。無論是否已將其標記爲邏輯刪除,始終將具有最高時間戳的環中的數據選擇爲正確的值。雖然我無法確定,但節點時間不同步最有可能發生在您的案例中。我強烈建議您在所有機器上安裝ntp,等到所有時間都同步後再試一次。