2015-11-28

20) Big Data Posts – Slides gratuitos Big Data Spark Developer

#bigdata #hadoop #spark

Os Slides gratuitos do curso Geonumerica Training de "Big Data Spark Developer" podem ser baixados nesse link (o usuário deve registrar-se e confirmar email, para então fazer download).

No período outubro 27~29 eu estive no Spark Summit Europe 2015, em Amsterdam. É de impressionar qualquer um constatar a quantidade de aditivos open-source para Spark que a comunidade está criando. O Spark é um produto tão bom, tão disponível (por ser open-source), tem uma comunidade tão sólida de usuários-desenvolvedores, que o apelo para o usar Spark é irresistível. Mas todo esse movimento de aprimoramento e adoção maciça de Spark esconde um paradoxo. É preciso que se construa um ambiente econômico que dê sustentação para as pessoas envolvidas. Percebi claramente que diante do cenário descrito, o que muitas pessoas e empresas estão fazendo é especializar-se no trio – treinamento, consultoria e suporte (de Spark). Nesse momento, em que está ocorrendo um forte crescimento da adoção de Spark, isso faz muito sentido. É isso com certeza que eu estou fazendo. A sustentabilidade de longo prazo dessa prática é algo que a história haverá de mostrar.

Estamos vivendo a segunda década do século 21, com o mundo repleto de inovações, em especial as inovações relacionadas a tecnologia digital. O futuro de diversas atividades econômicas está sendo refeito nesse contexto. Analisemos o que está acontecendo com o Education Business. Um dos fenômenos do ambiente é o MOOC (Massive Online Open Course). Um ator de grande impacto que pratica o MOOC é o Khan Academy, com um modelo de negócios baseado em empresa não orientada a lucro. Outro ator é o Coursera, que tem vários cursos gratuitos e alguns serviços pagos. Ainda outro ator a citar é o PluralSight, que tem foco em tecnologia de informação, com muitos assuntos e muito material, e que permite período de cortesia em que o aluno experimenta o produto e depois decide se quer ou não comprar inscrição para continuar a ver o material. Claro que há muito mais gente que poderia ser citada, mas algumas características importantes já ficam claras com esses exemplos:
  1. A maior parte dos materiais é em Inglês.
  2. Espera-se que o aluno tenha maturidade para ver o material e aprender com ele, com dose considerável de esforço individual; caso seja necessário suporte, esse deve ser feito com tecnologia remota (email, chat, videoconferência, etc.)
  3. O material deve conter uma sequência lógica para que o aluno possa seguir uma linha e aprender o conteúdo em questão.
  4. O material deve sugerir e incluir exercícios para a prática do conteúdo em questão.
  5. Muitos cursos tem alguma componente gratuita, o que ajuda a atrair atenção; mas para sustentar-se os cursos buscam vender seu material de alguma forma.
Inspirado em tudo isso, eu iniciei em 2015 um projeto em que estou dando consultoria para montar com a empresa Geonumerica – da incubadora de empresas da UFRJ – na sua sucursal de treinamento chamada Geonumerica Training, um curso de Big Data Spark Developer. O curso é um projeto ambicioso que está sendo construído agora, já com muitas partes funcionando. No futuro, vamos incluir no curso o assunto de Dados Geoespaciais e sua ligação com tecnologia de Big Data. Optamos por liberar os slides do módulo Big Data Spark Developer do curso gratuitamente (o usuário deve registrar-se e confirmar email, para então fazer download). O link é esse.

O material do curso é todo feito na empresa, sendo os slides e material de apoio todo feito em português. Nosso objetivo é o de efetivamente absorver o conhecimento relacionado a esse assunto, e inclusive por isso optamos por criar nosso material original em português (embora o texto do código fonte muitas vezes seja em inglês). O assunto Big Data Spark Developer é empolgante, assim como os assuntos derivados (Datos Geoespaciais e outros). Por liberar os slides do curso, esperamos atrair uma comunidade de gente que quer estudar e aprender. Na sociedade do conhecimento, compartilhar é essencial. O objetivo é compreender efetivamente esse assunto, de forma a conquistar as boas consultorias nessa área.

O mundo é sempre muito competitivo. Na área de software, as desvantagens brasileiras (muitas vezes chamadas de “custo Brasil”) são relativamente menos relevantes, pois usamos as mesmas ferramentas que nossos concorrentes no exterior. Quem for da área de tecnologia de informação e estiver buscando opções para progredir na carreira, faz muito favor a si mesmo por estudar Big Data Spark Developer agora, quando a comunidade está crescendo.

2015-11-20

19) Big Data Posts – Spark 1.6: Project Tungsten

#bigdata #hadoop #spark

No período outubro 27~29 eu estive no Spark Summit Europe 2015, em Amsterdam. Um dos assuntos muito debatidos nesse Summit foi o Project Tungsten, que está prometido para ser entregue como um módulo dentro da versão 1.6 do Spark. A incorporação do Project Tungsten ao Spark é uma orientação estratégica de alta tecnologia, com consequências para quem pretende desenvolver software para Spark.

A proposta original do Spark é centrada na classe RDD (Resilient Distributed Dataset), concebida pelo autor do Spark - Matei Zaharia - em sua tese de doutorado. O texto dessa tese pode ser baixado nesse link. O código com uso de RDD, associado ao conceito de “lazy execution”, faz criar um DAG (Directed Acyclic Graph), que é o grafo que descreve como a execução será feita quando chegar o momento. A análise especializada do código gerado dessa forma permite que se façam propostas de padrões de código que melhoram o desempenho de execução. Mas essa análise requer aprofundamento muito intrincado em tecnologia, o que torna o uso de Spark menos palatável para o grande público do que se desejaria.

Os “gurus do Spark” acreditam que com o Project Tungsten chegaram a uma proposta adequada para entregar uma versão de Spark que é ao mesmo tempo otimizada em eficiência de execução e relativamente pouco complexa para ser programada. Para que essas qualidades sejam de fato obtidas, recomenda-se aos usuários de Spark que dentro do possível deixem de trabalhar com RDDs e passem a trabalhar com DataFrames. Isso porque o RDD, embora seja e será sempre o centro do Spark, não permite otimização automática das DAGs. Mas o DataFrame gera um tipo de estrutura que pode ser otimizada antes de ser executada, e essa otimização faz bastante diferença no desempenho. No final das contas, um programa com RDD, se for otimizado “na mão”, com todas as intrincadas técnicas de análise de DAG, terá na melhor das hipóteses um desempenho tão bom quanto um programa feito com DataFrame, que é otimizado automaticamente e não requer análise intrincada por parte do programador Spark. E há uma vantagem adicional: considerando que todas as linguagens Spark usam o mesmo DataFrameAPI, o desempenho otimizado dos DataFrames ocorre igualmente para qualquer linguagem que o programador desejar usar (atualmente incluindo Scala, R, Python, entre outras). Em contraste, o uso direto de RDD tem desempenho melhor quando feito em Scala, em relação a outras linguagens.

Para quem está aprendendo Spark agora, a mensagem é a seguinte: é preciso aprender RDD, porque há funcionalidades de Spark que apenas funcionam assim, e porque ainda há muito código com o qual se precisa interagir que é baseado em RDD. As novas versões do Spark não terão qualquer problema com código para RDD. Mas ao mesmo tempo, seja pela simplicidade de uso, seja por desempenho, é bom apostar na estrutura de dados baseado em DataFrame, pois sinaliza-se que o futuro do código Spark tende para essa direção. Pode-se usar DataFrame desde as versões atuais. Mas será a partir da futura versão 1.6 (que inclui o Project Tungsten) que se espera que o uso pleno de DataFrames, com seu potencial e desempenho plenos sejam disponibilizados para o público.

A propósito: considerando que no Summit havia um clima de forte incentivo ao open-source, eu pedi para o pessoal da Databricks que me dessem o código com o qual eles implementaram a famosa quebra de recorde de benchmark, em outubro de 2014 (aqui e aqui). Eles não me deram esse código, e explicaram o motivo. Acontece que o código realmente bateu o recorde, mas foi feito com muitos “truques de baixo nível”. Esses truques são úteis para pesquisa, mas não são boas práticas de programação. Com a pesquisa feita com esses truques, eles evoluíram e criaram estruturas de alto nível, e as colocaram no Project Tungsten.

Em resumo: o Spark segue evoluindo rapidamente, como a comunidade espera, e como deve ser. Para o desenvolvedor Spark, o Data Analyst ou Cientista de Dados, o que interessa é que a estrutura de dados no foco deve ser mais e mais o DataFrame, ao invés de RDD, mas esse último continuará sempre funcionando muito bem. A próxima versão 1.6 vai ser liberada em breve, e será um marco no estímulo ao uso de DataFrames. As versões atuais já permitem o uso de DataFrames, para quem quiser fazer experiências com essa estrutura de dados.

--------------------------------------------------------------------------------
Sergio Barbosa Villas-Boas (sbVB), Ph.D.
software development, Big Data, cloud, mobile, IoT, HPC, optimization
sbvillasboas@gmail.com, sbvb@poli.ufrj.br
Skype: sbvbsbvb
http://www.sbVB.com.br
https://www.linkedin.com/in/sbvbsbvb
+55-21-97699-1337

2015-11-07

18) Big Data Posts – Spark Summit Europe 2015

#bigdata #hadoop #spark

No período outubro 27~29 eu estive no Spark Summit Europe2015, em Amsterdam. É muito importante que se registre e se divulgue o que está acontecendo: uma revolução! A quantidade, qualidade e velocidade das transformações que estão ocorrendo no ambiente de tecnologia de informação são de tal magnitude que a situação atual não pode receber outra qualificação. E como se sabe por exemplos (Google, Smartphones, Uber, e muitos outros), grandes projetos de tecnologia de informação tem o potencial de mudar a vida de muita gente.


Peço ao leitor a permissão de mencionar brevemente minha história e sua relação com Big Data. Desde que voltei do doutorado no Japão em 1998, tendo estudado “Controle Automático” (no nível de doutorado esse assunto torna-se “matemática aplicada”), tenho mantido atividade na área de consultoria relacionada à desenvolvimento de software de alta tecnologia. Como temos que estar sempre nos atualizando, naturalmente tomei conhecimento da tecnologia de software para Big Data. Tomei a decisão estratégica de estudar seriamente o assunto em 2014, quando trabalhei com Hadoop. Nesse mesmo ano solicitei e obtive aprovação para a criação de primeira disciplina de Big Data Developer da UFRJ, no DEL (Departamento de Engenharia Eletrônica e de Computação), onde trabalho desde 1991. Em março de 2015 eu fiz o curso da Cloudera de Spark Developer, na empresa paulista Semantix. Com esse excelente curso, o sentimento imediato foi: “eu vi o futuro: chama-se Spark”. Apliquei tudo que aprendi na minha turma de Big Data Developer da UFRJ de  2015_1, com cerca de 25 alunos. Fizemos excelentes trabalhos com Spark. Agora vendo o Spark Summit Europa, a mensagem é clara: “está confirmado: o futuro definitivamente é Spark, sendo esse já o presente para muitas empresas e pessoas”. Com esse post, pretendo reportar algumas passagens do Summit, bem como algumas reflexões pessoais.
  • A escala de adoção de Spark é muito impressionante sob qualquer perspectiva que se observe. A velocidade explosiva de incorporação de novidades é possível com tecnologia de informação, devido à natureza imaterial com que se trabalha. O efeito combinado da genialidade que começou com a tese de doutorado de Matei Zaharia, com a visão empresarial de Ion Stoica, CEO da Databricks está materializando a revolução. Partindo da ideia da tese do Zaharia, agora apoiado na Databricks por um time de gente brilhante, o Spark segue sendo aperfeiçoado rapidamente, sendo tudo disponibilizado de forma Open Source. Eu conversei casualmente com Ion Stoica (o Summit serve inclusive para permitir essas coisas); ele fizera na sua palestra alguns minutos antes da conversa comigo, algumas considerações sobre como tecnologias são incorporadas pela sociedade. Eu comentei que o Google chegou atrasado no mercado de mobile, e que conseguiu – com um modelo Open Source bem suportado por um time brilhante – fazer o Android vencer os concorrentes e ficar com a fatia do leão no mercado de mobile. O Ion Stoica abriu um sorriso, e disse que ele adora essa analogia, e que com certeza deseja que o mesmo ocorra com Spark. E está ocorrendo!
  • Em seguidas palestras, empresas importantes reportaram como trabalham com problemas reais relacionados a Big Data, e como Spark foi usado para resolve-los. Em uma dessas palestras, Anjul Bhambhri, Vice President of Product Development, Big Data and Analytics Platform, da IBM, repetiu merecidos elogios ao Spark (assim como muitos no Summit). Afirmou também que o Spark é um “Analytics Operating System”, e que a IBM fez a opção estratégica de apostar e incentivar o uso de Spark. Já há vários projetos da IBM sendo feitos com Spark.
  • Spark é um pacote único que funciona muito bem para resolver o que se propõe, é particularmente bom para tratar conjuntos de dados de tamanho enorme, conecta-se com muitas fontes de dados, possui interface para algumas linguagens de programação das mais usadas pelas pessoas da área: atualmente incluindo Scala, Java, Python e R. Spark funciona em vários ambientes (inclusive Windows, o que muitos achavam que não ia acontecer), sendo que a combinação de Spark com cloud (aluguel de datacenter com recursos que permitem automatizar o comando do aluguel por software, tendo a Amazon como empresa líder) torna o uso de Spark extremamente fácil.
Eu comecei a escrever esse post estando hospedado em uma residência de Amsterdam, refletindo sobre o significado de tudo o que vi no Spark Summit. Diga-se de passagem, o mecanismo que viabilizou eu estar hospedado em uma residência, e não num hotel como seria mais tradicional, é por estar usando o sistema Airbnb. Eu pessoalmente gosto muito de Airbnb, sendo que esse sistema é outra dessas novidades muito impactantes da tecnologia de informação nas nossas vidas. Voltemos para as reflexões. No Summit há sempre um local para estandes de patrocinadores, que são empresas divulgando seus produtos. É muito bom conversar com as pessoas das empresas. Eu abordei em conversas com várias pessoas um tema que me interessa muito: estratégia empresarial, isso é, planos empresariais de longo prazo. Como se sabe bem, uma empresa precisa ter bem claro para si mesmo e para o mercado o significado de sua existência. A empresa existe porque executa sua missão. Se a missão não existe mais, a empresa precisa encontrar outra missão, ou deixa de existir. Conversando com o pessoal de uma dessas empresas (MAPR), eu ouvi uma frase interessante: “Hadoop is loosing his job”. Hadoop, para quem não sabe, é a primeira geração de tecnologia Open Source para Big Data. Quando comparado com Spark, Hadoop parece complicado demais, sem falar no problema de desempenho de execução (Spark é superior). Quando Hadoop era a única alternativa para Big Data, e se necessitava que alguma tecnologia tratasse os volumes enormes de dados que se produzia, criou-se um ambiente empresarial para dar suporte a Hadoop. Muitos empregos bons, incluindo engenheiros de software, suporte e outros, foram criados no contexto de dar suporte para Hadoop, que por sua complexidade de fato requer muito suporte. Tudo isso custa um preço que os clientes pagavam para ter acesso ao desempenho superior que a tecnologia de Big Data proporcionava. Mas agora tudo isso está sob forte transformação. Spark incorpora tudo de forma mais simples, mais elegante, mais eficaz e com desempenho superior. Hadoop está perdendo o emprego, como disse o pessoal da MAPR. A filosofia Open Source está completamente implantada. Há tutoriais e fóruns por toda parte.

Convido o leitor a especular comigo as principais características do ambiente profissional de tecnologia de informação que está sendo moldado, considerando as tendências que descrevi. Não se esqueça, caro leitor, que nossa espécie humana tem instinto egoísta. Muito pouca gente compra um produto de uma empresa pensando no sentimento do dono da empresa ou de seu funcionário. Quem compra pensa em si mesmo. Se Spark simplificou tudo, se a necessidade de suporte foi muito reduzida, bom para o consumidor (ou cliente), que poderá usar esses serviços pagando pouco (ou nada, se souber usar). Mas resta a ser definido qual o papel do profissional de tecnologia de informação.

Relembremos um aspecto da história. Os computadores de grande porte eram terrivelmente complexos de serem operados. Havia operadores contratados (gente treinada) para fazer aquilo funcionar. Hoje os computadores de grande porte que ainda existem são muito mais fáceis de se operar, e uma parte enorme do serviço de processamento é feito em computadores pessoais, com algum sistema operacional que espera-se ser suficientemente simples para que muitas pessoas consigam opera-lo sem precisar contratar suporte. Resultado: hoje usamos muito intensamente o processamento digital, e usa-se relativamente pouco suporte contratado; isso se deve ao efeito combinado de os sistemas terem ficado mais simples e de muita gente ter aprendido como usar os tais sistemas.

Concluo esse post tentando fazer senso de dessas tendências para definir as qualidades do profissional de tecnologia de informação valorizado no futuro.
  • Big Data é absolutamente importante, sendo que Spark vai ser (ou já é) a tecnologia central para resolver os problemas nessa área. Portanto, aprender os problemas clássicos de Big Data e como resolve-los com Spark é uma das grandes habilidades valorizadas.
  • Percebo que aumenta a importância de conhecimento de matemática e estatística. Muitos dos problemas que se deseja tratar estão relacionados a uma formulação matemática bem-feita. O computador não erra as contas. Mas quando se o programa erradamente, os resultados ficam errados. Interpretar dados erradamente, ou programar o computador para explorar uma quantidade exageradamente grande de possibilidades são outros erros comuns. Para resolver tudo isso, o profissional deve buscar uma boa formação em matemática.
  • O idioma inglês é claramente central, pois mais que nunca tudo está sendo feito de forma colaborativa. Há códigos fonte, tutoriais e blogs por toda parte, sendo a maior e melhor parte em inglês.
  • Outra característica é a meritocracia. No Summit pode-se var todo tipo de gente – altos, baixos, gordos, magros, todas as raças humanas, de todas as cores que pode haver na pele. A cultura da meritocracia é muito compatível com a do liberalismo econômico, que presa o lucro como recompensa para o esforço individual. Curiosamente a mesma visão de liberalismo econômico é quase sempre associada também ao culto a propriedade privada. Mas a ênfase enorme que se está dando ao compartilhamento de tudo o que se tem é em boa parte uma visão oposta.
  • O tempo está na essência de tudo. Embora a Internet esteja abarrotada de material, faz muito sentido fazer o que eu fiz: pagar para aprender mais rápido; igualmente importante é criar laços com a comunidade de gente que usa essa mesma tecnologia.
É preciso que se diga: vi muitas empresas no Summit que apesar de tentarem se diferenciar, eram no fundo parecidas. Eram empresas de suporte, treinamento e consultoria de Big Data, com especialidade em Spark. Essa parece ser a direção para onde todo mundo está indo, inclusive eu. Todos nós precisamos lutar para ter um diferencial, e precisamos também conseguir vender alguma coisa para alguém. Para que se venda, é preciso conseguir fazer algo valioso para o cliente. Quem deseja atuar como consultor, deve ter experiência comprovada, talento, tempo, habilidade para montar times se necessário, capacidade e visão empreendedora, entre outras coisas. Ajuda muito ter boa formação geral, especialmente em matemática, boa agilidade mental para ler rapidamente e fazer senso útil de toneladas de blogs e tutoriais, para transformar tudo isso em valor para clientes (pessoas e empresas) reais. É preciso entender REALMENTE o cliente deseja, e eventualmente montar um serviço para ser vendido para esse cliente. O mundo atual, está repleto de problemas interessantes que podem ser resolvidos com tecnologia de Big Data (Spark). Vamos construir esse mundo. O momento é esse.

--------------------------------------------------------------------------------
Sergio Barbosa Villas-Boas (sbVB), Ph.D.
software development, Big Data, cloud, mobile, IoT, HPC, optimization
sbvillasboas@gmail.com, sbvb@poli.ufrj.br
Skype: sbvbsbvb
http://www.sbVB.com.br
https://www.linkedin.com/in/sbvbsbvb
+55-21-97699-1337