OSM verileri için osm2pgsql içe aktarma işlemlerini optimize etme


27

Şu anda üzerinde çalıştığımız bazı projeler için tüm Planet.osm tüm Dünya'nın değerinin anlık görüntüsünün tamamını ithal etmek üzere EC2'ye bir örnek yapıyorum. Büyük bir Ubuntu x64 örneği başlattım ve Postgres veritabanı için bir EBS birimine bol miktarda ayrı depolama alanı ekledim ve onu PGSQL verilerini içerecek şekilde değiştirdim.

Artık sunucu osm2pgsqlanlık görüntüyü içe aktarmakta sorun yaşıyor ... Farklı bellek yapılandırmaları ile yapılan birkaç denemeden sonra, işlem tamamlandıktan sonra "Killed" çıktısını almaya devam ediyor; Bir kez "beklemedeki yollardan giderken" öldürüldü ve bir dahaki sefere, ince önbelleği hafifçe ayarladıktan sonra, çökmeden önce "işlem yollarına" ulaştı. Okuduklarımdan, bu genellikle hafıza sorunlarından kaynaklanıyor.

İşte içe aktarmayı çalıştırmaya yönelik son girişimim:

osm2pgsql -v -U osm -s -C 4096 -S default.style -d osm /data/osm/planet-latest.osm.bz2

Ve işte EC2'deki Büyük örnek için teknik özellikler:

Büyük Örnek 7.5 GB bellek, 4 EC2 Hesaplama Ünitesi (her biri 2 EC2 Hesaplama Ünitesi olan 2 sanal çekirdek), 850 GB yerel örnek depolama, 64 bit platform

Benim sorum şu - osm2pgsql ve Postgres için ayar gereksinimlerini belirlemek için bazı iyi referans kaynakları var mı? İthalat hızı benim için o kadar da önemli değil, 4 ya da 5 gün sürse bile işlemin güvenli bir şekilde tamamlandığından emin olmak istiyorum ... Frederick Ramm's'ın “İşlemeyi optimize etmekitabını okudum. zinciri "(PDF) belgesi, geçen senenin SOTM'sinden, ancak başka iyi fikirler / kaynaklar var mı?


EC2'de bunu yapmak çok pahalı olmaz mıydı?
Pablo,

Çalışmasını sürdürmek ucuz değil, ancak geçici plan onu döndürmek, bir fayans takımı oluşturmak ve ardından kapatıp güncellemeleri uygulamak gerekene kadar bir süre kullanmaktır. Hala büyük bir sunucu satın almaktan çok daha ucuz ...
colemanm

1
İlginç! Bunu eski XP-Home-Box'ımda hiç denemedim. Gerçekten işe yarıyor mu? Soruyorum çünkü Geofabrik veya Cloudmade'den alıntıları tüm gezegene dönüştürmek için yazılmamış. Gezegen geçersiz XML gibi görünüyor. Bu sorunu nasıl çözdünüz?

@ Carsten Yanıtınızı bir yorum formuna geçirirken, bir yorumu yanlışlıkla @jvangeld tarafından sildim. İşte burada: Merhaba Carsten, GIS.se'ye hoş geldiniz. Geliştiricilerin, programlarına insanlara yardım etmek için buraya gelmeleri harika. Ancak buradaki cevabınız muhtemelen @ winwaed'in gönderisine yorum yapmaktan daha iyi olurdu. Yine burada olman harika!
whuber

Yanıtlar:



4

Bellek kısıtlamaları nedeniyle, planet.osm'un rota verilerini yüklemek için osm2pgsql kullanmaya çalışmadım. Bunun yerine osm2po kullandım:

http://osm2po.de/

Belgelerin çoğu Almancadır ancak biraz deneyimle çalışmasını sağladım. Özel bir Core 2 Quad'de birkaç gün sürüyor (ancak yalnızca bir iş parçacığı kullanıyor).



2

Sorununuz için önceden oluşturulmuş eski paketi kullanmaktan başka bir çözüm aldınız mı? EC2 örneğinde de benzer bir sorun var gibi görünüyor. Http://download.bbbike.org/osm/ adresinden pbf planet kullanıyorum

time ./osm2pgsql -S default.style --slim -d gis -C 7000 --hstore /mnt/planet/planet-latest.osm.pbf
osm2pgsql SVN version 0.70.5
...(creating db tables)
Reading in file: /mnt/planet/planet-latest.osm.pbf
Processing: Node(741920k) Way(0k) Relation(0)Killed

real    276m47.695s

Güncelleme: görünüşe göre çözüm buldum - sorulan hafızayı 6 GB'a düşürdükten sonra (parametre-C 6000) işlem çalışıyor (en azından birkaç gündür çalıştı, bugün bitecek umarım).

Görünüşe göre 7.5GB belleğe sahip m1.large örneği, tüm düğümleri belleğe sığdırmayacak kadar azdır (bugünlerde yaklaşık 11GB gerekir). Osm2pgsql gerekli belleğe ekstra 700 MB'ın altında bir değer gerektiriyor, bu nedenle -C 7000 ile yalnızca bellek azalıyor, ancak -C 6000 (veya muhtemelen -C 6500) ile çalışıyor.

Ayrıca en az 15GB RAM ile daha yüksek bellek örneği kullanmanızı öneririm, daha hızlı ithalat yapması gerekir. Hatta iki katına mal olacak çift ekstra büyük bellek örneği, ancak ince olmayan modda <5 saat içinde (ince moddan 3-4 kat daha hızlı) tam gezegen ithalatı yapabilmelidir. Yani aslında daha ucuz olurdu.


1

EC2 üzerinde çalışmak için daha az cpu ve daha fazla RAM kullanarak osm2pgsql kullandım. Örneği, 17 g / d ram ile ekstra büyük bir yüksek-belleğe yükseltene kadar bellek problemleri nedeniyle başarısız oldu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.