Birkaç ay önce phoenix kullanmaya başladım. Çevre ve sürüm detayları aşağıdadır.apache phoenix Soru stackover de bulunmuyor
Hadoop - Cloudera CDH 5.4.7-1. Phoenix - 4.3 - Phoenix, CDH5.4.7-1 üzerinde parsel olarak gelir. HBase sürümü - HBase 1.0.0 JDK - 1.7.0_67 1 Master ve 3 bölge sunucuları.
Apache Phoenix'i değerlendirmek için bir POC yapmaya başladık. Oracle DB'de 12 farklı tablodan veri var. Verileri Oracle altın kapısını kullanarak Hadoop sistemine alıyoruz.
Her biri birkaç yüz satırlı 40-100 sütun içeren 12 farklı Phoenix tablosu vardır. Bir dönüşüm süreci yaparız ve daha sonra final masasına yükleriz. Bu, yaptığımız temel ETL. Dönüşüm süreci ara tabloları doldurduğumuz birkaç ara aşamadan geçer. Dolayısıyla tablolar arasında “birleşmeler” vardır.
Her şey harika çalıştı ve tüm ETL işlemini gerçekleştirebildik. Kullanım kolaylığı ve uygulamadan çok memnun kaldım.
Performans testleri, milyonlarca satır ile başladığımızda başladı. Aşağıda konular.
Ara dönüşüm işlemi bölge sunucularını çöker: Her biri 20 Milyon satırı olan iki tabloyu birleştirmek. Katıldığım sütunda ikinci dizin oluşturuldu. İki tablo 9 kova ile tuzlanır. Bu, birleşimden sonuçlanan satırların sayısı ~ 200k'dan azsa iyi performans gösterdi. 200 bin satırın yürütülmesi 10 dakikadan fazla sürüyor. Ortaya çıkan satır sayısı daha fazlaysa, bölge sunucuları çökmeye başlar. İç birleştirme salted.b_acct2 ba gelen test kodu seçme sayısı (available_bal) açıklar (salted.m_item2 mi den c_item_id seçmek burada s_info_id = 12345) ba.c_item_id = mi.c_item_id üzerinde mi gibidir;
+ ------------------------------------------ + | PLANI | + ------------------------------------------ + | MÜŞTERİ 9-CHUNK PARALLEL 9-ŞEY TAM TARAYICI SALTED.S2_BA_CI_IDX | | TEK KİŞİLİK SERVER AGGREGATE | | PARALEL İÇ KÖŞE TABLO 0 (SKIP MERGE) | | MÜŞTERİ 9-CHUNK PARALEL 9-GÜNLÜK ARALIK TARAMA SALTED.S_MI_SI_IDX ÜZERİNDE [0,19,266] | | MÜŞTERİ MERGE SORT | | TO_BIGINT ("C_ITEM_ID") DİNAMİK SUNUCU FİLTRESİ IN (MI.C_ITEM_ID) | + ------------------------------------------ +
Son dönüşüm için 6 tabloya katılma: Dizine eklenmiş sütunlarda 6 tablo birleştirilmesi, 1M'den daha az satır için veri döndürür. Bu 10-12 dakika sürer. Ancak, katılma sonuçları yaklaşık 1 milyondan fazlaysa, askıda kalıyor ve sonuç geri gelmiyor. Başlangıçta yapılandırmayı değiştirip mevcut belleği artırarak çözdüğüm InsufficientMemoryException var. InsufficientMemoryException'ı tekrar alamıyorum, ancak sorgu 20 dakikadan uzun süredir çalışmıyor. Birkaç saniye içinde yürütmeyi bekliyoruz.
jvm.bootoptions= -Xms512m –Xmx9999M. hbase.regionserver.wal.codec : org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec hbase.rpc.timeout 600000 phoenix.query.timeoutMs 360000000 phoenix.query.maxServerCacheBytes 10737418240 phoenix.coprocessor.maxServerCacheTimeToLiveMs 900000 hbase.client.scanner.timeout.period 600000 phoenix.query.maxGlobalMemoryWaitMs 100000 phoenix.query.maxGlobalMemoryPercentage 50 hbase.regionserver.handler.count 50
Özet:
Aşağıda parametrelerdir çekirdek konular katılmak sorgularının Yavaş yürütme olmanın ve veri satırlarının 1 milyonun ötesine gittiğinde sonunda bölge sunucularının çökmesini. İcrada bir sınırlama var mı? Lütfen bir değerlendirme sürecinden geçerken bu sorunları çözmeme yardımcı olun ve ben de Phoenix’ten vazgeçmek istemiyorum! Yukarıdaki sorguları hızlı bir şekilde yürütebiliyorsam, Phoenix'i kullanmakta tereddüt etmem.
Selamlar, varsayılan olarak Shivamohan
Teşekkürler kliew! Yapılandırma ayarlarını değiştirmeyi denedim (Sorularımdaki son ayarlarıma bakın) ve çalışmasını ancak belirli bir sınıra kadar yaptım. Performans sorunları nedeniyle bir milyon rekorun ötesine geçemedim. Sonunda Phoenix'e HBase'den tam teşekküllü bir SQL'den vazgeçti. Şimdi ham HBaz'ı değerlendiriyoruz. Ve ihtiyaç olarak Phoenix'i kullanabilir. –
"USE_SORT_MERGE_JOIN" "sorgu ipucu", yapılandırma ayarlarına değil, sql sorgusuna eklenir. Bu sorgu ipucunu kullanarak katılmanızı çalıştırmayı denediniz mi? Bu sorgu ipucunu ayarladığınızda, Phoenix çok fazla bellek gerektirmeyen alternatif birleşim algoritması kullanır. – kliew