2011-07-21 35 views
7

Verileri bir cassandra kümesinden başka bir halka boyutuna sahip başka bir cassandra kümesine nasıl geçireceğinizi bulmaya çalışıyorum .. .de, 5 düğüm kümesinden 7 düğüm kümesine .sayfa.N boyutunda Cassandra kümesinden veri N boyutunda farklı bir kümeye geçirme N +/- M

Ssable2json'a bakmaya başladım, çünkü bu belirli cassandra düğümünde SSTable için bir json dosyası oluşturuyor. Benim düşüncem, halkadaki her düğümde bir sütun ailesi için bunu yapmaktı. Yani, bir 5 düğüm halkasında, bu bana 5 json dosyası verecek, her düğümde bulunan sütun ailesinde saklanan veriler için bir dosya.

Sonra json dosyalarını bir dosyaya birleştiririm ve json2sstable'ı kullanarak yeni bir kümeye, büyüklüğüne, yani 7'ye izin veririm. Cassandra'nın daha sonra verileri düğümler boyunca eşit olarak çoğaltacağını/dengeleyeceğini umuyordum halkada, ama ben sadece SSTables yazılı olduklarında değişmez olduğunu okudum. Öyleyse, daha önce bahsettiğim şeyi yapsaydım, bir düğümde sütun ailemdeki tüm verilerle bir zil sesiyle sonuçlanırdım.

Herhangi biri, bir kümeden veriyi farklı bir halka boyutuna sahip farklı bir kümeye geçirme işlemine karar vermeme yardımcı olabilir mi?

cevap

9

iyi http://wiki.apache.org/cassandra/Operations#Import_.2BAC8_export tanımladığınız jeton dayalı kendisini dengeleyecektir.

Normalde sstableloader böyle bir sırayla kullanılır:

  1. lokal doğru düğüm (bin/sstableloader yol-dizine sstables veri akışı
  2. kullanımı sstableloader SSTableWriter kullanılarak sstables oluşturma -tam-of-sstables). Dizin adının anahtar alanı olduğu varsayılır, bu da varolan bir Cassandra veri dizinine yönlendirirseniz ortaya çıkar.

yeni cluter B'ye varolan küme A'dan veri akışı arıyorsanız olduğundan, kullanımıyla ilgili küme A'da her düğümünde

Daha fazla bilgi verilerinin karşı sstableloader çalışan düz atlayabilirsiniz this blog post'da sstableloader.

+0

Düzgün sstable'a yazarsam, cassandra verileri diğer düğümlere çoğaltır mı? Ayrıca, tüm veri dosyalarını halkadaki tüm düğümlerden tek bir klasöre koyar ve üzerinde sstableloader çalıştırırsam, veriler orijinal kümedeki 3 düğümde çoğaltılacağı için yinelenen verilerle sonuçlanmayacak mıyım? – Turbo

+1

Evet, yinelenen verilerle sonuçlanacaksınız. Sıkıştırma bununla ilgilenecek, bu yüzden sorun değil. Ayrıca: "tüm veri dosyalarını tek bir klasöre koymaya" gerek yok, sadece bunu yerinde yapın. (Netleştirmek için düzenlenmiştir.) – jbellis

+0

Hey jbellis, bilgi için teşekkürler. Bence burası bir rota. Benim senaryo hakkında daha fazla bilgi eklemek için, bir veri modeli oluşturmak için ec2 üzerinde hadoop kullanıyorum ve cassandra üzerinde, ayrıca ec2 üzerinde devam ediyorum. Daha sonra model inşa edildiğinde, cassandra verilerini ağıma indireceğim. Model oluştururken bazı ölçeklenebilirlik faydaları elde etmek için ec2 üzerinde oldukça büyük bir cassandra halkası oluşturacağım. Ancak ağımdaki hedef yüzük, muhtemelen yarı yarıya daha küçük olacaktır. Bu yüzden planım, veri dosyalarını ec2'den ağıma çekmek ve daha sonra verileri içe aktarmak. daha fazla sonraki yorum ... – Turbo

-1

Bu sorunun göründüğü kadar büyük olmadığını söylemek için çaba göstereceğim.

  1. yeni bir halka oluşturmak ve yeni bir halka içine uygun bir şekilde http://wiki.apache.org/cassandra/Operations#Token_selection
  2. alma verilere göre her bir düğüm için belirteçleri tanımlar. yenisine akarsu, eski halkadan sstables konusu ürünlerin kullanım bin/sstableloader:
  3. halka Eğer
+0

İki soru. Verileri yeni yüzüğe aktardığınızda, özellikle bunu nasıl yaparım? Hangi araçlar? Yeni halkanın orjinal halkanınkinden farklı olması önemli midir? – Turbo

+0

Linkler artık çalışmıyor. Ikinci nokta belirsiz ve işe yaramaz – ftrujillo

0

sstable2json kullanmanız gerekmez. Eğer can alan varsa:

  1. yeni sunucuların her birinde hepsini bir araya eski halkasındaki düğümlerin her gelen tüm sstables almak
  2. (aynı adlara sahip olan herhangi yeniden adlandırma)
  3. Yeni halkadaki her düğümde düğüm temizleme özelliğini çalıştırın ve bunlara ait olmayan verileri atar.
+0

İki halka farklı boyutlardaysa bu işe yarar mı? Orijinal halkanın 12 düğüm olduğunu ve yeni halkanın 5 düğüm olduğunu mu söylüyorsunuz? – Turbo

+0

Evet. Ama Jbellis'in bahsettiği sstableloader senaryosunun cevabı daha iyi. Geçerli düğümleri yakalayın, ardından snapshot dizinlerinin her birinden sstableloader'ı yeni kümeye doğru çalıştırın. – Zanson

0

Aşağıdaki gibi bazı adımları gerçekleştirebilirsiniz: 1.7 düğüm yerine 5 düğüm kümesine katılın ve her düğümü kendi zil sesiyle ayarlayın. Şu anda, 12 düğümlü bir kümeniz olabilir. 2. Adım 1'de 5 kümeyi yeni kümeden kaldırın. 3. Kendi düğümlerinizi 5 düğüm taşıdıktan sonra her düğüm için belirteç halkasını ayarlayın. 4. 7 düğüm kümesi onarılıyor.

İlgili konular