Ecossistema Hadoop no Magazine Luiza

266 visualizações

Publicada em

Nesta apresentação é demonstrado alguns recursos disponíveis num cluster Hadoop, bem como os principais componentes do ecossistema utilizado no Magazine Luiza. Além disso, temos uma comparação com grandes nomes do mercado que também utilizam esta tecnologia.

Publicada em: Tecnologia
0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
266
No SlideShare
0
A partir de incorporações
0
Número de incorporações
8
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Resolve problema de leitura sequencial e aleatório (100MB/s) de um disco rígido, distribuindo partes do arquivo em várias máquinas
    Taxa de transferência dos discos atuais é muito maior que a velocidade de busca
    B-Trees funcionam bem até os gigabytes nessa taxa de transferência
  • HDDs tem normalmente blocos de 512 bytes
    Ext4 tem blocos de 4 Kb
    HDFS tem blocos de 128 Mb
  • Suporta:
    S3
    FTP
    RAID distribuído
    Local
    WebHDFS (REST)
  • CERN - 30 PB/dia
  • Ecossistema Hadoop no Magazine Luiza

    1. 1. EcossistemaHadoop
    2. 2. Motivações
    3. 3. Játentouprocessarumarquivo-textocom1TB?
    4. 4. ODougCuttingtentou...
    5. 5. OqueéHadoop?
    6. 6. Umsistemadearquivosdistribuído ● HDFS (Hadoop Distributed File System) ○ Baseado em blocos gigantes ○ Alta disponibilidade ○ Quase POSIX ○ Fricção baixa para usuários *nix
    7. 7. HDFSéumFS >hdfs dfs -ls -h /data/customers/customers_joined Found 3 items -rw-r--r-- 4 hadoop supergroup 0 2016-05-18 21:37 /data/customers/customers_joined/_SUCCESS drwxr-xr-x - hadoop supergroup 0 2016-05-18 22:43 /data/customers/customers_joined/output -rw-r--r-- 4 hadoop supergroup 380.1 M 2016-05-18 21:37 /data/customers/customers_joined/part-r-00000.lzo >hdfs fsck /data/customers/customers_joined/part-r-00000.lzo -files -blocks 0. BP-351819023-10.113.142.94-1441385804011:blk_1096286844_357944571 len=134217728 repl=4 1. BP-351819023-10.113.142.94-1441385804011:blk_1096286845_357945328 len=134217728 repl=4 2. BP-351819023-10.113.142.94-1441385804011:blk_1096286846_357946005 len=130107025 repl=4 The filesystem under path '/data/customers/customers_joined/part-r-00000.lzo' is HEALTHY
    8. 8. Umaplataforma deprocessamento distribuído YARN (Yet Another Resource Negotiator) Distribui aplicações MapReduce Divide processamento para os nós Gerencia recursos
    9. 9. Hadoopéumaplataformafacilmente escaláveldearmazenamentoe processamentodistribuído, agnósticoaotipodedado,hardwaree sistemaoperacional.
    10. 10. Topologia
    11. 11. Namenode Secondaries Secondaries Datanodes H D F S
    12. 12. ResourceManager Secondaries Secondaries NodeManager Y A R N
    13. 13. Localidade D=2 D=0 D=4 D=6
    14. 14. MapReduce
    15. 15. MapReducecomPYdoop import pydoop.mapreduce.api as api import pydoop.mapreduce.pipes as pp class Mapper(api.Mapper): def map(self, context): words = context.value.split() for w in words: context.emit(w, 1) class Reducer(api.Reducer): def reduce(self, context): s = sum(context.values) context.emit(context.key, s) def __main__(): pp.run_task(pp.Factory(Mapper, Reducer))
    16. 16. Ecossistema
    17. 17. BigDataLandscape2016 mattturck.com/2016/02/01/big-data-landscape
    18. 18. Hive Criado pelo Facebook Expõe MapReduce como SQL Mapeia arquivos gigantescos Suporta compressão (particionável) Recursos e síntaxe similares ao MySQL Analítico
    19. 19. Hiveemação hive> select keyword, count(1) total from searches group by keyword order by total desc limit 10; Hadoop job information for Stage-1: number of mappers: 70; number of reducers: 2 2016-05-17 11:39:27,729 Stage-1 map = 0%, reduce = 0% 2016-05-17 11:40:12,255 Stage-1 map = 100%, reduce = 100%, Cumulative CPU 406.39 sec OK sofa 138361 tablet 125837 fogao 106451 geladeira 99641 notebook 92787 celular 92195 tv 87594 iphone 82045 microondas 75806 Time taken: 116.755 seconds, Fetched: 10 row(s)
    20. 20. Flume Coletor/Agregador/Streamer/Sinker Ingestor de tail -f distribuído Agregador de logs Compressão do stream Requisições HTTP Sinker para HBase, HDFS, Avro,
    21. 21. BuscasnoFlume # Sources search_stream.sources = SearchStream search_stream.sources.SearchStream.type = http search_stream.sources.SearchStream.handler = org.apache.flume.source.http.JSONHandler # Channels search_stream.channels = FileChannel search_stream.channels.FileChannel.type = file search_stream.channels.FileChannel.dataDirs = /mnt/flume/data # Sinks search_stream.sinks = HDFSSink search_stream.sinks.HDFSSink.type = hdfs search_stream.sinks.HDFSSink.hdfs.filePrefix = search search_stream.sinks.HDFSSink.hdfs.path = /flume/events/search search_stream.sinks.HDFSSink.hdfs.fileType = CompressedStream search_stream.sinks.HDFSSink.hdfs.codeC = lzop # Tie everything together search_stream.sources.SearchStream.channels = FileChannel search_stream.sinks.HDFSSink.channel = FileChannel
    22. 22. Impala Usa engine própria (MPP) Usa metadados do Hive Aproveita-se bem do Apache Parquet Bilhões de linhas em pouquíssimos segundos Performance linear ao tamanho do cluster
    23. 23. Impalaesuasbilhõesdelinhasempoucossegundos impala-shell> select count(1) total from price_changes; +------------+ | total | +------------+ | 2127126382 | +------------+ Returned 1 row(s) in 2.11s impala-shell> select status, count(1) total from price_changes group by status; +-----------+------------+ | status | total | +-----------+------------+ | 0 | 2119762471 | | 1 | 7363911 | +-----------+------------+ Returned 2 row(s) in 2.82s
    24. 24. HBase Baseado no Google BigTable Colunar (dinâmico): trilhões de colunas e linhas Acesso aleatório e em tempo-real Divide chaves em regiões, que estão em diferentes máquinas
    25. 25. ClientenoHBase hbase> get customers, '40019869212' COLUMN CELL cliente:nomcli timestamp=1462020386697, value=NELSON FORTE cliente:numdoc timestamp=1462020386697, value=598745328 cliente:origem timestamp=1462020386697, value=ERP cliente:qtcompras timestamp=1462020386697, value=3 cliente:sexo timestamp=1462020386697, value=M 1 row(s) in 0.0910 seconds
    26. 26. Apache Pig
    27. 27. Pig Pig Latin Simplicidade nas expressões Constrói resultados analíticos com MapReduce ETL sobre grandes dados Extensível (Java, Python, Ruby,
    28. 28. Relacionandobasesdecliente grunt> set output.compression.enable true; grunt> set output.compression.codec com.hadoop.compression.lzo.LzopCodec; erp = LOAD 'hbase://customers_erp' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('client:customer_id', '- loadKey=true') AS (id:bytearray, name_erp:chararray); site = LOAD 'hbase://customers_site' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('client:name', '-loadKey=true') AS (id:bytearray, name_site:chararray); joined = JOIN erp BY id, site BY id; stripped = FOREACH joined GENERATE name_erp, LOWER(name_erp) AS lowered_name_erp, name_site, LOWER(name_site) AS lowered_name_site; rmf /data/customers/joined STORE stripped INTO '/data/customers/joined' USING PigStorage('|');
    29. 29. Sqoop Importador de dados estruturados pro HDFS e vice-versa Distribui a importação pelas máquinas (via MapReduce) Configuração simples Servidor de Jobs
    30. 30. Importandopushes sqoop job --create push_notification -- import --connect jdbc:mysql://server/push --username importer --password-file file:///.password_file --split-by created_at --num-mappers 4 --compress --compression-codec com.hadoop.compression.lzo.LzopCodec --delete-target-dir --target-dir /tmp/push --null-string 'N' --null-non-string 'N' --as-textfile --outdir /sqoop-scripts/src --bindir /sqoop-scripts/jar --direct --query 'select push_id, created_at, email, sent + 0 from pushes where $CONDITIONS'
    31. 31. Quemusae contribui?
    32. 32. https://wiki.apache.org/hadoop/PoweredBy 2000+nós|8800cores|60PB Hive+Presto Cassandra->HDFS(Análise) “Novo”LZO+ElephantBird 1000+nós Genie+Lipstick 900+nós Luigi+Snakebite
    33. 33. 200+nós|~1PB/dia (metadados) ~1GB/dia Dadosclimáticos 100+nós 1400+nós
    34. 34. 10000+nós|100000+ cores 72PBRAM
    35. 35. 6nós|56cores|458GBRAM|30TB 1000jobs/dia
    36. 36. Perguntas?
    37. 37. Obrigado!

    ×