Desenvolva, Publique e Implemente seu Primeiro Aplicativo Big Data com InfoSphere BigInsights

Desenvolver seu primeiro aplicativo Big Data e implementá-lo em seu ambiente de computação distribuído não precisa ser uma tarefa desencorajadora. Aprenda a usar ferramentas com base em Eclipse para InfoSphere® BigInsights™ a fim de acelerar o desenvolvimento de aplicativo, empacotar seu aplicativo para publicação em um catálogo baseado na web e implementar seu aplicativo de modo que a equipe de negócio e outras pessoas possam iniciá-lo facilmente.

Cynthia M. Saracco, Senior Software Engineer, IBM

photo: Cynthia SaraccoCynthia M. Saracco trabalha com gerenciamento de banco de dados e tecnologias XML no Laboratório da IBM no Vale do Silício. Ela foi a coautora de três livros e lecionou em cursos de nível universitário sobre diversas tecnologias de software.


nível de autor Master do
        developerWorks

Thomas Friedrich, Staff Software Engineer, IBM

Thomas Friedrich photoThomas Friedrich trabalha como engenheiro de software na equipe Information Management Administration Tooling no Silicon Valley Lab da IBM em San Jose, CA. Possui um mestrado em Ciência da computação pela Universidade de Ciências Aplicadasem Leipzig, Alemanha. Suas responsabilidades de desenvolvimento atuais incluem o desenvolvimento do suporte às ferramentas de replicação. Antes disso, ele trabalhou com suporte a ferramentas de procedimento armazenado e de função definida pelo usuário em Rational Data Architect e DB2 Developer Workbench.



Daniel Kikuchi, Executive IT Specialist, IBM

Daniel KikuchiDaniel Kikuchi é especialista em TI e executivo da IBM na equipe de Big Data Development Enablement. Ele concluiu com êxito muitas provas de conceito de WebSphere, Lotus e Big Data para clientes a fim de demonstrar como o software da IBM pode atender às suas metas de negócio. Ele tem base no Research Triangle Park, N.C., e é um Distinguished IT Specialist com The Open Group.



31/Jul/2013

Se você não tiver experiência com desenvolvimento de aplicativos Big Data e quiser começar a usá-lo rapidamente, convém explorar as ferramentas fornecidas com o InfoSphere BigInsights Enterprise Edition da IBM, uma plataforma baseada no projeto de software-livre Apache Hadoop. As ferramentas BigInsights Eclipse incluem assistentes, geradores de código, ajuda sensível ao contexto e um ambiente de teste para simplificar suas iniciativas de desenvolvimento. Com essas ferramentas, é possível "publicar" rapidamente seu aplicativo no catálogo baseado na web do BigInsights. Em seguida, é possível usar o console da web BigInsights para implementar o aplicativo em seu cluster de modo que os usuários autorizados possam iniciá-lo.

Este artigo apresenta o ciclo de vida de desenvolvimento de aplicativo BigInsights e descreve como criar, publicar e implementar seu primeiro aplicativo simples com o mínimo de esforço. Você verá até mesmo como é possível atualizar esse aplicativo com novos recursos e reimplementá-lo.

O aplicativo desenvolvido usará Jaql (uma linguagem de consulta e script que usa um modelo de dados com base em JSON) para recuperar dados sobre o projeto de pesquisa IBM Watson de um site de mídia social, manipular essas informações e armazenar os resultados em seu sistema de arquivos distribuído. Não cobriremos as especificidades de Jaql aqui, pois esses detalhes foram cobertos em outro artigo (consulte a seção Recursos para obter detalhes). No entanto, muitas das técnicas de desenvolvimento de aplicativo do BigInsights descritas aqui não são específicas ao Jaql. Certamente, as ferramentas e amostras de BigInsights podem ajudá-lo a criar uma variedade de aplicativos e componentes de software envolvendo Java MapReduce, Hive, Pig e análise de texto.

Plano de fundo

Se você não estiver familiarizado com BigInsights, ele é uma plataforma de software projetada para ajudar as organizações a descobrir e analisar insights de negócio ocultos em grandes volumes de uma faixa diversa de dados — geralmente ignorada ou descartada por ser muito inviável ou difícil de processar utilizando meios tradicionais. Entre os exemplos desses dados estão dados de mídia social, feeds de notícia, registros em log, fluxos de clique, saída de sensor eletrônico e até mesmo alguns dados transacionais.

Para ajudar as empresas a gerar valor desses dados de uma maneira eficiente, a Enterprise Edition do BigInsights inclui diversos projetos de software livre, incluindo Apache Hadoop e diversas tecnologias desenvolvidas pela IBM. O Hadoop e seus projetos complementares fornecem uma estrutura de software efetiva para aplicativos que usam muitos dados e que exploram ambientes de computação distribuídos para alcançar alta escalabilidade. As tecnologias IBM fornecidas com a Enterprise Edition enriquecem essa estrutura de software livre com software de análise, integração de software empresarial, extensões de plataforma e ferramentas. As tecnologias fornecidas pela IBM incluem um catálogo de aplicativo com base na web e ferramentas Eclipse para desenvolvimento de aplicativo. Para obter mais informações sobre o BigInsights, consulte a seção Recursos .

O catálogo de aplicativos, acessado por meio da guia Applications do console da web do BigInsights, inclui diversos aplicativos de amostra fornecidos pela IBM, além de qualquer aplicativo de terceiro ou escrito pelo usuário adicionado por um administrador. A Figura 1 retrata um subconjunto do catálogo de aplicativos à esquerda. Cada aplicativo publicado no catálogo tem um ícone e um nome. Um triângulo no canto superior esquerdo do ícone indica que o aplicativo ainda precisa ser implementado no cluster do BigInsights. (Na Figura 1, os aplicativos Ad hoc Hive query e Ad hoc Pig query não foram implementados.)

Quando um usuário seleciona um aplicativo para execução, um painel de inicialização aparece no painel superior direito. Todos os aplicativos publicados no catálogo apresentam uma interface consistente para os usuários que os permite especificar as informações de invocação apropriadas. Essas informações incluem quaisquer parâmetros de entrada necessários, um nome de execução para sua execução do aplicativo, informações de planejamento etc. A Figura 1 também retrata um subconjunto dessas informações para o aplicativo de consulta ad hoc Jaql query. Na parte inferior direita estão informações históricas sobre a execução do aplicativo.

Figura 1. A guia Applications do console da web BigInsights
A guia Applications do console da web BigInsights

Neste artigo, você verá como publicar seu aplicativo neste catálogo e controlar as informações necessárias para a inicialização. Você também inicializará seu aplicativo a partir do catálogo e, como opção, inspecionará os resultados.


Preparando-se para desenvolver seu primeiro aplicativo

Para começar a desenvolver aplicativos BigInsights usando Eclipse, faça o download da versão de pré-requisito do Eclipse e da plataforma Eclipse Data Tools. Se for necessário, consulte o Centro de Informações do produto para obter detalhes. A opção Recursos fornece links para o InfoCenter do produto, além de um site para download para Eclipse. Para nosso cenário de teste, instalamos o Eclipse Helios Service Release 2 e o Eclipse Data Tools 1.9.1.x em um sistema Linux® . (Embora seja possível usar um ambiente do Eclipse com base no Windows® para tarefas de desenvolvimento de aplicativo do BigInsights, uma instalação do Eclipse em Linux ou UNIX® é necessária para a Etapa 3: teste seu aplicativo.) Nosso ambiente de implementação de destino do BigInsights era BigInsights Enterprise Edition 1.4.

Depois de instalar seu ambiente do Eclipse e acessar um servidor BigInsights Enterprise Edition, inicie o console da web do BigInsights. Na seção Quick Links na guia Welcome , clique em Enable your Eclipse development environment for BigInsights application development, como mostra a Figura 2. Uma nova janela aparecerá com instruções detalhadas para download e instalação das ferramentas do BigInsights em seu ambiente do Eclipse.

Figura 2. Os links do console da web para informações sobre configuração das ferramentas do BigInsights Eclipse
Os links do console da web para informações sobre configuração das ferramentas do BigInsights Eclipse

Quando você inicia o Eclipse, uma nova perspectiva do BigInsights fica acessível. Essa perspectiva fornece um InfoSphere BigInsights Task Launcher para orientá-lo pelas diversas tarefas. A opção Overview do Task Launcher, exibido na Figura 3, é um bom ponto de partida. No entanto, para este artigo, você gastará grande parte de seu tempo trabalhando com assistentes inicializados por meio da guia Develop applications , exibida na Figura 4.

Figura 3. Guia Overview do InfoSphere BigInsights Task Launcher no Eclipse
Guia Overview do InfoSphere BigInsights Task Launcher no Eclipse
Figura 4. Guia Develop applications do BigInsights Task Launcher
Guia Develop applications do BigInsights Task Launcher

Após a configuração de seu ambiente do Eclipse com as ferramentas do BigInsights, você está pronto para desenvolver seu primeiro aplicativo BigInsights.

De acordo com os artigos publicados anteriormente no BigInsights, você desenvolverá um aplicativo simples para suportar um cenário de análise de mídia social envolvendo o IBM Watson, um projeto de pesquisa que realiza análises complexas a fim de responder às perguntas apresentadas em uma linguagem natural. Um artigo anterior sobre Jaql explorou como recuperar um pequeno número de mensagens recentes relacionadas ao IBM Watson a partir de um site de mídia social, filtrar e transformar dados de interesse e gravar esses dados no sistema de arquivos distribuído (consulte Recursos). Embora esse cenário de Jaql fosse simplista e não adequado para coleta de grandes quantidades de dados de mídia social para uso em produção, ele servirá como um meio aceitável de apresentar os processos de desenvolvimento, publicação e implementação de aplicativos do BigInsights. Portanto, para ajudá-lo a se concentrar na tarefa atual, vamos imaginar que você deseja codificar a lógica de Jaql em um aplicativo de modo que os usuários de negócio não precisem escrever consultas de Jaql a fim de obter mensagens recentes sobre o IBM Watson.


Etapa 1: criar um projeto do BigInsights

Como você pode esperar de qualquer iniciativa de desenvolvimento de aplicativo com base em Eclipse, é necessário criar um projeto apropriado para seu aplicativo. Veja uma forma de fazer isso:

  1. se for necessário, inicie o Eclipse e abra a perspectiva BigInsights (clique em Window > Open Perspective > BigInsights).
  2. Se for necessário, invoque o BigInsights Task Launcher (clique em Help > InfoSphere BigInsights Task Launcher). Clique na guia Develop applications (Sua tela deverá ser parecida com a Figura 4.
  3. Clique na seta Create a BigInsights na seção Quick Links no lado superior direito. Quando solicitado, nomeie seu projeto como GetMessages e clique em Finish. O novo projeto aparecerá no painel Project Explorer à esquerda. Consulte a Figura 5,.
    Figura 5. Painel BigInsights Project Explorer com o novo projeto GetMessages destacado
    Painel BigInsights Project Explorer com o novo projeto GetMessages destacado

Etapa 2: criar e preencher um arquivo do Jaql com sua lógica de aplicativo

Como você está escrevendo um aplicativo Jaql, é necessário criar um arquivo Jaql dentro de seu novo projeto e incluir as instruções Jaql apropriadas. Nesta seção, você desenvolverá um aplicativo simples de Jaql sem parâmetros de entrada. Posteriormente, você atualizará este aplicativo para ser mais flexível e aceitar entrada do usuário quando iniciado.

Para desenvolver esse aplicativo:

  1. Na seção Tasks do BigInsights Task Launcher (exibida na Figura 4), clique em Create a file to contain Jaql.
  2. Quando for solicitado, selecione seu projeto GetMessage como a pasta pai para o arquivo e digite MyJaql como o nome do arquivo (consulte a Figura 6). Clique em Finish.
    Figura 6. Criando um arquivo Jaql usando o assistente BigInsights
    Criando um arquivo Jaql usando o assistente BigInsights
  3. Recorte e cole o código Jaql exibido na Listagem 1 no arquivo que aparece em um novo painel. (Se quiser, é possível omitir os comentários. Também pode ser necessário especificar um diretório diferente na chamada de função do Jaql write() exibida no final da listagem.)
    Lista 1. Código Jaql para seu primeiro aplicativo
    // Query Twitter for the 15 most recent messages about "IBM Watson" 
    tweets = read(http("http://search.twitter.com/search.json?q=IBM+Watson"));
                            
    // Get the current system time 
    time=now(); 
                            
    // Extract selected fields from JSON data returned by Twitter 
    tweetRecords = tweets[0].results -> 
                    transform { created_at: $.created_at,
                            geo: $.geo,
                            id: $.from_user_id_str,
                            iso_language_code: $.iso_language_code,
                            text: $.text };
                            
    // Write the results of the Jaql query as a delimited file in HDFS.
    // Change the directory shown here to fit your environment.
    // Call dateMillis() function to append unique time to file name. 
    // Wrap with serialize() to cast function results as a string.
    tweetRecords -> write(del("/user/idcuser/sampleData/twitter/WatsonTweets" +
    serialize(dateMillis(time)) + ".del",
    schema=schema {created_at, geo, id, iso_language_code, text}));

    Muito rapidamente, a primeira instrução define uma variável tweets com uma expressão que recupera as 15 postagens mais recentes no Twitter sobre "IBM Watson" acessando um serviço do Twitter baseado em REST. A segunda instrução define uma variável time com uma expressão que retorna o horário atual do sistema. A terceira declaração define uma variável tweetRecords que usa expressões Jaql para extrair e transformar as informações contidas no primeiro elemento do array representado por tweets . Dentro do primeiro elemento desse array, há um array results contendo os dados de JSON recuperados do Twitter, um subconjunto que nos interessa. A instrução final grava os resultados da consulta representados por tweetRecords como um arquivo delimitado em um caminho específico gerenciado pelo sistema de arquivos distribuído BigInsights. O nome do arquivo começa com WatsonTweets seguido por uma representação em sequência do horário atual do sistema em milissegundos; a extensão do arquivo é .del. As informações do esquema definem os campos contidos nos novos registros JSON dentro do arquivo recém-gravado.

  4. Salve seu arquivo (clique Ctrl > S.)

Etapa 3: testar seu aplicativo

Para testar seu aplicativo, defina uma conexão com um cluster BigInsights existente e configure as propriedades de tempo de execução de seu aplicativo. (Desde este artigo, uma instalação do Linux ou UNIX Eclipse é necessária para o trabalho descrito nesta etapa.)

Execute estas etapas para testar seu aplicativo:

  1. Na guia Quick Links do BigInsights Task Launcher, clique no link Create a BigInsights server connection .
  2. Quando for solicitado, especifique a URL de seu console da web do BigInsights. Forneça um nome de servidor de sua escolha e digite um ID do usuário e uma senha válidos do BigInsights. Consulte a Figura 7, que retrata amostras de propriedades de conexão para um cluster do BigInsights configurado sem acesso a SSL para o console da web. (Por padrão, uma instalação com base em SSL teria um URL parecido com https://myserver.ibm.com:8443.) Como opção, clique no botão Test Connection para verificar se é possível se conectar ao servidor do BigInsights que você acabou de definir. Clique em Finish.
    Figura 7. Definindo uma conexão do servidor do BigInsights
    Definindo uma conexão do servidor do BigInsights
  3. Na guia Tasks do Develop applications do BigInsights Task Launcher, clique em Create a configuration and run a Jaql program.
  4. Quando solicitado, digite os parâmetros de entrada necessários. Especifique um nome de configuração de sua escolha. Selecione GetMessages como o nome do projeto e MyJaql.jaql como o nome de arquivo Jaql. Selecione o nome de conexão do servidor BigInsights que você acabou de criar e aceite os valores padrão para outros campos (consulte a Figura 8). Clique em Apply e Run.
    Figura 8. Configurando e executando seu aplicativo Jaql
    Configurando e executando seu aplicativo Jaql
  5. Inspecione a saída no painel do console do Eclipse e verifique se nenhum erro foi reportado. A Figura 9 ilustra um subconjunto de amostras de saída que devem aparecer.
    Figura 9. O console Eclipse exibe a saída de seu aplicativo
    O console Eclipse exibe a saída de seu aplicativo
  6. Como opção, inicie o console da web BigInsights. Na guia Files , navegue até seu sistema de arquivos distribuído para localizar o novo arquivo criado por seu aplicativo. (O campo location da Figura 9 fornece o caminho completo e nome do arquivo.)

Como algo a parte, depois de definir uma conexão do servidor do BigInsights e criado uma configuração de execução de programa do Jaql, é possível testar rapidamente as instruções do Jaql diretamente de seu arquivo MyJaql.jaql. Basta realçar as instruções de Jaql de seu interesse, clicar com o botão direito do mouse e selecionar Run the Jaql statement.


Etapa 4: publicar seu aplicativo no catálogo BigInsights

Após testar seu aplicativo e verificar se funciona conforme o esperado, você estará pronto para publicá-lo no catálogo de aplicativos do BigInsights. O empacotamento e publicação de seu aplicativo permite que você identifique o ícone e nome do aplicativo, defina o fluxo de trabalho do aplicativo, especifique os parâmetros de entrada e execute tarefas relacionadas.

Veja como é possível publicar esse aplicativo:

  1. Na guia Tasks do BigInsights Task Launcher, clique no link Package and publish an application . Um assistente aparecerá, orientando-o por diversas etapas.
  2. Quando solicitado, especifique o nome do projeto GetMessages, selecione o nome da conexão do servidor do BigInsights e clique em Next. (Dependendo de sua configuração de segurança, talvez você receba uma solicitação para inserir um ID do usuário e senha do BigInsights.)
  3. Selecionar o ponto de rastreamento Create New Application e especifique GetMessages como o nome de seu aplicativo. Como opção, forneça uma breve descrição e especifique um arquivo de ícone (formato JPEG, GIF ou PNG) em seu sistema de arquivos local para atender como ícone de seu aplicativo. (Fizemos o download de uma imagem associada ao IBM Watson de um website da IBM. Se você preferir, é possível usar a imagem padrão fornecida.) Também é possível especificar uma ou mais categorias de aplicativo se quiser, o como "teste" (consulte a Figura 10). Quando estiver pronto, clique em Next.
    Figura 10. Especificando as informações básicas do aplicativo antes de publicar
    Especificando as informações básicas do aplicativo antes de publicar
  4. Para o fluxo de trabalho de seu aplicativo, aceite o padrão de permitir que o assistente crie um novo arquivo workflow.xml de ação única. No entanto, use o menu suspenso para alterar o tipo de fluxo de trabalho para Jaql, exibido na área central da Figura 11. Além disso, realce a propriedade de script e edite-a, especificando o nome de seu arquivo Jaql quando for solicitado (MyJaql.jaql). Verifique se sua tela parece com a Figura 11, com MyJaql.jaql como o nome de arquivo na coluna Value. Clique em Next.
    Figura 11. Especificando os parâmetros de fluxo de trabalho para seu aplicativo
    Especificando os parâmetros de fluxo de trabalho para seu aplicativo
  5. Aceite os padrões na página Parameters, pois essa versão de seu aplicativo não tem parâmetros de entrada e clique em Next).
  6. Na página final do assistente, verifique se o arquivo MyJaql.jaql é exibido sob a pasta fluxo de trabalho de seu pacote de aplicativos e clique em Finish. Você acabou de publicar seu primeiro aplicativo BigInsights.

Etapa 5: implantar e executar seu aplicativo no cluster

Após a publicação de seu aplicativo no catálogo BigInsights, um administrador pode implantá-lo no cluster e autorizar os usuários a iniciá-lo. Esta seção supõe que você tenha os privilégios apropriados para BigInsights e o orienta pelo processo de implementação do aplicativo.

Para implementar e executar seu aplicativo no BigInsights:

  1. Inicie o console da web e clique na guia Applications (
  2. Localize seu aplicativo GetMessages, como mostra a Figura 12. (O ícone de seu aplicativo pode ser diferente do exemplo exibido aqui. Fizemos o download de um arquivo JPEG específico de um site relacionado ao IBM Watson para usá-lo em nosso aplicativo.) Observe que um triângulo amarelo aparece no canto superior esquerdo do ícone de seu aplicativo, indicando que o aplicativo não foi implementado no cluster.
    Figura 12. Seu novo aplicativo é exibido no catálogo BigInsights
    Seu novo aplicativo é exibido no catálogo BigInsights
  3. Clique no aplicativo. No lado superior direito, o painel de inicialização do aplicativo aparecerá (consulte a Figura 13). Clique em Deploy para implantá-lo em seu cluster.
    Figura 13. Preparando a implementação de seu aplicativo publicado
    Preparando a implementação de seu aplicativo publicado
  4. Clique no botão de configuração do aplicativo (à direita do botão Delete exibido na Figura 13). Uma janela pop-up aparecerá, permitindo que você especifique restrições de segurança para seu aplicativo. Selecione todos os grupos disponíveis e clique em Save. Agora, qualquer usuário do BigInsights poderá iniciar seu aplicativo. Os usuários podem até mesmo agendar execuções regulares do aplicativo expandindo a caixa de diálogo Schedule and Advanced Settings exibida no meio da Figura 13.
  5. Teste seu aplicativo no cluster. Especifique um Execution Name, como Test-GetMessages, no painel de inicialização do aplicativo (exibido na Figura 13) e clique em Run.
  6. Inspecione a seção Application History no lado inferior direito a fim de monitorar o progresso da tarefa. Como opção, quando a tarefa for concluída, clique na seta na seção Details (exibida à direita na Figura 14) para exibir mais informações sobre o fluxo de trabalho e sobre sua tarefa.
    Figura 14. Painel Application History exibe o progresso da execução de seu aplicativo
    Painel Application History exibe o progresso da execução de seu aplicativo
  7. Se quiser, clique na guia Files do console da web e localize o arquivo criado por seu aplicativo. Se você clicar no arquivo, o verá exibido em formato de texto em um painel à sua direita. Como opção, crie um conjunto BigSheets a partir desse arquivo, especificando valores separados por vírgulas (CSV) como o tipo de leitor, desmarcando a caixa Headers included . Consulte a seção Recursos se for necessário, para ler um artigo que discute como criar e analisar os conjuntos BigSheets.

Etapa 6: atualizar seu aplicativo

Agora vamos atualizar seu aplicativo para torná-lo mais flexível. Em particular, mudaremos o aplicativo para aceitar dois parâmetros de entrada: um termo de pesquisa para enviar ao e um nome de arquivo para armazenar os resultados do aplicativo.

  1. Remova a implementação do aplicativo do catálogo BigInsights. No painel de inicialização do aplicativo, clique em Undeploy. (Para poder substituir um aplicativo por uma nova versão, um aplicativo precisa ter sua implementação removida primeiro a fim de assegurar que nenhum usuário esteja executando o aplicativo ao tentar substituí-lo.)
  2. No Eclipse, crie uma cópia de backup de seu projeto do GetMessages, se quiser. Em seguida, retorne ao projeto GetMessages e edite MyJaql.jaql, como mostra a Listagem 2. Ignore quaisquer erros que possam aparecer, pois eles serão resolvidos posteriormente quando o aplicativo for publicado. Salve seu arquivo.
    Lista 2. Versão revisada do código de Jaql
    // Block 1
    // Declare external variables 
    extern TERM;
    extern OUTPUT;
                            
    // Search term (provided by user)
    term=[TERM];
                            
    // Full path + file name for output (provided by user)
    output=[OUTPUT];
                            
    // Block 2 
    // Query Twitter for recent messages about user-supplied search term
    // Note that a multi-word term needs to conform to the search engine's syntax
    // E.g., instead of IBM Watson, a user would need to enter IBM+Watson   
    tweets = read(http("http://search.twitter.com/search.json?q="+term[0]));
                            
    // Extract selected fields from JSON data returned by Twitter 
    tweetRecords = tweets[0].results -> 
                    transform { created_at: $.created_at,
                            geo: $.geo,
                            id: $.from_user_id_str,
                            iso_language_code: $.iso_language_code,
                            text: $.text };
                            
    // Block 3 
    // Write to results of social media query as a delimited file
    tweetRecords->write(del(output[0], 
    schema=schema {created_at, geo, id, iso_language_code, text}));

    O bloco 1 declara duas variáveis externas (TERM e OUTPUT) que representam parâmetros de entrada que farão parte da UI do aplicativo. Cada parâmetro é atribuído a uma variável Jaql (term e output). O bloco 2 incorpora o termo de pesquisa fornecido pelo usuário (term) à consulta enviada ao Twitter. O bloco 3 usa as informações do arquivo de saída fornecidas pelo usuário (output) para gravar os resultados no sistema de arquivos distribuído. Para fazer esse código Jaql funcionar, é necessário especificar os parâmetros de entrada apropriados para seu aplicativo quando você o reempacota e o publica. Você fará isso em breve.

  3. Localize seu projeto no painel Project Explorer. Clique com o botão direito do mouse e selecione BigInsights Application Publish para iniciar o assistente de publicação. (Como alternativa, é possível iniciar este assistente a partir do BigInsights Task Launcher, conforme descrevemos na seção intitulada "Etapa 4: publicando seu aplicativo no catálogo do BigInsights.")
  4. Selecione o mesmo servidor BigInsights usado ao publicar o aplicativo pela primeira vez e clicar em Next.
  5. Na página Specify Application, verifique se o botão Replace Existing Application está marcado. Como opção, mude a descrição do aplicativo. Aceite os valores existentes para os itens restantes e clique em Next.
  6. No menu Workflow, selecione o botão de opção para criar um novo arquivo workflow.xml de ação única. (Como você está inserindo novos parâmetros de entrada, não é possível aceitar o padrão de uso do fluxo de trabalho existente.)
  7. Siga o mesmo processo descrito anteriormente a fim de criar um fluxo de trabalho para o script Jaql chamado MyJaql.jaql (consulte a Figura 11).
  8. Selecione New para inserir uma nova propriedade para o fluxo de trabalho. Quando uma nova janela aparecer, use o menu suspenso para o campo Name a fim de selecionar eval. Expressões Jaql na propriedade eval são executadas antes de o script Jaql fornecido ser executado e podem ser usadas para atribuir valores a variáveis externas definidas no script Jaql. Para nosso aplicativo, atribua a propriedade eval ao valor exibido na Listagem 3.
    Lista 3. Configurando os valores de propriedade para seu fluxo de trabalho de aplicativo
    TERM="${jsonEncode(term)}";OUTPUT="${jsonEncode(output)}";

    Como uma explicação breve, ao executar o aplicativo, desejamos fornecer valores para as variáveis TERM e OUTPUT (incluídas na Listagem 2). Para fazer isso, devemos atribuir uma variável Oozie a cada variável Jaql. Oozie é usado como o mecanismo de fluxo de trabalho que executa o aplicativo. Um parâmetro Oozie é cercado por ${}. Para poder correlacionar facilmente as variáveis Oozie com os parâmetros Jaql, usamos os mesmos nomes de variável para os parâmetros Oozie term e output (todos em letra minúscula). Recomenda-se o uso da função jsonEncode para codificar a entrada fornecida pelo usuário por meio do console da web a fim de escapar caracteres especiais e evitar a injeção de código. Para obter informações detalhadas sobre como especificar parâmetros em aplicativos Jaql, consulte o link para o BigInsights InfoCenter na seção Recursos .

    Após a conclusão, sua tela deverá parecer com a Figura 15.

    Figura 15. Especifique as expressões Jaql na propriedade eval
    Especifique as expressões Jaql na propriedade eval

    Clique em OK e Next.

  9. Na página Parameters, observe se todos os parâmetros Oozie especificados na página de fluxo de trabalho anterior estão listados — nesse caso, o nome de parâmetro term e output. É necessário selecionar cada parâmetro e editar suas propriedades a fim de fornecer informações sobre como cada parâmetro deve ser exibido na UI do console da web e qual tipo de parâmetro é esperado.
  10. Edite o parâmetro term . Defina seu nome de exibição como Search term e seu tipo como String. Especifique IBM+Watson como o valor padrão. Se quiser, forneça uma breve descrição. Certifique-se de que a caixa Required esteja marcada e clique em OK.
  11. Edite o parâmetro output . Defina seu nome de exibição como Output file e seu tipo como File Path. Se for necessário, forneça uma breve descrição. Certifique-se de que a caixa Required esteja marcada e clique em OK.
  12. Após a conclusão de suas edições, verifique se a página Parameters parece com a Figura 16. Clique em Next e Finish.
    Figura 16. Lista de parâmetros do aplicativo
    Lista de parâmetros do aplicativo
  13. Atualize a página de catálogo de aplicativo no console da web do BigInsights e implemente a versão atualizada de seu aplicativo.
  14. Configure o aplicativo de modo que todos os usuários possam acessá-lo (clique no botão de configuração do aplicativo à direita do botão Delete exibido na Figura 13. Quando uma janela pop-up aparecer, defina suas características de segurança; em particular, selecione todos os grupos disponíveis e clique em Save.)
  15. Inicie seu aplicativo. Observe que seus aplicativos esperam que o usuário especifique um termo ou frase de pesquisa e ofereça um valor padrão de IBM+Watson. Além disso, seu aplicativo exige que o usuário especifique um arquivo de saída. Como mostra a Figura 17, se você forneceu uma descrição para um de seus parâmetros de entrada, essa descrição será exibida como informações de ajuda sensíveis ao contexto quando o usuário passar o mouse sobre o campo.
    Figura 17. Nova versão do aplicativo mostrando os parâmetros de entrada necessários
    Nova versão do aplicativo mostrando os parâmetros de entrada necessários
  16. Especifique um nome de execução para seu aplicativo, como Test-GetMessages-New. Além disso, especifique um caminho e um nome de arquivo para a saída do aplicativo. É possível usar o botão Browse ao lado do campo Output file input e selecionar um arquivo existente no sistema de arquivos distribuído. Ou é possível atualizar o campo de entrada manualmente com um local de arquivo. Aceite o termo de pesquisa padrão de IBM+Watson e execute seu aplicativo.
  17. Como opção, inspecione o sistema de arquivos distribuído a fim de localizar seu arquivo de saída após a execução do aplicativo. Para fazer isso, clique na guia Files e navegue até o local especificado para o arquivo de saída.
  18. Como opção, retorne ao seu projeto GetMessages no Eclipse. Expanda BIApp > application folder e clique duas vezes no arquivo workflow.xml gerado pela ferramenta BigInsights para você. Inspecione o conteúdo do arquivo. Usando a guia Design do editor de XML, expanda as seções workflow > action > jaql . Observe que os valores definidos anteriormente para as propriedades do fluxo de trabalho (incluindo script e eval) são refletidos aqui. Da mesma maneira, inspecione o arquivo application.xml gerado pela ferramenta BigInsights para você. Você encontrará esse arquivo na pasta BIApp > application de seu projeto. Clique duas vezes no arquivo para exibir seu conteúdo. Usando a guia Design do editor de XML, expanda as seções application-template > properties > property . Observe que os valores definidos para seus dois parâmetros de entrada são refletidos aqui.

Diagnosticando problemas no aplicativo no tempo de execução

Para demonstrar como diagnosticar um problema, execute o aplicativo novamente, mas forneça um parâmetro de entrada que causará a falha do aplicativo.

Inicie o aplicativo, aceitando o valor padrão para o termo de pesquisa. Para o arquivo de saída, digite um nome de arquivo sob um diretório no sistema de arquivos distribuído para o qual seu usuário do BigInsights não tem acesso de gravação. Por exemplo, se você estiver conectado a um cluster seguro do BigInsights como user1 (membro do grupo "user"), especifique um arquivo sob o diretório /user/biadmin/ ou qualquer outro ID do usuário diferente de user1. Em seguida, clique em Run para executar o aplicativo novamente. Após a execução do aplicativo, ele deve mostrar o status na seção Application History como um ícone de erro vermelho (consulte a Figura 18).

Figura 18. O aplicativo falhou com um erro
O aplicativo falhou com um erro

Dependendo do tipo de erro, as informações sobre o que causou a falha serão exibidas em áreas diferentes do fluxo de trabalho do aplicativo. Um fluxo de trabalho de aplicativo inicia uma ou mais ações que executam pelo menos uma tarefa. Cada tarefa executa uma ou mais tarefas, cada tarefa é composta por pelo menos uma tentativa de tarefa. O console da web do BigInsights permite que você realize o drill down em cada nível e acesse logs e outros arquivos que podem ajudá-lo a diagnosticar o problema.

Para navegar nos detalhes do fluxo de trabalho, clique na seta abaixo da coluna Details do fluxo de trabalho na seção Application History. O resumo de fluxo de trabalho exibe algumas informações básicas sobre o fluxo de trabalho, lista todas as ações executadas e fornece pontos de entrada para o arquivo de configuração do fluxo de trabalho, arquivo de log e detalhes da tarefa (consulte a Figura 19).

Figura 19. Resumo de fluxo de trabalho
Resumo de fluxo de trabalho

A opção Workflow Configuration no canto superior esquerdo abre uma caixa de diálogo com a configuração do fluxo de trabalho. Além das propriedades definidas pela configuração do Oozie, o arquivo inclui os valores para parâmetros fornecidos pelo usuário antes de executar o aplicativo. Em nosso exemplo, verifique se os valores corretos para as propriedades output e term são definidas na configuração (consulte a Figura 20).

Figura 20. Configuração do fluxo de trabalho
Configuração do fluxo de trabalho

Depois de verificar se todos os valores foram passados para o fluxo de trabalho de Oozie, é possível clicar no botão Workflow Log para acessar o arquivo de log do fluxo de trabalho ou clicar em qualquer lugar na linha da tabela no meio da tela para ver informações sobre uma ação específica do fluxo de trabalho. Em nosso exemplo, o fluxo de trabalho é composto apenas por uma ação Jaql. As informações da ação fornecem um código de erro, mensagem e detalhes sobre a ação do fluxo de trabalho (consulte a A Figura 21). Dependendo do tipo de ação, as informações são mais ou menos detalhadas. Em algumas instâncias, esse diálogo pode revelar o problema, mas no caso da ação do Jaql, a mensagem é muito genérica para afirmar o que exatamente causou o problema. No entanto, podemos verificar se a expressão Jaql na propriedade eval é uma declaração Jaql válida após substituir os parâmetros Oozie pelos valores reais da configuração do fluxo de trabalho.

Figura 21. Informações sobre o código de erro, mensagem e sobre a ação Jaql que falhou
Informações sobre o código de erro, mensagem e sobre a ação Jaql que falhou

Como as informações do nível de fluxo de trabalho não eram suficientes para determinar o problema, é necessário analisar as tarefas individuais da ação de Jaql e realizar o drill down até os logs de tentativa da tarefa. Para entrar na visualização de detalhes da tarefa, clique na seta na coluna Job Details da ação Jaql (consulte a Figura 19). A visualização Jobs exibirá uma lista de todas as tarefas da ação (consulte a Figura 22). Em nosso exemplo, a ação é composta por uma tarefa. Para ver todas as tarefas do trabalho, clique em qualquer lgar dentro da linha da tarefa. As tarefas são categorizadas por tipo (configuração, mapeamento, redução e limpeza) e é possível clicar em qualquer linha para realizar o drill down. Clique na linha para as tarefas de mapeamento e continue analisando os detalhes até atingir o nível de log de tentativas.

Figura 22. Informações detalhadas sobre trabalhos e tarefas
Informações detalhadas sobre trabalhos e tarefas

Os logs para cada tentativa estão contidos em seções diferentes. A seção stdout contém informações sobre o ambiente como o caminho da classe, propriedades do sistema Java, a configuração de ação do Oozie e, no caso de uma ação Jaql, os argumentos do comando Jaql também são incluídos. As informações de erro são listadas sob a seção stderr. Se nenhum erro ocorrer, esta seção estará vazia. No entanto, em nosso caso, vemos um rastreamento de pilha com uma mensagem de erro (consulte a Figura 23). Como especificamos um arquivo de saída em uma pasta para a qual nosso usuário não tem acesso de gravação, o aplicativo falhou com um AccessControlException: Permission denied error.

Figura 23. Log de tentativas que mostra as informações de erro
Log de tentativas que mostra as informações de erro

Resumo

Para simplificar o desenvolvimento de aplicativos Big Data, o BigInsights Enterprise Edition fornece ferramentas de Eclipse (plug-ins) que apresentam assistentes, geradores de código, ajuda sensível ao contexto e um ambiente de teste. Este artigo forneceu um tour rápido pelo ciclo de vida de desenvolvimento do aplicativo para BigInsights, mostrando como desenvolver rapidamente, testar, publicar e implementar seu próprio aplicativo Big Data. Você viu até mesmo como atualizar facilmente seu aplicativo a fim de atender a novos requisitos, publicar essas atualizações e implementar a nova versão de seu aplicativo em seu cluster do BigInsights.

Agradecimentos

Agradecemos aqueles que contribuíram ou revisaram este artigo: Anshul Dawra, Nicolas Morales, Michael Nobles e Robin Noble-Thomas.

Recursos

Aprender

Obter produtos e tecnologias

  • Desenvolva seu próximo projeto de desenvolvimento com software de avaliação IBM, disponível para download diretamente do developerWorks.
  • Agora, é possível usar o DB2 gratuitamente. Faça download do DB2 Express-C, uma versão gratuita do DB2 Express Edition para a comunidade que oferece os mesmos recursos de dados centrais que o DB2 Express Edition e fornece uma base sólida para desenvolver e implementar aplicativos.

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Information Management
ArticleID=841999
ArticleTitle=Desenvolva, Publique e Implemente seu Primeiro Aplicativo Big Data com InfoSphere BigInsights
publish-date=07312013