Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Computação na escala da web com ferramentas open source

Computação na escala da web com ferramentas open source

Davi Reis
Founder @Worldsense

Big Data Week São Paulo

November 23, 2015
Tweet

More Decks by Big Data Week São Paulo

Other Decks in Technology

Transcript

  1. - 15 anos de C++, e um pouquinho de tudo

    - Alguns artigos, algumas patentes - https://github.com/bonitao/cmph - Foco em análise de texto
  2. A idéia • Palavras são pixels ou ondas sonoras organizadas

    de uma forma particular • A linguagem é uma convenção de símbolos para representar conceitos compartilhados
  3. Palavras • 1.5 bilhões de páginas web • 40 Terabytes

    • Muitos gzipões • Acesso gratuito na AWS • Código de exemplo (pouco robusto) • 170 GB pt-BR (limpo, comprimido) • 10.5M documentos
  4. Máquinas • Alocação por leilão (spot prices) • Cluster típico:

    5 m4.2xlarge - 40 cores, 160GB RAM • $0.50 por hora • Várias configurações
  5. Extrair, transformar, carregar • Programação distribuída ◦ Spark • Dados

    estruturados, serialização ◦ Apache Thrift • Organização em colunas ◦ Apache Parquet • Armazenamento distribuído ◦ Amazon S3(a) • Scala - java com sintaxe decente e muito mais • Paradigma functional: imutabilidade / monads
  6. spark: build: dockers/spark entrypoint: [ "/setup_dns_and.sh", "/spark_dispatch.sh" environment: - SPARK_LOCAL_DIRS=/tmp/spark.local.dir

    # standalone - CLUSTER_MASTER # should be dns name - CLUSTER_NODE # should be dns name net: host privileged: true ports: # https://spark.apache.org/docs/latest/security.html#configuring-ports-for-network-security # Keep in sync with spark-env.sh and spark-defaults.conf - 4040:4040 # spark.ui.port - 7077:7077 # SPARK_MASTER_PORT - 8080:8080 # spark.master.ui.port ... Subindo o spark
  7. Rodando o spark export CLUSTER_MASTER=$(docker-machine ssh $(vbox_master) "wget -q -O

    - http://169. 254.169.254/latest/meta-data/public-hostname") docker run --privileged --net host --rm \ ... 1_spark /usr/local/spark/bin/spark-shell --master "spark://$CLUSTER_MASTER:7077" \ --jars /jars/deps.jar,/jars/worldsense.jar 206M 1.2M • Mundo: parse html, deteção de idioma ~ $80 • Brasil: mesmo + tokenização ~ $0.1
  8. Desenvolvimento • Github - $25 • Intellij CE - $0

    • Maven/Failsafe - $0 • Teamcity - ~$20 • Dockerhub - $0
  9. Rodando o spark • Mundo: parse html, deteção de idioma

    scala> rdd.map(_.body.size.toLong).reduce(_+_) res2: Long = 12974194860 (~13 bilhões) • Brasil: mesmo + tokenização
  10. Ponderando as palavras • 13 bilhões de unigramas • 4.5

    bilhões unigramas únicos • >100 bilhões de 8-gramas únicos • 40 bytes por string :-) Karen Spark Jones
  11. DevOps • Docker • Grafana/Graphite/Metrics • Elasticsearch/Logstash/Kibana • Collectd/consul/dnsmasq Bigdata

    Pipeline Serving system Efêmero Persistente Rajada Contínuo Investigativo Anomalias
  12. DevOps • Lambuja: qual máquina da AWS funciona melhor para

    seu load • Algoritmo/Bloom Filter • StringBuffer + while • = 100x mais veloz
  13. Conclusões • Um pouco de ciência e intuição • Ferramentas

    e práticas adequadas • Acesso a dados em volume • Teoria + prática