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

Computação na escala da web com ferramentas ope...

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

Davi Reis
Founder @Worldsense

Avatar for Big Data Week São Paulo

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