Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
O primeiro artigo desta série mostrou como usar o Hadoop em um cluster de nó único. Este artigo continua com uma configuração mais avançada que usa múltiplos nós para o processamento paralelo. Demonstra os vários tipos de nó necessários para os clusters multinós e explora a funcionalidade MapReduce em um ambiente paralelo. Este artigo também aborda os aspectos de gerenciamento do Hadoop ? tanto na linha de comandos quanto baseados na Web.
O verdadeiro poder da arquitetura de computação distribuída Hadoop está na distribuição. Em outras palavras, a capacidade de distribuir o trabalho em vários nós em paralelo permite que o Hadoop escale as grandes infraestruturas e, da mesma forma, permite o processamento de grandes quantidades de dados. Este artigo começa com uma decomposição de uma arquitetura distribuída do Hadoop e, em seguida, explora a configuração distribuída e o uso.
A arquitetura distribuída do Hadoop
Lembre-se de que, na Parte 1 desta série, foi dito que todos os daemons do Hadoop eram executados no mesmo host. Embora não exercesse o paralelismo do Hadoop, essa configuração pseudodistribuída oferecia uma forma fácil de testar os recursos do Hadoop com uma configuração mínima. Agora, vamos explorar o paralelismo do Hadoop usando um cluster de máquinas.
Na Parte 1, a configuração do Hadoop definiu que todos os daemons do Hadoop executam em um único nó. Vamos ver primeiro como o Hadoop é distribuído naturalmente para a operação paralela. Em uma configuração distribuída do Hadoop, você terá um nó principal e alguns nós escravos (veja a Figura 1).
Figura 1. Decomposição em nó principal e nós escravos do Hadoop
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/18336/image001.gif&key=2305b379207cd0593cf0d2f91f42899322b8191530bbc506c6cb6612a96843dc" alt="Imagem Postada" />
Como mostrado na Figura 1, o nó principal é formado pelo namenode, namenode secundário e pelos daemons jobtracker (os chamados daemons principais) Além disso, esse é o nó em que se gerencia o cluster para os fins desta demonstração (usando o utilitário Hadoop e o navegador). Os nós escravos são o tasktracker e o datanode (os daemons escravos).
A diferença dessa configuração é que o nó principal contém os daemons que proporcionam gerenciamento e coordenação do cluster do Hadoop, e o nó escravo contém os daemons que implementam as funções de armazenamento do Hadoop File System (HDFS) e da funcionalidade MapReduce (a função de processamento de dados).
Para esta demonstração, você cria um nó principal e dois nós escravos que ficam em uma única LAN. A Figura 2 mostra essa configuração. Agora, vamos explorar a instalação do Hadoop para a distribuição multinó e sua configuração.
Figura 2. Configuração de cluster do Hadoop
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/18336/image002.gif&key=7fd3a681ee4da3c9881c6cb30eaf748e097d56b3038349a8d1e83d9f00d70163" alt="Imagem Postada" />
Para simplificar a implementação, você emprega a virtualização, que oferece algumas vantagens. Embora o desempenho possa não ser vantajoso nessa configuração, por meio da virtualização, é possível criar uma instalação do Hadoop e em seguida cloná-la para os outros nós. Por esse motivo, o cluster do Hadoop deve aparecer da forma apresentada a seguir, executando os nós principal e escravo como máquinas virtuais (VMs) no contexto de um hypervisor em um único host (veja a Figura 3).
Figura 3. Configuração de cluster do Hadoop em um ambiente virtual
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/18336/image003.gif&key=35716632560f866fb87979ef9aaa22904af912919772da12a24bfe55a84bafa6" alt="Imagem Postada" />
Atualizando o Hadoop
Na Parte 1, você instalou uma distribuição especial para o Hadoop que executava em um único nó (pseudoconfiguração). Neste artigo, você atualiza para uma configuração distribuída. Se você iniciou a série por este artigo, leia a Parte 1 para instalar primeiro a pseudoconfiguração do Hadoop.
Na pseudoconfiguração, você não fez nenhuma configuração, já que tudo foi configurado previamente para um único nó. Agora, é necessário atualizar a configuração. Primeiro, verifique a configuração atual com o comando update-alternatives, como mostrado na Listagem 1. Esse comando informa que a configuração está usando conf.pseudo (a prioridade mais alta).
Listagem 1. Verificando a configuração atual do Hadoop
$ update-alternatives --display hadoop-0.20-conf
hadoop-0.20-conf - status is auto.
link currently points to /etc/hadoop-0.20/conf.pseudo
/etc/hadoop-0.20/conf.empty - priority 10
/etc/hadoop-0.20/conf.pseudo - priority 30
Current `best' version is /etc/hadoop-0.20/conf.pseudo.
$
Em seguida, crie uma nova configuração ao copiar uma configuração já existente (nesse caso, conf.empty, como mostra a Listagem 1):
$ sudo cp -r /etc/hadoop-0.20/conf.empty /etc/hadoop-0.20/conf.dist
$
Por fim, ative e verifique a nova configuração:
Listagem 2. Ativando e verificando a configuração do HadoopPor fim, ative e verifique a nova configuração:
Listagem 2. Ativando e verificando a configuração do Hadoop
$ sudo update-alternatives --install /etc/hadoop-0.20/conf hadoop-0.20-conf \
/etc/hadoop-0.20/conf.dist 40
$ update-alternatives --display hadoop-0.20-conf
hadoop-0.20-conf - status is auto.
link currently points to /etc/hadoop-0.20/conf.dist
/etc/hadoop-0.20/conf.empty - priority 10
/etc/hadoop-0.20/conf.pseudo - priority 30
/etc/hadoop-0.20/conf.dist - priority 40
Current `best' version is /etc/hadoop-0.20/conf.dist.
$
Agora, você tem uma nova configuração chamada conf.dist a qual será usada para a nova configuração distribuída. Nesse estágio, executando em um ambiente virtualizado, você clona esse nó em dois nós adicionais que atuarão como os nós de dados.
Configurando o Hadoop para a operação distribuída
A próxima etapa é fazer com que todos os nós se conheçam. Isso é feito nos arquivos /etc/hadoop-0.20/conf.dist chamados principais e escravos. São designados endereços IP de forma estática aos três nós desse exemplo, como mostrado aqui (a partir de /etc/hosts):
Listagem 3. Nós de Hadoop para essa configuração (/etc/hosts)
master 192.168.108.133
slave1 192.168.108.134
slave2 192.168.108.135
No nó principal, você atualiza /etc/hadoop-0.20/conf.dist/masters para identificar o nó principal, o qual aparece como:
master
e em seguida identifica os nós escravos em /etc/hadoop-0.20/conf.dist/slaves, os quais contêm as duas linhas a seguir:
slave1
slave2
Depois, a partir de cada nó, conecte-se por meio de Secure Shell (ssh) a cada um dos outros nós para certificar-se de que o ssh sem senha está funcionando. Cada um desses arquivos (principais, escravos) é usado pelos utilitários de início e parada do Hadoop que você usou na Parte 1 dessa série.
Depois, continue com a configuração específica do Hadoop no subdiretório /etc/hadoop-0.20/conf.dist. As seguintes alterações são necessárias em todos os nós (no principal e nos dois escravos), conforme o definido na documentação do Hadoop.
Primeiro, identifique o HDFS principal no arquivo core-site.xml (Listagem 4), que define o host e a porta do namenode (observe o uso do endereço IP do nó principal). O arquivo core-site.xml define as propriedades principais do Hadoop.
Listagem 4. Definindo o HDFS principal em core-site.xml
<configuration>
<property>
<name>fs.default.name<name>
<value>hdfs://master:54310<value>
<description>The name and URI of the default FS.</description>
<property>
<configuration>Em seguida, identifique o jobtracker MapReduce. Esse jobtracker pode existir no seu próprio nó mas, para essa configuração, coloque-o no nó principal como mostrado na Listagem 5. O arquivo mapred-site.xml contém as propriedades de MapReduce.
Listagem 5. Definindo o jobtracker MapReduce em mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker<name>
<value>master:54311<value>
<description>Map Reduce jobtracker<description>
<property>
<configuration>
Por fim, defina o fator de replicação padrão (Listagem 6). Esse valor define o número de réplicas que serão criadas e normalmente não é superior a três. Nesse caso, você define como 2 (o número dos seus nós de dados). Esse valor é definido em hdfs-site.xml, que contém as propriedades do HDFS.
Listagem 6. Definindo a replicação padrão para os dados em hdfs-site.xml
<configuration>
<property>
<name>dfs.replication<name>
<value>2<value>
<description>Default block replication<description>
<property>
<configuration>
Os itens de configuração mostrados na Listagem 4, Listagem 5 e Listagem 6) são os elementos necessários para a sua configuração distribuída. Hadoop fornece um grande número de opções de configuração aqui, que permitem padronizar todo o ambiente. A seção Recursos, ao final do artigo, fornece mais informações sobre o que está disponível.
Com a configuração completa, a próxima etapa é formatar o namenode (o nó principal do HDFS). Para essa operação, use o utilitário hadoop-0.20, especificando o namenode e a operação (-format):
Listagem 7. Formatando o namenode
user@master:~# sudo su -
root@master:~# hadoop-0.20 namenode -format
10/05/11 18:39:58 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = master/127.0.1.1
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 0.20.2+228
STARTUP_MSG: build = -r cfc3233ece0769b11af9add328261295aaf4d1ad;
************************************************************/
10/05/11 18:39:59 INFO namenode.FSNamesystem: fsOwner=root,root
10/05/11 18:39:59 INFO namenode.FSNamesystem: supergroup=supergroup
10/05/11 18:39:59 INFO namenode.FSNamesystem: isPermissionEnabled=true
10/05/11 18:39:59 INFO common.Storage: Image file of size 94 saved in 0 seconds.
10/05/11 18:39:59 INFO common.Storage:
Storage directory /tmp/hadoop-root/dfs/name has been successfully formatted.
10/05/11 18:39:59 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/127.0.1.1
************************************************************/
root@master:~#
Com o namenode formatado, é hora de iniciar os daemons do Hadoop. Faça isso da mesma forma que na pseudoconfiguração distribuída anterior na Parte 1, mas o processo faz a mesma coisa para uma configuração distribuída. Observe que esse código inicia o namenode e o namenode secundário (como indica o comando jps):
Listagem 8. Iniciando o namenode
root@master:~# /usr/lib/hadoop-0.20/bin/start-dfs.sh
starting namenode, logging to
/usr/lib/hadoop-0.20/bin/../logs/hadoop-root-namenode-mtj-desktop.out
192.168.108.135: starting datanode, logging to
/usr/lib/hadoop-0.20/bin/../logs/hadoop-root-datanode-mtj-desktop.out
192.168.108.134: starting datanode, logging to
/usr/lib/hadoop-0.20/bin/../logs/hadoop-root-datanode-mtj-desktop.out
192.168.108.133: starting secondarynamenode,
logging to /usr/lib/hadoop-0.20/logs/hadoop-root-secondarynamenode-mtj-desktop.out
root@master:~# jps
7367 NameNode
7618 Jps
7522 SecondaryNameNode
root@master:~#
Se inspecionar os nós escravos (nós de dados) agora, com jps, você verá que agora há um daemon datanode em cada nó:
Listagem 9. Inspecionando o datanode em um dos nós escravos
root@slave1:~# jps
10562 Jps
10451 DataNode
root@slave1:~#
A próxima etapa é iniciar os daemons de MapReduce (jobtracker e tasktracker). Faça isso como mostrado na Listagem 10. Observe que o script inicia o jobtracker no nó principal (conforme o definido pela sua configuração; consulte a Listagem 5) e os tasktrackers em cada nó escravo. Um comando jps no nó principal mostra que agora o jobtracker está executando.
Listagem 10. Iniciando os daemons de MapReduce
root@master:~# /usr/lib/hadoop-0.20/bin/start-mapred.sh
starting jobtracker, logging to
/usr/lib/hadoop-0.20/logs/hadoop-root-jobtracker-mtj-desktop.out
192.168.108.134: starting tasktracker, logging to
/usr/lib/hadoop-0.20/bin/../logs/hadoop-root-tasktracker-mtj-desktop.out
192.168.108.135: starting tasktracker, logging to
/usr/lib/hadoop-0.20/bin/../logs/hadoop-root-tasktracker-mtj-desktop.out
root@master:~# jps
7367 NameNode
7842 JobTracker
7938 Jps
7522 SecondaryNameNode
root@master:~#
Por fim, verifique um nó escravo com jps. Aqui, você vê que um daemon de tasktracker se uniu ao daemon de datanode para cada nó de dados escravo:
Listagem 11. Inspecionando o datanode em um dos nós escravos
root@slave1:~# jps
7785 DataNode
8114 Jps
7991 TaskTracker
root@slave1:~#
As relações entre os scripts de início, os nós e os daemons que são iniciados são mostradas na Figura 4. Como você pode ver, o script start-dfs inicia os namenodes e datanodes, e o script start-mapred inicia o jobtracker e os tasktrackers.
Figura 4. Relação dos scripts de início e dos daemons de cada nó
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/18336/image004.gif&key=2e35ab9c1ba20178ccab9653fa45244ece1c283e6bf8c82ddfe12a5c977a2e61" alt="Imagem Postada" />
Testando o HDFS
Agora que o Hadoop está executando no seu cluster, você pode fazer alguns testes para certificar-se de que esteja funcionando (consulte a Listagem 12). Primeiro, emita um comando do sistema de arquivos (fs) por meio do utilitário
hadoop-0.20 e solicite uma operação de df (sem disco). No Linux, esse comando simplesmente identifica o espaço consumido e disponível para o dispositivo específico. Em um sistema de arquivos recém-formatados, você não usou espaço nenhum.
Em seguida, realize uma operação de ls na raiz do HDFS, crie um subdiretório, liste o seu conteúdo e remova-o. Por fim, você pode realizar um fsck (verificação do sistema de arquivos) no HDFS por meio do comando fsck com o utilitário hadoop-0.20. Toda essa operação informa ? juntamente com várias outras informações (como a detecção de 2 nós de dados) ? que o sistema de arquivos encontra-se em bom estado.
Listagem 12. Verificando o HDFS
root@master:~# hadoop-0.20 fs -df
File system Size Used Avail Use%
/ 16078839808 73728 3490967552 0%
root@master:~# hadoop-0.20 fs -ls /
Found 1 items
drwxr-xr-x - root supergroup 0 2010-05-12 12:16 /tmp
root@master:~# hadoop-0.20 fs -mkdir test
root@master:~# hadoop-0.20 fs -ls test
root@master:~# hadoop-0.20 fs -rmr test
Deleted hdfs://192.168.108.133:54310/user/root/test
root@master:~# hadoop-0.20 fsck /
.Status: HEALTHY
Total size: 4 B
Total dirs: 6
Total files: 1
Total blocks (validated): 1 (avg. block size 4 B)
Minimally replicated blocks: 1 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 2
Average block replication: 2.0
Corrupt blocks: 0
Missing replicas: 0 (0.0 %)
Number of data-nodes: 2
Number of racks: 1
The filesystem under path '/' is HEALTHY
root@master:~#
Realizando uma tarefa de MapReduce
A próxima etapa é realizar uma tarefa de MapReduce para confirmar que toda a configuração está funcionando corretamente (consulte a Listagem 13). A primeira etapa desse processo é introduzir alguns dados. Comece criando um diretório para conter os seus dados de entrada (chamados de entrada); faça isso usando o utilitário hadoop-0.20 com o comando mkdir. Em seguida, use o comando put de hadoop-0.20 para colocar dois arquivos no HDFS. É possível verificar o conteúdo do diretório de entrada por meio do comando ls do utilitário Hadoop.
Listagem 13. Gerando dados de entrada
root@master:~# hadoop-0.20 fs -mkdir input
root@master:~# hadoop-0.20 fs -put \
/usr/src/linux-source-2.6.27/Doc*/memory-barriers.txt input
root@master:~# hadoop-0.20 fs -put \
/usr/src/linux-source-2.6.27/Doc*/rt-mutex-design.txt input
root@master:~# hadoop-0.20 fs -ls input
Found 2 items
-rw-r--r-- 2 root supergroup 78031 2010-05-12 14:16 /user/root/input/memory-barriers.txt
-rw-r--r-- 2 root supergroup 33567 2010-05-12 14:16 /user/root/input/rt-mutex-design.txt
root@master:~#
Em seguida, inicie a tarefa de contagem de palavras de MapReduce. Como acontece no modelo pseudodistribuído, você especifica o subdiretório de entrada (que contém os arquivos de entrada) e o diretório de saída (que não existe mas será criado pelo namenode e preenchido com os dados de resultado):
Listagem 14. Executando a tarefa de contagem de palavras de MapReduce no cluster
root@master:~# hadoop-0.20 jar \
/usr/lib/hadoop-0.20/hadoop-0.20.2+228-examples.jar wordcount input output
10/05/12 19:04:37 INFO input.FileInputFormat: Total input paths to process : 2
10/05/12 19:04:38 INFO mapred.JobClient: Running job: job_201005121900_0001
10/05/12 19:04:39 INFO mapred.JobClient: map 0% reduce 0%
10/05/12 19:04:59 INFO mapred.JobClient: map 50% reduce 0%
10/05/12 19:05:08 INFO mapred.JobClient: map 100% reduce 16%
10/05/12 19:05:17 INFO mapred.JobClient: map 100% reduce 100%
10/05/12 19:05:19 INFO mapred.JobClient: Job complete: job_201005121900_0001
10/05/12 19:05:19 INFO mapred.JobClient: Counters: 17
10/05/12 19:05:19 INFO mapred.JobClient: Job Counters
10/05/12 19:05:19 INFO mapred.JobClient: Launched reduce tasks=1
10/05/12 19:05:19 INFO mapred.JobClient: Launched map tasks=2
10/05/12 19:05:19 INFO mapred.JobClient: Data-local map tasks=2
10/05/12 19:05:19 INFO mapred.JobClient: FileSystemCounters
10/05/12 19:05:19 INFO mapred.JobClient: FILE_BYTES_READ=47556
10/05/12 19:05:19 INFO mapred.JobClient: HDFS_BYTES_READ=111598
10/05/12 19:05:19 INFO mapred.JobClient: FILE_BYTES_WRITTEN=95182
10/05/12 19:05:19 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=30949
10/05/12 19:05:19 INFO mapred.JobClient: Map-Reduce Framework
10/05/12 19:05:19 INFO mapred.JobClient: Reduce input groups=2974
10/05/12 19:05:19 INFO mapred.JobClient: Combine output records=3381
10/05/12 19:05:19 INFO mapred.JobClient: Map input records=2937
10/05/12 19:05:19 INFO mapred.JobClient: Reduce shuffle bytes=47562
10/05/12 19:05:19 INFO mapred.JobClient: Reduce output records=2974
10/05/12 19:05:19 INFO mapred.JobClient: Spilled Records=6762
10/05/12 19:05:19 INFO mapred.JobClient: Map output bytes=168718
10/05/12 19:05:19 INFO mapred.JobClient: Combine input records=17457
10/05/12 19:05:19 INFO mapred.JobClient: Map output records=17457
10/05/12 19:05:19 INFO mapred.JobClient: Reduce input records=3381
root@master:~#
A etapa final é explorar os dados de saída. Já que a tarefa de contagem de palavras de MapReduce foi executada, o resultado é um único arquivo (reduzido a partir dos arquivos de mapeamento processados). Esse arquivo contém uma lista de tuplas que representam as palavras encontradas nos arquivos de entrada e o número de vezes que apareceram em todos os arquivos de entrada:
Listagem 15. Inspecionando a saída da tarefa de MapReduce
root@master:~# hadoop-0.20 fs -ls output
Found 2 items
drwxr-xr-x - root supergroup 0 2010-05-12 19:04 /user/root/output/_logs
-rw-r--r-- 2 root supergroup 30949 2010-05-12 19:05 /user/root/output/part-r-00000
root@master:~# hadoop-0.20 fs -cat output/part-r-00000 | head -13
!= 1
"Atomic 2
"Cache 2
"Control 1
"Examples 1
"Has 7
"Inter-CPU 1
"LOAD 1
"LOCK" 1
"Locking 1
"Locks 1
"MMIO 1
"Pending 5
root@master:~#
Interfaces de gerenciamento Web
Embora o utilitário hadoop-0.20 seja extremamente versátil e rico, às vezes é mais conveniente usar uma GUI. É possível anexar ao namenode para a inspeção do sistema de arquivos por meio de http://master:50070 e ao jobtracker por meio de http://master:50030. Por meio do namenode, é possível inspecionar o HDFS, como mostrado na Figura 5, no qual você inspeciona o diretório de entrada (que contém os dados de entrada ? lembre-se da Listagem 13).
Figura 5. Inspecionando o HDFS por meio do namenode
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/18336/image005.jpg&key=fa80840eaffed84ab07fc48aad083beb253174599c6fe0e7d69254fed2ea6880" alt="Imagem Postada" />
Por meio do jobtracker, é possível inspecionar as tarefas concluídas ou em execução. Na Figura 6, é possível ver uma inspeção da sua última tarefa (da Listagem 14). Essa figura mostra os diversos dados emitidos como saída da solicitação do arquivo de Java (JAR) e também o status e o número de tarefas. Observe que foram realizadas duas tarefas de mapeamento (uma para cada arquivo de entrada) e uma tarefa de redução (para reduzir as duas entradas de mapa).
Figura 6. Verificando o status de uma tarefa concluída
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/18336/image006.jpg&key=64031003ec82b29e659abb578f4c8697323b3bf0e0c07a76d013c19487a8855f" alt="Imagem Postada" />
Por fim, é possível verificar o status de seus datanodes por meio do namenode. A página principal do namenode identifica o número de nodos ativos e inativos (como links) e permite que você os inspecione melhor. A página mostrada na Figura 7 mostra os datanodes ativos e também as estatísticas de cada um.
Figura 7. Verificando o status dos datanodes ativos
/applications/core/interface/imageproxy/imageproxy.php?img=http://conteudo.imasters.com.br/18336/image007.jpg&key=20a47338926cbe0b2aee533d50ae4a4034f856d387c023384e74776698abbcd0" alt="Imagem Postada" />
Várias outras visualizações são possíveis por meio das interfaces da Web de namenode e jobtracker, mas por uma questão de concisão, mostra-se esse conjunto de amostra. Nas páginas da Web de namenode e jobtracker, encontram-se vários links referentes a informações adicionais sobre a configuração e operação do Hadoop (inclusive registros de tempo de execução).
Indo além
Nessa parte, foi visto como é possível transformar uma configuração pseudodistribuída de Cloudera em uma configuração totalmente distribuída. Surpreendentemente, as poucas etapas e uma interface idêntica para os aplicativos de MapReduce fazem do Hadoop uma ferramenta particularmente útil para o processamento distribuído.
Também é interessante explorar a escalabilidade do Hadoop. Adicionando novos datanodes (e atualizando os arquivos XML e os arquivos escravos no principal), pode-se escalar facilmente o Hadoop para obter níveis ainda mais altos de processamento paralelo. Na próxima parte, terceira e última da nossa série de artigos sobre o Hadoop, explorará como desenvolver um aplicativo de MapReduce para o Hadoop.
Recursos
Aprender
* A distribuição Cloudera, usada por esta série de artigos, vem em vários fatores de forma, a partir de um pacote instalável para fonte ou uma VM. É possível aprender mais sobre Cloudera no seu site principal. Cloudera também mantém um bom material de documentação para instalar e usar Hadoop (além de Pig e Hive, a linguagem de manipulação de dados grandes e infraestrutura de armazém de dados do Hadoop baseadas em Hadoop).
* Verifique a configuração de cluster em Apache.org para ver uma lista completa de propriedades de core-site.xml, mapred-site.xml e hdfs-site.xml.
* Consulte os recursos úteis de Michael Noll para usar Hadoop, além de outros tópicos interessantes.
* O Yahoo! fornece um grande conjunto de recursos para o Hadoop na rede de desenvolvedores. Especificamente, o Yahoo! Hadoop Tutorial, que apresenta o Hadoop e proporciona uma discussão detalhada de seu uso e configuração.
* Em "Distributed computing with Linux and Hadoop" (developerWorks, dezembro de 2008) e no mais recente "Cloud computing with Linux and Apache Hadoop" (developerWorks, outubro de 2009), saiba mais sobre Hadoop e sua arquitetura.
* Na zona Linux do developerWorks, encontre centenas de artigos e tutoriais, bem como downloads, fóruns de discussão e muitos outros recursos para desenvolvedores e administradores Linux.
* Participe de uma orientação gratuita do developerWorks Live! para atualizar-se rapidamente sobre produtos e ferramentas da IBM, assim como tendências da indústria de TI.
* Assista às demos on demand do developerWorks que abrangem da instalação do produto e demos de configuração para iniciantes à funcionalidade avançada para desenvolvedores experientes.
Obter produtos e tecnologias
* O Hadoop é desenvolvido por meio da Apache Software Foundation.
* Avalie os produtos da IBM da forma que melhor lhe convém: Faça o download de uma versão de teste de produto, experimente um produto on-line, use um produto em um ambiente de nuvem ou passe algumas horas no SOA Sandbox aprendendo como implementar Arquitetura Orientada a Serviço de forma eficiente.
artigo publicado originalmente no developerWorks Brasil, por M. Tim Jones
M. Tim Jones é arquiteto de firmware integrado e autor das obras Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming (agora, na segunda edição), AI Application Programming (na segunda edição) e BSD Sockets Programming from a Multilanguage Perspective. Sua experiência em engenharia vai desde o desenvolvimento de kernels para espaçonaves geossíncronas até a arquitetura de sistemas integrados e o desenvolvimento de protocolos de rede. Tim é engenheiro consultor da Emulex Corp. em Longmont, Colorado.
Carregando comentários...