Optimización de las importaciones de osm2pgsql para datos OSM

27

Actualmente estoy construyendo una instancia en EC2 en la que importar toda la instantánea de Planet.osm de toda la información de la Tierra para algunos proyectos en los que estamos trabajando. He creado una gran instancia de Ubuntu x64 y he conectado un montón de almacenamiento por separado en un volumen EBS para la base de datos de Postgres y lo modifiqué para alojar allí los datos de PGSQL.

Ahora el servidor está teniendo problemas osm2pgsqlpara importar la instantánea ... Después de un par de intentos con diferentes configuraciones de memoria y demás, el proceso sigue mostrando "Killed" después de completar la mayor parte del proceso; una vez que fue asesinado mientras "repasaba las formas pendientes" y la próxima vez, después de ajustar ligeramente el caché delgado, alcanzó "formas de procesamiento" antes de estrellarse. Por lo que he leído, esto generalmente se debe a problemas de memoria.

Aquí está mi último intento de ejecutar la importación:

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

Y aquí están las especificaciones para una instancia grande en EC2:

Instancia grande 7.5 GB de memoria, 4 Unidades de Computación EC2 (2 núcleos virtuales con 2 Unidades de Computación EC2 cada una), 850 GB de almacenamiento de instancia local, plataforma de 64 bits

Mi pregunta es: ¿hay algunos buenos recursos de referencia para determinar los requisitos de ajuste para osm2pgsql y Postgres? La velocidad de importación ni siquiera es tan importante para mí, solo me gustaría poder asegurarme de que el proceso se complete de manera segura, incluso si toma 4 o 5 días ... He leído a través de Frederick Ramm " Optimizando la representación documento en cadena "(PDF) del SOTM del año pasado, pero ¿hay otras buenas opiniones / recursos?

colemanm
fuente
¿No sería muy costoso hacer eso en EC2?
Pablo
No es barato mantenerlo en funcionamiento, pero el plan provisional es girarlo, generar un conjunto de mosaicos, luego apagarlo y usar ese conjunto durante un tiempo hasta que necesitemos aplicar actualizaciones. Todavía es mucho más barato que comprar un servidor masivo ...
colemanm
1
¡Interesante! Nunca he probado esto en mi viejo XP-Home-Box. ¿Realmente funciona? Lo pregunto porque fue escrito para convertir extractos de Geofabrik o Cloudmade no para todo el planeta. El planeta parece ser XML inválido. Cómo resolviste este problema?
@Carsten Al migrar su respuesta a un formulario de comentarios, borré inadvertidamente un comentario de @jvangeld. Aquí está: Hola Carsten, bienvenido a GIS.se. Es increíble cuando los desarrolladores vienen aquí para ayudar a las personas con sus programas. Pero su respuesta aquí probablemente hubiera sido mejor como un comentario a la publicación de @ winwaed. De nuevo, ¡es genial tenerte aquí!
whuber

Respuestas:

4

Debido a las restricciones de memoria, ni siquiera intenté usar osm2pgsql para cargar los datos de enrutamiento de planet.osm. En cambio, usé osm2po:

http://osm2po.de/

La mayor parte de la documentación está en alemán, pero con un poco de experimentación logré que funcione. Lleva unos días en un Core 2 Quad dedicado (pero solo usa un hilo).

winwaed
fuente
2

Encontré lo siguiente mientras buscaba algo más http://aws.amazon.com/datasets/2844 : no estoy seguro de si te ayudará o no, pero podría ser un punto de partida.

Ian Turton
fuente
Eso podría sin duda el trabajo por ahora, aunque es a partir de 2009 ...
colemanm
2

¿Recibió una solución para su problema, que no sea el uso del paquete pregenerado anterior? Parece que tengo un problema muy similar en la instancia EC2. Estoy usando pbf planet de http://download.bbbike.org/osm/

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

Actualización: parece que encontré la solución: después de reducir la memoria solicitada a 6 GB (parámetro -C 6000), el proceso funciona (al menos ha funcionado durante varios días, terminaré hoy, espero).

Parece que la instancia m1.large con 7,5 GB de memoria es un poco demasiado pequeña para todos los nodos en la memoria (que debería requerir unos 11 GB en la actualidad). El osm2pgsql parece requerir menos de 700 MB adicionales para la memoria requerida, por lo que con -C 7000 se está quedando sin memoria, pero con -C 6000 (o posiblemente también -C 6500) funciona.

También sugeriría usar una instancia de memoria más alta con al menos 15 GB de RAM, debería hacer que la importación sea mucho más rápida. O incluso duplicar la instancia de memoria extra grande que costaría el doble, pero debería poder importar todo el planeta en modo no delgado dentro de <5 horas (aproximadamente 3-4 veces más rápido que el modo delgado). Por lo tanto, en realidad sería más barato.

JaakL
fuente
1

Obtuve osm2pgsql para trabajar en EC2 usando menos CPU y más RAM. Falló debido a problemas de memoria hasta que aumenté la instancia a una memoria extra grande con 17 gigas de ram.

datdo
fuente