27 votos

Optimización de las importaciones de osm2pgsql para los datos de OSM

Actualmente estoy construyendo una instancia en EC2 en la que importar toda la instantánea Planet.osm de los datos de toda la Tierra para algunos proyectos en los que estamos trabajando. He puesto en marcha una instancia grande de Ubuntu x64 y he adjuntado un montón de almacenamiento separado en un volumen EBS para la base de datos Postgres y lo he modificado para alojar los datos PGSQL allí.

Ahora el servidor tiene problemas para usar osm2pgsql para 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 llegar a la mayor parte del camino; una vez se mató mientras "iba por caminos pendientes" y la siguiente vez, después de ajustar ligeramente la caché delgada, llegó a "procesar caminos" antes de estrellarse. Por lo que he leído, esto se debe generalmente 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 EC2 Compute Units (2 núcleos virtuales con 2 EC2 Compute Units cada uno), 850 GB de almacenamiento local de la instancia, 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í, sólo me gustaría ser capaz de asegurarse de que el proceso se completa con seguridad, incluso si se tarda 4 o 5 días ... He leído el libro de Frederick Ramm " Optimización de la cadena de renderizado "(PDF) del SOTM del año pasado, pero ¿hay otras buenas opiniones o recursos?

8voto

Pablo Puntos 6414

Como el documentación dicen que puedes necesitar más de 256gb de ram para hacerlo.

No sé mucho sobre EC2, pero puedes probar el modo slim (--slim) o intentar Ósmosis .

Hay un puesto interesante: http://weait.com/content/build-your-own-openstreetmap-server Dice: "debes usar el modo slim".

4voto

bbaja42 Puntos 812

Debido a las limitaciones de memoria, ni siquiera intenté utilizar osm2pgsql para cargar los datos de enrutamiento de planet.osm. En su lugar he utilizado osm2po:

http://osm2po.de/

La mayor parte de la documentación está en alemán, pero con un poco de experimentación conseguí que funcionara. Tarda unos días en un Core 2 Quad dedicado (pero sólo utiliza un hilo).

2voto

Adam Ernst Puntos 6939

He encontrado lo siguiente mientras buscaba otra cosa http://aws.amazon.com/datasets/2844 - No estoy seguro de si te ayudará o no, pero puede ser un punto de partida.

2voto

JaakL Puntos 786

¿Consiguió una solución para su problema, aparte de utilizar el antiguo paquete pregenerado? 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 he encontrado la solución - después de reducir la memoria pedida 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,5GB de memoria es un poco escasa para que quepan todos los nodos en la memoria (que hoy en día debería requerir unos 11GB). El osm2pgsql parece requerir por debajo de 700MB adicionales a la memoria requerida, así que con -C 7000 se queda corto de 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 15GB de RAM, debería hacer la importación mucho más rápida. O incluso una instancia de memoria extra grande que costaría el doble, pero debería ser capaz de hacer una importación completa del planeta en modo no delgado en <5 horas (unas 3-4 veces más rápido que en modo delgado). Así que sería realmente más barato.

1voto

Adam Tuttle Puntos 146

He conseguido que osm2pgsql funcione en EC2 usando menos cpu y más RAM. Falló por problemas de memoria hasta que subí la instancia a una extra grande de alta memoria con 17 gigas de ram.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X