Benjamin Bengfort Jenny Kim Novatec Authorized Portuguese translation of the English edition of Data Analytics with Hadoop, ISBN 9781491913703 © 2016 Benjamin Bengfort, Jenny Kim. This translation is published and sold by permission of O'Reilly Media, Inc., the owner of all rights to publish and sell the same. Tradução em português autorizada da edição em inglês da obra Data Analytics with Hadoop, ISBN 9781491913703 © 2016 Benjamin Bengfort, Jenny Kim. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra. © Novatec Editora Ltda. 2016. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates PY20160831 Tradução: Lúcia A. Kinoshita Revisão gramatical: Smirna Cavalheiro Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-521-9 Histórico de impressões: Setembro/2016 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 – São Paulo, SP – Brasil Tel.: +55 11 2959-6529 Email: [email protected] Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec Sumário Prefácio................................................................................................................................... 9 Parte I ■ Introdução à computação distribuída...................................................... 21 Capítulo 1 ■ A era do produto de dados....................................................................................22 O que é um produto de dados?.............................................................................. 23 Desenvolvendo produtos de dados em escala com o Hadoop.................................. 25 Tirando proveito de conjuntos grandes de dados.................................................26 Hadoop para produtos de dados.........................................................................27 O pipeline de ciência de dados e o ecossistema do Hadoop......................................29 Fluxos de trabalho para big data.........................................................................30 Conclusão..............................................................................................................32 Capítulo 2 ■ Um sistema operacional para big data..................................................................33 Conceitos básicos...................................................................................................34 Arquitetura do Hadoop..........................................................................................36 Um cluster Hadoop............................................................................................38 HDFS................................................................................................................41 YARN.............................................................................................................. 44 Trabalhando com um sistema de arquivos distribuído............................................ 44 Operações básicas no sistema de arquivos...........................................................45 Permissões de arquivos no HDFS.......................................................................48 Outras interfaces do HDFS................................................................................49 Trabalhando com computação distribuída..............................................................50 MapReduce: um modelo de programação funcional............................................51 MapReduce: implementado em um cluster..........................................................54 Além de um mapeamento e uma redução: encadeamento de jobs.........................62 Submetendo um job MapReduce ao YARN............................................................ 64 Conclusão..............................................................................................................66 5 6 Analítica de dados com Hadoop Capítulo 3 ■ Um framework para Python e Hadoop Streaming..................................................68 Hadoop Streaming.................................................................................................69 Processamento de dados CSV com o Streaming..................................................73 Executando jobs de Streaming............................................................................78 Um framework para MapReduce com Python.........................................................81 Contando bigramas...........................................................................................85 Outros frameworks............................................................................................89 MapReduce avançado............................................................................................91 Combinadores...................................................................................................91 Particionadores..................................................................................................92 Encadeamento de jobs........................................................................................93 Conclusão..............................................................................................................98 Capítulo 4 ■ Processamento em memória com o Spark.............................................................99 Básico sobre o Spark............................................................................................101 A pilha do Spark..............................................................................................103 Conjuntos de dados distribuídos resilientes......................................................105 Programando com RDDs.................................................................................107 Spark interativo usando PySpark.......................................................................... 111 Escrevendo aplicações Spark................................................................................ 114 Visualizando atrasos das companhias aéreas com o Spark................................. 116 Conclusão............................................................................................................123 Capítulo 5 ■ Análise distribuída e padrões..............................................................................125 Processando com chaves......................................................................................127 Chaves compostas...........................................................................................129 Padrões para espaço de chaves..........................................................................133 Pares versus faixas............................................................................................139 Padrões de projeto................................................................................................ 143 Sumarização....................................................................................................144 Indexação........................................................................................................150 Filtragem.........................................................................................................159 Em direção à analítica final..................................................................................167 Adequando um modelo....................................................................................168 Validando modelos..........................................................................................170 Conclusão............................................................................................................172 Sumário 7 Parte II ■ Fluxos de trabalho e ferramentas para ciência de big data.....................174 Capítulo 6 ■ Mineração de dados e armazém de dados............................................................ 175 Consultas de dados estruturados com o Hive........................................................ 176 A interface de linha de comando (CLI) do Hive.................................................177 Hive Query Language (HQL)...........................................................................179 Análise de dados com o Hive............................................................................185 HBase..................................................................................................................192 Bancos de dados NoSQL e orientados a colunas................................................193 Analítica em tempo real com o HBase..............................................................196 Conclusão............................................................................................................206 Capítulo 7 ■ Ingestão de dados..............................................................................................207 Importando dados relacionais com o Sqoop..........................................................208 Importando do MySQL para o HDFS...............................................................209 Importando do MySQL para o Hive.................................................................212 Importando do MySQL para o HBase............................................................... 214 Ingestão de dados de streaming com o Flume........................................................ 217 Fluxos de dados do Flume................................................................................ 217 Ingestão de dados de impressão de produtos com o Flume................................221 Conclusão............................................................................................................226 Capítulo 8 ■ Analítica com APIs de alto nível...........................................................................228 Pig ......................................................................................................................229 Pig Latin..........................................................................................................230 Tipos de dados.................................................................................................236 Operadores relacionais.....................................................................................236 Funções definidas pelo usuário.........................................................................237 Concluindo......................................................................................................239 APIs de nível mais alto do Spark...........................................................................239 Spark SQL....................................................................................................... 241 DataFrames.....................................................................................................245 Conclusão............................................................................................................252 Capítulo 9 ■ Aprendizado de máquina....................................................................................253 Aprendizado de máquina escalável com o Spark....................................................253 Filtragem colaborativa......................................................................................256 Classificação....................................................................................................264 Clustering........................................................................................................267 Conclusão............................................................................................................271 8 Analítica de dados com Hadoop Capítulo 10 ■ Resumo: fazendo ciência de dados distribuída...................................................272 Ciclo de vida dos produtos de dados..................................................................... 274 Lagos de dados................................................................................................275 Ingestão de dados............................................................................................278 Repositórios de dados para processamento.......................................................281 Ciclo de vida do aprendizado de máquina.............................................................283 Conclusão............................................................................................................286 Apêndice A ■ Criando um ambiente de desenvolvimento pseudodistribuído com o Hadoop.....288 Início rápido........................................................................................................288 Configurando o Linux.........................................................................................289 Criando um usuário Hadoop...........................................................................289 Configurando o SSH........................................................................................290 Instalando Java................................................................................................291 Desabilitando o IPv6........................................................................................291 Instalando o Hadoop...........................................................................................292 Desempacotando.............................................................................................293 Ambiente.........................................................................................................294 Configuração do Hadoop.................................................................................295 Formatando o Namenode.................................................................................297 Iniciando o Hadoop.........................................................................................298 Reiniciando o Hadoop.....................................................................................298 Apêndice B ■ Instalando os produtos do ecossistema do Hadoop.............................................300 Pacotes de distribuição do Hadoop.......................................................................300 Instalação dos produtos do ecossistema do Apache Hadoop por conta própria.......301 Instalação básica e passos para configuração.....................................................301 Configurações específicas do Sqoop.................................................................303 Configurações específicas do Hive....................................................................304 Configurações específicas do HBase.................................................................306 Instalando o Spark...........................................................................................309 Glossário............................................................................................................................... 313