Categoría: Grid Computing

Oficina de Computación en Grid utilizando ambientes virtuais - Parte 4

Por , venres 04 de decembro de 2009 11:59

Introdución

Eu traballo nunha empresa na que corremos moitos traballos en lote de procesamento de millóns de rexistros de datos cada día, e eu pensei recentemente sobre todas as máquinas que se sentan arredor de cada e cada día sen facer nada por varias horas. Non sería bo se puidésemos utilizar esas máquinas para reforzar o poder de procesamento dos nosos sistemas? Neste conxunto de artigos que eu vou mirar para os potenciais beneficios da contratación dunha oficina da rede usando ambientes virtualizado.

Na parte 3 , creamos a nosa máquina de procesamento virtual e configurar o Windows para facer máquinas de tempo ocioso dos traballadores.

Executando o código máis recente

Inevitablemente despois de crear a súa lóxica de negocio traballadores vai cambiar, erros serán atopados, código máis rápido máis eficiente será producido deixando así os seus traballadores se sentaron ao redor de procesamento de datos mediante código smelly idade . Como entón garantir que estamos sempre empregando a versión máis recente e máis grande do noso procesamento de scripts?

Existen algunhas formas simples moi fácil poderiamos facelo, o truco, con todo, é reducir o poder de procesamento e tráfico de rede para acadar isto. Imos comezar a máis simple das solucións e mellora-lo lentamente ao longo dun par de iterações.

O primeiro método sería simplemente conectar co noso servidor de control de traballo (vía samba, FTP ou similar) e tire abaixo a última versión de código. Non moi eficiente, pero vai facer o traballo. Permite mellorar iso un pouco, como sobre a creación dun script e usando rsync, que cada vez en vez? Alternativamente, que tal colocar o noso guión máis recente transformación en subversión analizar o código inicialmente e despois só actualizar o noso código en cada execución ( svn update )?

Ao final, pode acabar con un script bash (chamado polo cron cada 10 minutos), que parece tan sinxelo coma isto:

  #! / Bin / sh
 se ps ax | grep-v grep | grep php > / dev / null
 entón
     echo "Job está a procesar, de saída"
 outro
     echo "O traballo non está en execución, comezar agora"
     cd / camiño / a / de traballo / copia
     svn update
     php yourJobProcessingScript.php
 fi 

Agora podemos estar seguro de que cada rolda estamos sempre en execución o código máis recente. Estamos a garantir que a actualizar a nosa base de código cada vez que facemos unha carreira e reducindo o tráfico da rede, transferindo só as diferenzas de arquivos a través da nosa rede.

Na miña configuración de demostración, eu fixen exactamente como descrito anteriormente. Subversion foi instalado no meu servidor o procesamento do traballo e eu simplemente tirou o último código dun "traballador" filial usando 'svn update ". Eu tamén engade unha etiqueta número de versión para o meu guión de procesamento que foi devolto á base de datos como parte do retorno de resultados. Desta forma puiden ver que o meu código estaba sendo actualizado cada vez que eu por favor copie o meu tronco para o sector de traballo ou sexa, que eu estaba definitivamente executar o script de procesamento máis recente.

Empregando os datos máis recentes

Se o seu procesamento de traballo fai uso de fontes de datos, a continuación, nalgún momento estes van ser actualizados. A menos que vostedes chaman de ningunha fonte de datos en unha base moi pouco frecuente que está indo a inundar a rede con tráfico, logo que comezar a funcionar os seus traballadores traendo todo a unha paralización. Para a miña solución decidín que me gustaría mover as miñas fontes de datos en todo cos meus VMS.

Manteña está cabalos alí! E se as miñas fontes de datos son enormes? Ben este é realmente un caso de a cantidade de datos que estamos a falar? Pode ser máis rendible para instalar unha maior disco duro adicional en cada máquina que mercar un servidor de procesamento adicional. Esta é unha cuestión de orzamento e é ata a empresa para decidir. Poida que sexa que as súas fontes de datos son tan grandes que é só inviábel para manter esa cantidade de datos en máquinas de seu funcionario. Nese caso o que faría? Ben que poderiamos ollar para chamar a un servidor de datos local, pero isto pode causar problemas coa rede. Neste caso, un sistema de rede como esta pode chegar a ser irrealista para incluír no seu ambiente de escritorio. Pode ser tamén que podes ollar para estratexias alternativas de execución, por exemplo, só chamar seus traballadores 20:00-06:00 cada noite e / ou optimización de solicitudes de datos de orixe.

Seguindo adiante, imos dicir os nosos datos cantidade de fontes de 100Gb de datos. Ben, si que é un pouco de datos para desprazarse na rede nunha actualización. Como seguro que temos a copia máis recente dos datos neste caso? Rsync é unha posibilidade, pero persoalmente creo que, executando a súa fonte de datos máis recentes sobre o seu servidor de procesamento de emprego e como facer esa configuración como un mestre na replicación (cun ​​rexistro bin longa e agradable) pode ser o camiño a seguir:

replicación Definindo cada un dos seus traballadores como un escravo para o traballo actualizacións control de servidor para as súas fontes de datos vai pingar para abaixo moi ben para os seus traballadores, sen un gran aumento na actividade da rede (que é a menos que realizar unha actualización de datos enorme e os seus traballadores chutar á vez). Isto ten vantaxes sobre o rsync en que non tería unha longa pausa antes de cada traballo, como as actualizacións da base de datos, o mysql servizo no seu traballo continuamente actualizar os seus datos ata completar continúa.

Isto é como eu configurar meu servidor de demostración. Para configurar a replicación seguín a guía na páxina web de MySQL ( Configurar replicación ) e dentro de 20 minutos eu tiña o meu traballo inital replicar o traballo conxunto de datos control de servidores. Por cada traballador adicional a configuración de replicación e proceso funciona cada momento en que o VM foi copiado.

Resumo

Nesta sección do artigo vimos como é doado e indolora, é para manter o seu código de procesamento ata a data por using rsync ou subverion (SVN) para facer o traballo e reducir o tráfico de rede na mesma time. Tamén discutir como para manter a súa información de fonte de datos up-to-date, permítelle escorrem para cada un dos seus traballadores. Así, área que garanta a manter-se coa lóxica de negocio e información no noso sistema de rede de oficina. Evidentemente haberá moitas alternativas para a execución destas tarefas, pero aquí foron dous exemplos sinxelos para amosar como é doado unha solución está por vir.

Próxima vez

Na parte final desta serie, apropiadamente chamado Parte 5 , imos discutir a implantación deste sistema para. Vou resumir o que foi aprendido e que eu puiden crear.

Oficina de Computación en Grid utilizando ambientes virtuais - Parte 1

Por , venres 04 de decembro de 2009 11:23

Introdución

Eu traballo nunha empresa na que corremos moitos traballos en lote de procesamento de millóns de rexistros de datos cada día, e eu pensei recentemente sobre todas as máquinas que se sentan arredor de cada e cada día sen facer nada por varias horas. Non sería bo se puidésemos utilizar esas máquinas para reforzar o poder de procesamento dos nosos sistemas? Neste conxunto de artigos que eu vou mirar para os potenciais beneficios da contratación dunha oficina da rede usando ambientes virtualizado.

Como PHP creador vou usar as ferramentas que eu uso todos os días, é dicir, Linux, MySQL , PHP, VirtualBox e Subversion (SVN). Con todo espero que esta guía pode adaptarse a outras linguaxes e tecnoloxías tan ben.

A solución que proporcionar será moi vagamente baseado no tipo de procesamento que sería necesario para alcanzar, pode non ser verdade a través de todo o artigo como eu vou cambiar as cousas para a simplicidade, ou para producir escenarios de uso máis interesante.

Estes ambientes virtualizar serán executados en máquinas Windows pois iso é o que a maioría das oficinas executado. O procesamento que as máquinas de oficina non debe interferir co persoal utilizando esas máquinas, deben non precisan mantemento na máquina, e ser facilmente salientables para novas máquinas así que está dispoñible. Ademais, novas máquinas virtuais non debe ser necesaria ningunha configuración adicional, xa que reduce a escalabilidade e facilidade con que o sistema de rede pode ser prorrogado.

Por que implantar un Grid Computing Office?

En primeiro lugar pode estar pensando, por que non usar un recurso de computación en nube, como plataforma de Amazon EC2 ? Ben, as razóns poden ser varias, por exemplo:

  • Non vai confiar certos datos para un ambiente de computación en nube
  • Non podes publicar certos datos en un ambiente de computación en nube, por motivos legais (por exemplo, datos que saen do país), potencialmente por razóns legais, por exemplo, rexistros NHS.
  • Vostede quere manter as súas unidades de procesamento de preto e ten control total sobre o hardware tamén
  • Non ten os fondos do proxecto de executar instancias nube
  • O seu oficina non ten unha conexión a internet e, polo tanto, que non é posible utilizar un recurso nube
  • Non gusta de choiva, nubes de choiva suxiren, polo tanto, a manter ben lonxe

Estou seguro que a lista podería seguir, pero eu creo que é suficiente polo de agora.

Vantaxes dun Grid Computing Oficina

Ben, imos facer algunha matemáticas (e ao grande verdadeira física permite facer algunhas suposicións varrer). Imaxina que tes un servidor de procesamento de corpulento execución de 100 empregos ao día. Na súa oficina ten 50 máquinas que están ociosas 16 horas ao día, cada unha destas máquinas é de 10% tan potente como o seu Sever procesamento robusto. (Todos os resultados aquí son redondeados a subestimar aumentar o rendemento).

Así, unha potencia da máquina * 10% * O tempo de 2 / 3 = 0,067 é dicir, procesamento de escritorio 1 no tempo ocioso podería procesar 6 prazas de emprego total ao día.

Se agora escala isto leva 15 escritorios ocioso para procesar traballos como moitos por día como o seu servidor de procesamento principal fai.

Así, no noso despacho finxir de 50 máquinas que poderían incrementar o noso poder de procesamento a partir do 1 servidor ata 4 servidores de procesamento completo, ou poderiamos estar procesar 400 empregos ao día en lugar de 100.

Aviso previo, sen investimento en novos hardwares súa empresa acaba de ampliar a súa capacidade de procesamento en lote 4 veces! Potencialmente vai aumentar o seu consumo de enerxía, pero de ambientes máis oficina eu fun para as máquinas xeralmente son deixados pola noite mesmo, entón podería ver isto como unha iniciativa verde.

Outras vantaxes tamén significa que o investimento en novos (ou actualizado) servidores de procesamento pode ser adiada se as máquinas da súa oficina son suficientes e que, como mellorar o poder das súas máquinas de oficina súa reixa de oficina faise máis poderosa automaticamente.

Tecnoloxías

O que precisa? (Ou máis correctamente o que eu uso):

  • Ociosos de máquinas de oficina (no meu caso un de reposto antigo Windows XP portátil)
  • VirtualBox (ou demais software de virtualización de cliente)
  • A máquina virtual con PHP, MySQL running executando unha cortada OS, eu estou chamando eses servidores o meu limpo:)
  • Traballos para seren executados
  • Servidor do traballo (pode ser unha outra máquina virtual nalgún lugar)

Traballos típicos

Os tipos de traballos que este sistema está deseñado para funcionar é a seguinte:

  • Sistema recibe unha lista de datos sobre a que necesitamos para corresponden e devolver resultados
  • Correspondencia implica comprobar / buscar diversas (bastante estático) fontes de datos
  • Resultados a partir de fontes de datos pode esixir unha validación adicional, fusión, comprobación de fontes de datos adicionais en resposta aos resultados
  • Datos obtidos con rexistros correspondentes, totalmente validados e procesados
  • Cada rexistro nun traballo é independente do resto

Entón, basicamente nós estamos mirando para realizar traballos que requiren unha mestura de investigación da base de datos e algunhas procesamento de números, un escenario moi común en un ambiente de negocios.

Solucións de redes non só son vantaxosos para procesar os traballos deste tipo. Basicamente, calquera proceso que pode ser dividida en unidades independentes poden ser executados en paralelo. Vexa esta wikipedia exemplos e máis información: Grid Computing , pero un par de exemplos famosos son Seti @ Home e BIONC . Existen frameworks para a execución de redes de computación, e estes valen a pena ollar.

O que imos conseguir?

Ao final deses artigos espero mostrar que a implantación dunha rede de oficina non é preciso estar consumindo moi caros ou de tempo. Estou indo a discutir:

  • Configurar o sistema de control de traballo de configuración do traballo,
  • Creación dunha máquina de procesamento virtual apropiado
  • Como configurar o sistema nunha máquina Windows
  • Asegurar que está a usar o último código e datos
  • Replanteo e avaliación comparativa
  • Mirando cara o futuro

Eu estarei de construción (ok eu constrúe, entón escribín iso) un exemplo de aplicación para probar os conceptos nunha máquina local a usar o windows XP e miña máquina GridMachine 'virtual. O meu servidor de control de traballo será a miña máquina principal que corre Fedora 11 .

Este non é de forma significaba para demostrar un sistema totalmente funcional robusto, o seu significado máis dunha demostración e discusión mostrando que estas cousas poden ser alcanzadas nun espazo bastante curto de tempo ea baixo custo. Síntase libre de me enviar os comentarios, correccións ou melloras e vou facer o meu mellor para manter este artigo actualizado para corresponden.

Próxima vez

Na parte 2 vou comezar por ollar para o sistema de control de traballo, e mirar para que os traballos deben ser configurados para acadar a maior cantidade de procesamento, garantindo que cada traballo é procesado sen fallar.

Oficina de Computación en Grid utilizando ambientes virtuais - Parte 2

Por , venres 04 de decembro de 2009 11:23

Introdución

Eu traballo nunha empresa na que corremos moitos traballos en lote de procesamento de millóns de rexistros de datos cada día, e eu pensei recentemente sobre todas as máquinas que se sentan arredor de cada e cada día sen facer nada por varias horas. Non sería bo se puidésemos utilizar esas máquinas para reforzar o poder de procesamento dos nosos sistemas? Neste conxunto de artigos que eu vou mirar para os potenciais beneficios da contratación dunha oficina da rede usando ambientes virtualizado.

Na parte 1 eu dei unha visión xeral do sistema e tecnoloxías eu estarei usando, así como discutidos algúns dos posibles motivos polos que desexa crear unha rede de oficina.

Job control

Se indo para ser executado emprego, entón vai ter algunha maneira de xestionar a eles. O seu sistema de control do traballo (no seu servidor de emprego) ten que ser moi ben pensada antes de intentar realizar unha rede de oficina. Entón, en primeiro lugar, cales son as tarefas dun sistema de control de traballo:

  • Man emprego fóra a petición dos traballadores
  • Dicir aos traballadores que tipo de postos de traballo para realizar
  • Traballos franxa
  • Garantir que as tarefas só son executadas xa
  • Proporcionar datos de emprego aos traballadores, ou, polo menos, dicirlles onde obtelo

O sistema tamén debe ser extensible, unha solución que funciona de momento nun único caso pode ser prorrogado para realizar varios tipos de traballos como a empresa ve o valor nunha solución de grid. Por exemplo, os traballos poden gañar prioridades, máis dun tipo de traballo pode existir (ou sexa, bases de código varias), eventualmente pode incluso realizar varias máquinas de traballo diferentes que son optimizados para cada tipo de traballo (aínda que iso afastarse do traballador xenérico 'idea). Sempre tento pensar no futuro no desenvolvemento de sistemas, unha visión a curto prazo pode levar á frustración de longo prazo e tempo de desenvolvemento aumentou.

Servidor de traballo

Nós imos ter un lugar para controlar o noso traballo de, este debe ser o único sistema na súa rede que ten un fixo Resource locator, será que un enderezo IP, nome de host, URL (usando DNS interno), etc Isto é porque os traballadores teñen que saber onde buscar emprego, os traballadores teñen que atopar o sistema de control de traballo (non o sistema de control de traballo atopar os traballadores).

O servidor de traballo en si non ten realmente unha tarefa complicada (nun sistema básico de calquera forma), el que almacenar unha lista de postos de traballo, distribuír emprego, recibir os resultados, e, posteriormente, almacena-los para a súa posterior recuperación. Como esas pezas (como "man de emprego") son definidos pode ser moi básico. Máis tarde, podemos estender o sistema para incluír unha interface de administración para engadir, editar, borrar, suspender os traballos, pero iso está máis aló deste exercicio.

Non hai ningunha razón que sexa, entón, que o teu servidor de traballo non podería ser unha máquina virtual rodando dentro do seu servidor de procesamento principal, sempre que non drena moitos recursos a partir del. O servidor de traballo con todo non precisan de alta dispoñibilidade, se vai para abaixo nunha noite de venres vai perder un fin de semana enteiro de procesamento, potencialmente custando-lle un par de semanas de tempo de procesamento (cando se compara ao seu servidor de procesamento principal só) . Pode querer poñer o seu servidor de traballo nun ambiente de balanceo de carga para alta dispoñibilidade.

Configuración básica

A configuración básica para o noso servidor de traballo estará composto do que eu estou chamando un dos meus servidores limpo (é dicir Li nux, m ySql, P HP). O código en execución no Thea traballadores van realmente descubrir o que emprego pode ser executado a través da interacción con bases de datos co traballo do sistema de control. Máis tarde, poderiamos crear un servizo web e realmente entregar os traballos en vez de ter os traballadores fan o traballo duro en si, pero por agora imos continuar a utilizar o principio KISS (Keep it simple, Stupid!).

Entón, imos crear tres MySQL táboas para xestionar postos de traballo. Estes serán postos de traballo ``, `jobRecords` e `jobResults`.

emprego táboa Aquí está a usar SQL camarada unha boa alternativa pouco para phpMyAdmin só porque é máis fácil de instalar no CentOS (para os outros o ven: 10 excelente alternativas para phpMyAdmin )

Esta táboa está composta de 5 campos simple,

  • ID: Identificar o traballo
  • Nome: podería ser unha referencia do cliente, ou calquera número de outros identificadores
  • Estado: Debe saber onde o traballo está, por exemplo,
    • 0: Non iniciado
    • 1: Peguei
    • 2: Completed
  • started_by: Quen comezou a facer o traballo? Isto non é totalmente necesario, pero é bo ter un. Eu suxiro que os traballadores de seguimento polo seu enderezo IP na súa rede
  • started_at: Cando é que o traballador iniciar o traballo? Acompañando os traballos que non teñan completado dentro X cantidade de tempo que sabemos que necesitamos para incorporarse o traballo, unha vez máis e comezar a analizar por outro traballador. Os traballadores poderían deter o procesamento / go off-line para calquera número de razóns, falta de enerxía, accidente, perda de rede, etc

É doado como esta táboa podería ser estendido con algúns campos adicionais para permitir o seguimento de estatísticas, unha columna de tempo de finalización para ver canto tempo levou o traballo, un contador para ver cantos traballadores colleu o traballo (obviamente iso necesita tenden a 1), a prioridade dos traballos, a lista pode ir sobre e sobre. En escenarios de traballo máis complexo que sería posible especificar a cantidade de memoria o traballador precisaría de acceso (e, polo tanto, utilizar só os traballadores máis axeitados), ou mesmo o tipo de traballador sería necesario.

Permite engadir un exemplo algúns traballos:

emprego exemplo

A táboa a seguir de novo é moi sinxelo de entender, estes son os rexistros o noso traballo. Eles están conectados á mesa de traballo principais por unha columna `jobs_id`. A composición desta táboa depende moito dos datos que precisa ofrecer aos seus traballadores, imos facer un exemplo moi sinxelo, onde temos catro columnas:

  • id: identificación do rexistro
  • name: o nome da persoa
  • Dirección: Enderezo da Persoa
  • jobs_id: A ID de traballo que este rexistro está ligada á

A táboa a terceira e última consiste nunha táboa de resultados, ten o mesmo compoñen a nosa táboa de rexistros, e coa adición de algunhas columnas podería ser parte da táboa de rexistros:

  • job_record_id: Link resultado para a mesa de traballo
  • Resultado: Os datos do resultado

... E iso é todo o que necesitas para control de traballo! (Aínda que a un nivel moi básico) No meu caso estou apuntou a outra táboa onde os meus datos para procesar foi localizado, pero isto pode só como facilmente foi un ficheiro, os parámetros para executar código de simulación, o seu nome.

Seleccionando un emprego

Como dito anteriormente, os traballadores van facer o noso traballo de xestión para nós agora, para todo o que necesitamos realmente facer é atopar un traballo que precisa de tratamento e obter a información. Como poderiamos facelo? Ben escoller os nosos criterios de selección de emprego e buscar emprego, en SQL eu fixen o seguinte:

  1. Tome todos os traballos que non están marcados como completa, pero do noso traballador e redefinir elas (substituto __ME__ cun identificador máis doado, sería a dirección IP):
      UPDATE `empregos` SET `estado` = 0 WHERE `estado` = 1 AND `` = started_by __ME__; 
  2. Usando o noso criterio de selección de emprego, seleccione un traballo e dicir ao sistema de control que este traballador está a tratar con el:
      UPDATE `empregos` SET `estado` = 1, `` = started_by __ME__, `started_at` = NOW () WHERE `estado` = 0 OR
     (`Estado` = 1 AND `started_at`> DATE_SUB (NOW (), intervalo Hour X)) ORDER BY `id` ASC; 

    Pegando traballos que non presentaron resultados en X cantidade de tempo que asegurar que todos os traballos son executados en caso de un traballador deixar de funcionar ou se ausentar sen licenza.

  3. A continuación cara os detalles emprego seguido polos rexistros propios:
      SELECT * FROM `WHERE` emprego started_by `= __ME__ LIMITE 1;
     SELECT * FROM `job_records WHERE` id `= __JOBID__; 

Tras a conclusión do traballo que inserir rexistros noso resultado e marcar o traballo como completo. Lembre que os traballos poden suspender / resumir en calquera momento permiten algunha robustez no seu guión. Pode ser que a tarefa a medio suspende a actualización do sistema de control de traballo, así comprobar o número de rexistros en un emprego e o número de resultados salvo ao seu sistema de control de traballo sería unha medida acertada.

Ademais, aínda que iso demostra como os traballos poden ser seleccionados e xestor a partir dun cadro SQL-query ten que ser realmente abstraerse o seu control de traballo, co que se decide pasar a utilizar un servizo web, un sistema baseado en arquivo, XML , ou calquera outro número de sistemas que non afectará o código enriba del.

Configuración do traballo

O seguinte aspecto a considerar é o tamaño do traballo e configuración. Ao xogar coa configuración de traballo que poden atinxir un excelente equilibrio entre a velocidade, a replicación de procesos e fiabilidade. Bótalle un escenarios Deum parella:

  1. Emprego asumen un día cada un para realizar: Isto significa que os seus traballadores necesitan 15 días para procesar cada traballo (lembre-se 10% da enerxía para 2/3rds do tempo). Este non é claramente un sabio configuración, o tamaño do traballo é moi grande! Levaría polo menos o dobre do tempo para conseguir un emprego procesados ​​que o traballador ir AWOL inicial (tempo de incorporarse que non teña retorno un resultado máis o tempo de reprocesando). En un ideal que ten polo menos un traballo completo facilmente apurada ata o final de cada período de tempo ocioso, de que xeito se mantén os postos de traballo máis típico e, o peor caso, un traballo levaría dous días para o primeiro proceso debería van faltar.
  2. Emprego asumen un minuto para executar: Isto significa que os seus traballadores levar uns 15 minutos para realizar cada traballo. Aínda que isto poida inicialmente parecer ideal, gañou de procesamento de traballo adicional durante a hora do xantar, coffee breaks, reunións, etc este escenario pon presión sobre outras áreas do seu sistema e presenta os seus propios problemas. Por exemplo, en primeiro lugar a súa razón de tempo de configuración / procesamento vai ir cara á dereita para abaixo, perdendo así a eficiencia do sistema. A súa rede vai ser constantemente streaming de información do traballo para o equipo de traballadores que son varios frustrante dong seu traballo do día a día. Tamén vai poñer máis presión sobre o seu servidor de procesamento de traballo, pois ten de prato para fóra lotes e lotes de pequenas pezas de traballo nunha base regular. Por fin, nesta situación, se o seu servidor de emprego descende vai crear un rexistro de volta enorme de traballo incompleto mentres traballos maiores podería, continuou alegría inconscientes de procesamento que o servidor estaba pasando por dificultades de traballo.

En realidade non haberá unha configuración ideal para a súa configuración de rede, moi depende dos recursos dispoñibles, tipo de traballo, emprego requisitos prazos de entrega, a capacidade de rede, e así por diante. Con todo algunhas orientacións sería:

  • Traballos en tamaño de xeito que cada traballador pode pasar por polo menos 3-4 emprego nun período de 15 horas (o máis longo período de tempo probábel idle)
  • Xogar co tamaño do traballo para que o tempo de configuración torna-se bastante insignificante comparado co tempo de procesamento (tendo en conta o punto anterior).
  • Se un traballo non é concluído en o dobre do tempo (quizais menos) espera que el completa ela asume que a súa AWOL ir e comezar a proceso-lo con outro traballador. Isto significa que pode ter que esperar ata tres veces a lonxitude normal dun traballo para a conclusión (posiblemente máis, o traballo posterior fallar). Pode querer reducir este tempo, pero teña coidado de non reduci-lo moito como podes comezar a duplicar tarefas de procesamento nunha base regular.
  • Traballos deben ser independentes das necesidades de fóra, na medida do posible. O servidor de emprego, por exemplo, só debe ser contactado no inicio e final de cada traballo.
  • Non saturados súa rede, que vai ter dous efectos negativos, o seu equipo vai atopar durante o día utilizando a rede frustrante e problemas poden ser probados con conexións tempo de espera un problema que só vai empeorar a medida que escala súa reixa.
  • Garantir os empregos poden ser executados nos seus traballadores. Se os traballos se fan moito espazo de memoria traballos intensivos ou intensivos de disco comezará a abortar eo único que notará é unha pinga no número de traballos procesados ​​sen motivo real.

Resultados da presentación dunha Job

Ao presentar os resultados dun traballo é importante comprobar que os resultados non fosen presentados por outro traballador, especialmente se o traballador actual estivo durminte por algún tempo.

Cando os resultados son sometidos garantir que o número de resultados corresponde ao número de rexistros dentro do traballo.

Como dito anteriormente, e non pode ser máis enfatizado, construír tolerancia a fallos en recuperación de traballos e presentación de resultados. Os traballadores poden (e seguramente) entrar no modo de suspensión no máis inconvenientes de veces e iso ten que ser servidos. Ademais, unha vez abstraerse sitios con resultados axudarán atender a futuras modificacións no sistema de control de traballo moito máis fácil de manexar.

Resumo

Neste section vimos o que é un servidor de control de traballo que facer e como obter un sistema bastante básico configurado. Discutir como recuperar un traballo desde o sistema de control ea mellor forma de configurar tarefas para obter o máximo da nosa reixa do seu sistema de escritorio. Para rematar, un parágrafo ou dous sobre como enviar os resultados ao seu servidor de control de traballo era presentado.

  • Un servidor de control de traballo xestiona emprego e asegura que todas as unidades de traballo están concluídas
  • Abstraerse o seu traballo select / resultados submisión podemos cambiar a tecnoloxía do servidor de control sen problemas moi
  • Configura os seus traballos para garantir que se executan con rapidez e eficiencia, sen poñer demasiada presión sobre a infraestructura de rede, e sen duplicar o procesamento de tarefas nunha base regular.
  • Asegúrese de construír tolerancia a fallos e checking erro nas súas rutinas, os traballadores poden suspender e retomar e máis inconvenientes de veces. Lembre-se de comprobar que os resultados xa foron presentados por outro traballador.

Próxima vez

Na parte 3 , imos crear a nosa máquina de procesamento virtual e establecer as nosas máquinas de fiestras para facer ocioso traballadores a tempo.

Oficina de Computación en Grid utilizando ambientes virtuais - Parte 5

Por , venres 04 de decembro de 2009 11:03

Introdución

I work in a company where we run many batch jobs processing millions of records of data each day and I've been thinking recently about all the machines that sit around each and every day doing nothing for several hours. Wouldn't it be good if we could use those machines to bolster the processing power of our systems? In this set of articles I'm going to look at the potential benefits of employing an office grid using virtualised environments.

In Part 4 we looked at using tools to ensure that we're running the latest version of the code and data sources so that obtained results are always up-to-date with the latest business information and logic.

Pre-Deployment

Before deploying your grid system if there's one thing you do and one thing alone it's benchmark your current system ! No matter what you tell colleagues about how much extra work your system is going to do unless you have numbers to back this up your guarantees are nothing. So,

  • how many records can you process currently? Per Day? Per Hour?
  • How long does it typically take to turn around a job?
  • How much more capacity do you have?

There's also additional questions:

  • If your processing server (or one of your processing servers) goes down how will this affect your capabilities, will you be crippled?
  • What advantages do you hope/expect to get from a grid system?
  • Are your office machines capable of running the jobs?
  • Are your (or can you jobs be converted) to wrok in this style of running?

The last major point is to take your time on any major change like this. Update your processing code to work using the new methodology, benchmark again. Possibly set up your processing server to run a virtual machine, after all your processing server will just be another worker (just a very powerful one relatively). Allow the new process to settle.

Deployment

My suggestion would be to pop into the office one weekend perform all the installations and setup. Do this just before a fortnight's holiday and leave so other poor chap to deal with the consequences… maybe not…

Deployment for a system like this needs to be slow. Despite it being relatively simple to set up this system will affect your entire office infrastructure (well the digital one). Firstly, roll out to a couple of machines at a time, monitor network traffic, how the worker hosts perform on a day-to-day basis. You may need to alter your job configuration in response to your findings.

Once the system has settled with a few machines (lets say 10% of all office machines, ie 5) keep monitoring network traffic and host machine performance. Next benchmark again, you should now be processing 33% more jobs than your first benchmarks. Check this is so, or that you're at least in this ballpark. If not, investigate what is going on before moving on. Repeat this cycle until you happily have all office machines running without killing individual machine performance or grinding your network to a standstill.

At all times keep benchmarking, even after all deployments are made. Check how new code updates affect speed of your system, check all workers are reporting in and processing jobs. Slowly (very slowly) increment your job configuration to get the best from your workers and network.

Stop!

E se queres deixar de executar os seus traballadores, en algún momento? Están todos alí fóra, correndo, rexeneración, e intentar o mellor para procesar datos como insectos con fame. A resposta pode parecer obvio, pero paga a pena engadir só no caso da súa esquecido. Só ten que editar o seu guión de procesamento cun exit (0) or die (), ou algunha outra indicación para matar o seu traballo de procesamento. Unha razón importante pola cal sempre tentar actualizar ó arquivo de procesamento máis recente antes de calquera carreira!

Sistema de demostración

Para escribir este conxunto de artigos curtos que eu creei unha reixa moi pequena para demostrar as tecnoloxías e metodoloxías. Lin moitos artigos, tutoriais, e usado diversas ferramentas para configurar e monitorizar o que estaba acontecendo. De maneira ningunha eu teño ido para fóra, e saturada de oficina enteiro co tráfico e nin tiven acceso a un ordenador normal os funcionarios para ver como o rendemento do servidor foi afectada.

O meu sistema de demostración foi moi humilde, en efecto. Eu usei o meu escritorio estándar configurado como un servidor de control de traballo. Sobre iso, eu tiña instalado MySQL servidor instalado configurado como mestre na replicación, PHP , Â e SVN conectados a través apache (para acceso vía traballador VM).

Eu, entón, creou unha máquina CentOS traballador no VirtualBox nun antigo Windows XP portátil seis anos. Eu configure tarefas programadas conforme especificado logo copiar o VM na máquina e deixar ir.

A máquina virtual foi creada con PHP, subversión e MySQL. Eu verifiquei unha rama chamado "traballador" do meu traballo repositorio de servidores de control e fixo que podería ser actualizado usando 'svn update ". Logo eu establece MySQL como un escravo e comprobado que os datos foron replicar a partir do MySQL no servidor de control de traballo ata o VM traballador. Despois de todo isto eu configure o script bash eo traballo cron.

O meu guión de procesamento, basicamente, foi ao longo das liñas deste (cousas moi sinxelo):

  • Ler no campo de nome
  • Contar o número de nomes semellantes nunha táboa da fonte de datos sobre o VM
  • Contar o número de nomes como antes, pero dividindo o nome por espazos (é dicir, nome propio, do medio, apelidos)
  • Repetín o proceso 1000 veces

Cada traballo levou uns 20 minutos para ser executado. Desde un punto eu abrín varias copias do VM traballador no portátil fiestras e asistiron os traballos verificar fóra por cada un dos enderezos IP dos traballadores. At this point I also confirmed that replication automatically restarted.

Leaving the laptop to idle resulted in a worker starting to process jobs from the job control server. When resuming laptop usage there was a delay of about 30-60 seconds, this is a fair amount of time and staff would need to be made aware that their machine may pause for a short while when returning to the machine. Newer machines may not have a pause of this long. The benefit of the amount of processing performed by these machines during idle periods would more that outweigh staff members having to wait a short period (say 1 minute) on arriving at their machines of a morning (I frequently wait longer that this for a Windows Defender update to take place) provided they were made aware of this (useful time to grab a morning coffee!).

Overall I feel confident that I have demonstrated the technologies that could be used to create such a system. I have shown that such a system does work on a (very) small scale and with some more experimenting could be scaled up utilise the resources of an office's machines. If I don't get to the point of doing this I would be very interested to know/see when someone else does.

Conclusions / Evaluation

O seguinte paso evidente sería realmente obter un exemplo do mundo real e comezar a implantar un sistema como este dentro dun ambiente de oficina e ver que pasa. Pedindo un negocio a comprometerse con iso sen unha compañía banda chama para probar a eficacia da tecnoloxía e pode ser un pouco difícil. Rede / computación distribuída é moi popular é nalgúns círculos e ten algunhas grandes aplicacións (BIONC, SETI @ Home, Folding @ Home, etc). Eu non sabía, con todo, atopar unha escala menor e un sistema simple como este nas miñas investigacións que poderían ser lanzados dentro dun ambiente de escritorio.

Eu creei un sistema basicamente libre empregando software de código aberto na maior parte e as ferramentas dispoñibles en case todo o escritorio. As tecnoloxías eran basicamente demostrado e amosar a executar e funcionar como esperaba. Espero ter mostrar que con traballo non moito e cunha configuración moi sinxela que se pode implantar unha oficina do sistema de grid computing, que é poderoso, Â, barato e scalable, todo ao mesmo tempo.

Unha vez que un sistema está instalado e funcionando case non hai fin para a cantidade de personalización e melloras que podes facer. Por exemplo estatísticas / análise comparativa poden ser facilmente engadidos mostrando o valor dun tal sistema todos os días. Novas máquinas poden ser engadidas de forma rápida e facilmente como e cando eles chegan con upgrades de hardware existentes reforzar o seu poder de procesamento.

Espero que disfrutara de ler esta serie de artigos cuxo dato alimento para o pensamento sobre a execución dun sistema de rede de oficina. A solución presentada aquí non vai necesariamente funcionar en todas as situacións, pero debe ser adaptable para permitir que conseguir o seu procesamento de datos feito usando a súa propia solución.

Síntase libre de me enviar os comentarios, correccións ou melloras e vou facer o meu mellor para manter este artigo actualizado para corresponden.













Tema por Panorama Themocracy

17 visitors online now
8 guests, 9 bots, 0 members
Max visitors today: 22 at 05:44 pm UTC
Este mes: 23 en 24-08-2011 05:40 UTC
Este ano: 130 en 28-03-2011 22:40 UTC
Todas as horas: 130 en 28-03-2011 10:40 UTC