Atualmente, estou criando uma instância no EC2 na qual importar todo o instantâneo Planet.osm de todo o valor de dados da Terra para alguns projetos em que estamos trabalhando. Criei uma instância grande do Ubuntu x64 e anexei bastante armazenamento separado em um volume EBS para o banco de dados Postgres e modifiquei-o para abrigar os dados PGSQL lá.
Agora, o servidor está tendo problemas osm2pgsql
para importar o instantâneo ... Após algumas tentativas com diferentes configurações de memória e outros enfeites, o processo continua emitindo "Killed" depois de passar a maior parte do caminho; depois que foi morto enquanto "passava por caminhos pendentes" e na próxima vez, após ajustar levemente o cache fino, alcançou "caminhos de processamento" antes de travar. Pelo que li, isso geralmente ocorre devido a problemas de memória.
Aqui está minha última tentativa de executar a importação:
osm2pgsql -v -U osm -s -C 4096 -S default.style -d osm /data/osm/planet-latest.osm.bz2
E aqui estão as especificações para uma instância Large no EC2:
Instância grande 7,5 GB de memória, 4 unidades de computação EC2 (2 núcleos virtuais com 2 unidades de computação EC2 cada), 850 GB de armazenamento de instância local, plataforma de 64 bits
Minha pergunta é - existem alguns bons recursos de benchmark para determinar os requisitos de ajuste para osm2pgsql e Postgres? A velocidade da importação não é tão importante para mim, eu gostaria de garantir que o processo seja concluído com segurança, mesmo que demore 4 ou 5 dias ... Eu li " Otimizando a renderização " de Frederick Ramm documento em cadeia "(PDF) do SOTM do ano passado, mas existem outras boas opiniões / recursos?
fonte
Respostas:
Como a documentação diz, você pode precisar de mais de 256 GB de RAM para fazer isso.
Não sei muito sobre o EC2, mas você pode experimentar o modo slim (--slim) ou osmose .
Há um post interessante: http://weait.com/content/build-your-own-openstreetmap-server Ele diz: 'você deve usar o modo slim'.
fonte
Devido às restrições de memória, nem tentei usar o osm2pgsql para carregar os dados de roteamento do planet.osm. Em vez disso, usei o osm2po:
http://osm2po.de/
A maior parte da documentação está em alemão, mas com um pouco de experimentação, consegui fazê-la funcionar. Demora alguns dias em um Core 2 Quad dedicado (mas ele está usando apenas um thread).
fonte
Me deparei com o seguinte, procurando por outra coisa http://aws.amazon.com/datasets/2844 - Não tenho certeza se isso irá ajudá-lo ou não, mas pode ser um ponto de partida.
fonte
Você conseguiu uma solução para o seu problema, além de usar o pacote pré-gerado antigo? Parece que tenho um problema muito semelhante na instância do EC2. Estou usando o pbf planet em http://download.bbbike.org/osm/
Atualização: parece que encontrei solução - depois de reduzir a memória solicitada para 6 GB (parâmetro -C 6000), o processo funciona (pelo menos já funciona há vários dias, terminará hoje, espero).
Parece que a instância m1.large com 7,5 GB de memória é um pouco pequena para caber todos os nós na memória (o que deve exigir cerca de 11 GB atualmente). O osm2pgsql parece exigir menos de 700 MB a mais de memória necessária, portanto, com o -C 7000, ele está com pouca memória, mas com o -C 6000 (ou possivelmente também -C 6500) funciona.
Além disso, eu sugiro usar uma instância de memória superior com pelo menos 15 GB de RAM, isso deve tornar a importação muito mais rápida. Ou até o dobro da instância de memória extra grande, que custaria o dobro, mas deve poder importar o planeta inteiro no modo não fino dentro de <5 horas (cerca de 3-4 vezes mais rápido que o modo fino). Portanto, seria realmente mais barato.
fonte
Eu tenho o osm2pgsql para trabalhar no EC2 usando menos CPU e mais RAM. Ele falhou devido a problemas de memória até eu elevar a instância para uma memória extra grande com 17 GB de RAM.
fonte