SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
Hadoop y Hive en
                                 AWS
                    Cómo analizar terabytes de datos y no
                            morir en el intento




domingo 4 de noviembre de 2012
Quién soy yo?


                 • Ezequiel Golub
                 • Desarrollador en Smowtion
                 • Hace más de un año que
                         implementamos Hadoop




domingo 4 de noviembre de 2012
Qué es Hadoop?

                 • Framework para aplicaciones
                       distribuidas en miles de nodos

                 • Ahora familia de productos,
                       pero en su core son 2:

                        • HDFS
                        • Map/Reduce
                 • Proyecto de apache.org


domingo 4 de noviembre de 2012
Limitaciones de RDBMS
                 • Datasets de petabytes
                 • no escalan horizontalmente
                 • Escalar horizontalmente = chau ACID
                 • Particionar y shardear es dificil.
                 • Rendimiento de lecturas o escrituras:
                         Elegí una.

                 • Usar hardware especializado = $$$!!

domingo 4 de noviembre de 2012
Por qué Hadoop?
                 • Da respuesta las limitaciones de las RDBMS
                 • Escalabilidad horizontal
                 • Confiabilidad
                 • Apoyo de comunidad
                 • Map/Reduce
                 • Orientado a procesos batch para datos
                         “grandes”
                 • AWS

domingo 4 de noviembre de 2012
Quienes lo usan?
domingo 4 de noviembre de 2012
Cuándo usar Hadoop?
                 • Demasiados datos para que entren en
                         algun tipo de datastore comodamente

                 • Datos desestructurados
                 • Y necesitas analizarlos!
                 • Y necesitas alta disponibilidad!
                 • Suficientes datos para que analizarlos
                         en una sola maquina sea dificil

domingo 4 de noviembre de 2012
HDFS

                 • Sistema de archivos distribuido,
                         redundante y con alta disponibilidad.
                 • Soporta archivos muy grandes.
                 • Pensado para commodity hardware
                 • Acceso streaming de baja latencia y
                         alta transferencia.


domingo 4 de noviembre de 2012
HDFS - Ventajas

                 • Tolerancia a los fallos
                 • Autoregenerativo
                 • Escalable
                 • Confiabilidad
                 • Soporte


domingo 4 de noviembre de 2012
Map/Reduce
                 • Paradigma de programación distribuida
                 • Basada en un paper de Google (http://bit.ly/
                         gXZbsk)

                 • Modelada a partir de las ideas de programación
                         funcional
                 • Distribuible en N nodos
                 • map() -> reduce()
                 • La etapa de reduce se inicia cuando todos los
                         mappers terminan.


domingo 4 de noviembre de 2012
Map/Reduce

                 • Dos pasos secuenciales
                        • Map: Toma todas las lineas de un
                                 input, y por cada una, las procesa y
                                 devuelve un par de key valor

                        • Reduce: Recibe secuencialmente un
                                 key valor, los procesa y emite un
                                 resultado (ej: otro k-v)


domingo 4 de noviembre de 2012
wc.py
                             M/R: WC en Python
        import hadoopy                                      ** usando el
                                                            modulo Hadoopy
                                                            para usar python
        def mapper(key, value):
                                                            con Hadoop!
            for word in value.split():
                yield word, 1

        def reducer(key, values):
            accum = 0
            for count in values:
                accum += int(count)
            yield key, accum

        if __name__ == "__main__":
            hadoopy.run(mapper, reducer, doc=__doc__)
      Probandolo localmente!
        $ echo "a b a a b c" | python wc.py map | sort | python wc.py
        reduce
        a    3
        b    2
        c    1
domingo 4 de noviembre de 2012
Ejemplo: wordcount
                                           {‘foo’:12,
              <arch1.part1>      mapper     ‘bar’:13,
                                           ‘baz’:19}
                                                                  {‘foo’:[12,33,1,55]}
                                 count()
                                                                   Reducer

                                                                    sum()
                                           {‘foo’:33,
              <arch1.part2>      mapper     ‘bar’:23,
                                           ‘baz’:42}              {‘bar’:[13,23,0,43]}
                                 count()                Ordenar
                                                                                         {‘foo’:101,
 Muchos                                                    y       Reducer                ‘bar’:79,
 archivos                                               agrupar                          ‘baz’:218}
                                                        por key     sum()
                                            {‘foo’:1,
             <arch2.parte1>      mapper      ‘bar’:0,
                                           ‘baz’:99}
                                                                  {‘baz’:[19,42,99,65]}
                                 count()
                                                                   Reducer

                                                                    sum()
                                           {‘foo’:55,
             <arch2.parte2>      mapper     ‘bar’:43,
                                           ‘baz’:65}
                                 count()



domingo 4 de noviembre de 2012
M/R en Hadoop
                 • Las tareas de M/R son entregadas como un “job”
                 • Los “jobs” se asignan a una cola especifica de
                         trabajo

                 • Los jobs son “rack-aware”: aprovecharse del
                         “data locality”
                 • Cada “job” es divido en N “tasks”
                 • Streaming: No usar Java para M/R
                 • Las tareas que fallen son reiniciadas
                         automaticamente.


domingo 4 de noviembre de 2012
M/R: Implementación
                 • M/R es excelente para los problemas
                         donde los ‘sub-problemas’ no son
                         interdependientes

                 • Nada se comparte entre mappers y
                         reducers, ni siquiera si corren en el
                         mismo nodo

                 • X ej: La salida de un mapper no puede
                         depender de la salida o comunicación con
                         otro mapper


domingo 4 de noviembre de 2012
Amazon Web Services

                 • Crear servidores virtuales
                         dinamicamente.
                 • Pagas solo por las horas que usas
                 • Podes ‘apagar’ y ‘prender’ maquinas
                         en cualquier momento



domingo 4 de noviembre de 2012
AWS: Servicios clave


                 • EC2: Servidores virtuales
                 • S3: Servicio de data-storage
                 • EMR: Hadoop on demand



domingo 4 de noviembre de 2012
Elastic Map Reduce

                 • Proveen un cluster configurado con
                         los ultimos patches + un poco de magia
                         extra

                 • Interactua nativamente con S3
                 • Podes agregar o sacar servers del
                         cluster dinamicamente



domingo 4 de noviembre de 2012
Elastic Map Reduce

                 • Al crear el server, se lo puede acceder
                         igual que cualquier otro server virtual

                 • Bootstrap actions permiten
                         customizar el master o slaves

                 • Los cluster pueden ser persistente o
                         efimeros

                 • 2 instance groups: CORE y TASK

domingo 4 de noviembre de 2012
domingo 4 de noviembre de 2012
domingo 4 de noviembre de 2012
domingo 4 de noviembre de 2012
domingo 4 de noviembre de 2012
domingo 4 de noviembre de 2012
domingo 4 de noviembre de 2012
Elastic Map Reduce

          Ejemplos desde la consola:
          # Bajar el instance group TASK a cero instancias

          shell# elastic-mapreduce
                   --jobflow j-XXXXX
                   --modify-instance-group TASK
                   --instance-count 0




domingo 4 de noviembre de 2012
Hive: Qué es?

                 • SQL sobre hadoop
                 • Traducir Pseudosql a tareas Map/Reduce
                 • Maneja datos a escala “Hadoop”
                 • Puede usar logfiles como source data
                 • WC en Hive:
                 • SELECT COUNT(*) as freq, word FROM words GROUP by word;



domingo 4 de noviembre de 2012
Access log - crear tabla
                CREATE EXTERNAL TABLE access_log(
                ip STRING, host STRING, finishtime STRING, uri STRING, return_code
                STRING,
                bytes STRING, referrer STRING, user_agent STRING, quality STRING
                )
                comment 'data logs uploaded from servers'
                PARTITIONED by (
                  year string,
                  month string,
                  day string,
                  hour string,
                  minute string)
                ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
                WITH SERDEPROPERTIES (
                  "input.regex" = '(.+?) (.+?) - (.+) "(.+?)" ([0-9]+) ([0-9]+)
                "(.+)" "(.+)" "(.+)"',
                  "output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s
                %9$s"
                )
                STORED AS TEXTFILE
                LOCATION 's3n://somebucket/acceslog_dir/';


domingo 4 de noviembre de 2012
Ejemplo con CSV
              CREATE EXTERNAL TABLE page_view(
                   viewTime INT, userid BIGINT,
                   url STRING, referrer_url STRING,
                   ip STRING COMMENT 'IP Address of the User',
                   country STRING COMMENT 'country of origination'
              )
              ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
              STORED AS TEXTFILE
              LOCATION 's3n://somebucket/page_views';




domingo 4 de noviembre de 2012
Queries
                # Conteo de hits x url para Nov 2012
                SELECT count(*) as count, uri FROM access_log
                WHERE year = 2012 and month = 11
                GROUP by uri ORDER by uri DESC;

                # subqueries
                # tablas: users, action_video y action_comment
                # salida: una lista con todas las acciones de todos los usuarios y
                sus fechas

                SELECT u.id, actions.name, actions.date
                    FROM (
                        SELECT av.uid AS uid, ‘video publicado’ as name
                        FROM action_video av
                        WHERE av.date = '2008-06-03'
                        UNION ALL
                        SELECT ac.uid AS uid, ‘comentario publicado’ as name
                        FROM action_comment ac
                        WHERE ac.date = '2008-06-03'
                     ) actions JOIN users u ON (u.id = actions.uid)

                # insertar la salida del query en s3
                INSERT OVERWRITE DIRECTORY ‘s3n://somebucket/somedir’
                SELECT * FROM access_log where uri = ‘http://example.com’

domingo 4 de noviembre de 2012
Limitaciones

                 • No implementa todo el SQL.
                 • Algunas cosas se hacen de manera
                         rara (group by)

                 • Miles de archivos de salida.
                 • Map/Reduce es inherementente lento
                 • Puede ser adictivo

domingo 4 de noviembre de 2012
Tips
                 • Particionar las tablas (s3://bucket/
                         access/y=2012/m=11/d=4/h=1)

                 • Crear sets de prueba con pocos datos
                 • Crear varias tablas para distintos
                         queries
                 • Tabla => Query => Tabla => Query
                 • Borrar los datos que no usas en S3!

domingo 4 de noviembre de 2012
Precios?

                 • Cluster tipico
                 • Master: small (u$s 0.09/hora) x 1
                 • Slaves: c1.medium u$s 0.2/hora x 2
                 • Total: u$s 0.49 x hora
                 • S3: u$s 0.125 x gb (muy aprox)


domingo 4 de noviembre de 2012
En Smowtion?
                 • 70 gb x dia entre datos propios y de
                         partners
                 • Hive funciona como datawarehouse y
                         como parte del pipeline de datos:




domingo 4 de noviembre de 2012
Cómo seguir?

                 • Cloudera.com
                 • Hadoop.apache.org
                 • http://developer.yahoo.com/hadoop/tutorial/
                 • http://aws.amazon.com/developertools/2264
                         (AWS command line Ruby Client)

                 • https://cwiki.apache.org/confluence/display/
                         Hive/LanguageManual (hive lang manual)


domingo 4 de noviembre de 2012
Preguntas?




                 • @ezegolub
                 • ezequiel.golub@gmail.com

domingo 4 de noviembre de 2012

Mais conteúdo relacionado

Destaque

Scaling Apache Storm - Strata + Hadoop World 2014
Scaling Apache Storm - Strata + Hadoop World 2014Scaling Apache Storm - Strata + Hadoop World 2014
Scaling Apache Storm - Strata + Hadoop World 2014P. Taylor Goetz
 
Storm: distributed and fault-tolerant realtime computation
Storm: distributed and fault-tolerant realtime computationStorm: distributed and fault-tolerant realtime computation
Storm: distributed and fault-tolerant realtime computationnathanmarz
 
Realtime Analytics with Storm and Hadoop
Realtime Analytics with Storm and HadoopRealtime Analytics with Storm and Hadoop
Realtime Analytics with Storm and HadoopDataWorks Summit
 
Apache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - VerisignApache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - VerisignMichael Noll
 
Hadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm ArchitectureHadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm ArchitectureP. Taylor Goetz
 

Destaque (6)

Scaling Apache Storm - Strata + Hadoop World 2014
Scaling Apache Storm - Strata + Hadoop World 2014Scaling Apache Storm - Strata + Hadoop World 2014
Scaling Apache Storm - Strata + Hadoop World 2014
 
Storm: distributed and fault-tolerant realtime computation
Storm: distributed and fault-tolerant realtime computationStorm: distributed and fault-tolerant realtime computation
Storm: distributed and fault-tolerant realtime computation
 
Realtime Analytics with Storm and Hadoop
Realtime Analytics with Storm and HadoopRealtime Analytics with Storm and Hadoop
Realtime Analytics with Storm and Hadoop
 
Yahoo compares Storm and Spark
Yahoo compares Storm and SparkYahoo compares Storm and Spark
Yahoo compares Storm and Spark
 
Apache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - VerisignApache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - Verisign
 
Hadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm ArchitectureHadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm Architecture
 

Semelhante a Emr hive barcamp 2012 (20)

Clase Hadoop
Clase HadoopClase Hadoop
Clase Hadoop
 
Hadoop barcamp 2011
Hadoop   barcamp 2011Hadoop   barcamp 2011
Hadoop barcamp 2011
 
Taller hadoop
Taller hadoopTaller hadoop
Taller hadoop
 
Hadoop en accion
Hadoop en accionHadoop en accion
Hadoop en accion
 
Hadoop en accion
Hadoop en accionHadoop en accion
Hadoop en accion
 
Spark Hands-on
Spark Hands-onSpark Hands-on
Spark Hands-on
 
Introducción a hadoop
Introducción a hadoopIntroducción a hadoop
Introducción a hadoop
 
Como de grandes son tus datos
Como de grandes son tus datosComo de grandes son tus datos
Como de grandes son tus datos
 
SolidQ Business Analytics Day | Como de grandes son tus datos
SolidQ Business Analytics Day | Como de grandes son tus datosSolidQ Business Analytics Day | Como de grandes son tus datos
SolidQ Business Analytics Day | Como de grandes son tus datos
 
Monta una Infraestructura para Big Data en tu Empresa
Monta una Infraestructura para Big Data en tu EmpresaMonta una Infraestructura para Big Data en tu Empresa
Monta una Infraestructura para Big Data en tu Empresa
 
Cloud computinglabra
Cloud computinglabraCloud computinglabra
Cloud computinglabra
 
Nosqlcp
NosqlcpNosqlcp
Nosqlcp
 
Nosqlcp
NosqlcpNosqlcp
Nosqlcp
 
Hadoop
HadoopHadoop
Hadoop
 
¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?¿Por que cambiar de Apache Hadoop a Apache Spark?
¿Por que cambiar de Apache Hadoop a Apache Spark?
 
Introducción a polybase en SQL Server
Introducción a polybase en SQL ServerIntroducción a polybase en SQL Server
Introducción a polybase en SQL Server
 
introduction to hadoop
introduction to hadoopintroduction to hadoop
introduction to hadoop
 
NoSQL, Mongo DB & Google Maps
NoSQL, Mongo DB & Google MapsNoSQL, Mongo DB & Google Maps
NoSQL, Mongo DB & Google Maps
 
Hadoop, Cloud y Spring
Hadoop, Cloud y Spring Hadoop, Cloud y Spring
Hadoop, Cloud y Spring
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db
 

Emr hive barcamp 2012

  • 1. Hadoop y Hive en AWS Cómo analizar terabytes de datos y no morir en el intento domingo 4 de noviembre de 2012
  • 2. Quién soy yo? • Ezequiel Golub • Desarrollador en Smowtion • Hace más de un año que implementamos Hadoop domingo 4 de noviembre de 2012
  • 3. Qué es Hadoop? • Framework para aplicaciones distribuidas en miles de nodos • Ahora familia de productos, pero en su core son 2: • HDFS • Map/Reduce • Proyecto de apache.org domingo 4 de noviembre de 2012
  • 4. Limitaciones de RDBMS • Datasets de petabytes • no escalan horizontalmente • Escalar horizontalmente = chau ACID • Particionar y shardear es dificil. • Rendimiento de lecturas o escrituras: Elegí una. • Usar hardware especializado = $$$!! domingo 4 de noviembre de 2012
  • 5. Por qué Hadoop? • Da respuesta las limitaciones de las RDBMS • Escalabilidad horizontal • Confiabilidad • Apoyo de comunidad • Map/Reduce • Orientado a procesos batch para datos “grandes” • AWS domingo 4 de noviembre de 2012
  • 6. Quienes lo usan? domingo 4 de noviembre de 2012
  • 7. Cuándo usar Hadoop? • Demasiados datos para que entren en algun tipo de datastore comodamente • Datos desestructurados • Y necesitas analizarlos! • Y necesitas alta disponibilidad! • Suficientes datos para que analizarlos en una sola maquina sea dificil domingo 4 de noviembre de 2012
  • 8. HDFS • Sistema de archivos distribuido, redundante y con alta disponibilidad. • Soporta archivos muy grandes. • Pensado para commodity hardware • Acceso streaming de baja latencia y alta transferencia. domingo 4 de noviembre de 2012
  • 9. HDFS - Ventajas • Tolerancia a los fallos • Autoregenerativo • Escalable • Confiabilidad • Soporte domingo 4 de noviembre de 2012
  • 10. Map/Reduce • Paradigma de programación distribuida • Basada en un paper de Google (http://bit.ly/ gXZbsk) • Modelada a partir de las ideas de programación funcional • Distribuible en N nodos • map() -> reduce() • La etapa de reduce se inicia cuando todos los mappers terminan. domingo 4 de noviembre de 2012
  • 11. Map/Reduce • Dos pasos secuenciales • Map: Toma todas las lineas de un input, y por cada una, las procesa y devuelve un par de key valor • Reduce: Recibe secuencialmente un key valor, los procesa y emite un resultado (ej: otro k-v) domingo 4 de noviembre de 2012
  • 12. wc.py M/R: WC en Python import hadoopy ** usando el modulo Hadoopy para usar python def mapper(key, value): con Hadoop! for word in value.split(): yield word, 1 def reducer(key, values): accum = 0 for count in values: accum += int(count) yield key, accum if __name__ == "__main__": hadoopy.run(mapper, reducer, doc=__doc__) Probandolo localmente! $ echo "a b a a b c" | python wc.py map | sort | python wc.py reduce a 3 b 2 c 1 domingo 4 de noviembre de 2012
  • 13. Ejemplo: wordcount {‘foo’:12, <arch1.part1> mapper ‘bar’:13, ‘baz’:19} {‘foo’:[12,33,1,55]} count() Reducer sum() {‘foo’:33, <arch1.part2> mapper ‘bar’:23, ‘baz’:42} {‘bar’:[13,23,0,43]} count() Ordenar {‘foo’:101, Muchos y Reducer ‘bar’:79, archivos agrupar ‘baz’:218} por key sum() {‘foo’:1, <arch2.parte1> mapper ‘bar’:0, ‘baz’:99} {‘baz’:[19,42,99,65]} count() Reducer sum() {‘foo’:55, <arch2.parte2> mapper ‘bar’:43, ‘baz’:65} count() domingo 4 de noviembre de 2012
  • 14. M/R en Hadoop • Las tareas de M/R son entregadas como un “job” • Los “jobs” se asignan a una cola especifica de trabajo • Los jobs son “rack-aware”: aprovecharse del “data locality” • Cada “job” es divido en N “tasks” • Streaming: No usar Java para M/R • Las tareas que fallen son reiniciadas automaticamente. domingo 4 de noviembre de 2012
  • 15. M/R: Implementación • M/R es excelente para los problemas donde los ‘sub-problemas’ no son interdependientes • Nada se comparte entre mappers y reducers, ni siquiera si corren en el mismo nodo • X ej: La salida de un mapper no puede depender de la salida o comunicación con otro mapper domingo 4 de noviembre de 2012
  • 16. Amazon Web Services • Crear servidores virtuales dinamicamente. • Pagas solo por las horas que usas • Podes ‘apagar’ y ‘prender’ maquinas en cualquier momento domingo 4 de noviembre de 2012
  • 17. AWS: Servicios clave • EC2: Servidores virtuales • S3: Servicio de data-storage • EMR: Hadoop on demand domingo 4 de noviembre de 2012
  • 18. Elastic Map Reduce • Proveen un cluster configurado con los ultimos patches + un poco de magia extra • Interactua nativamente con S3 • Podes agregar o sacar servers del cluster dinamicamente domingo 4 de noviembre de 2012
  • 19. Elastic Map Reduce • Al crear el server, se lo puede acceder igual que cualquier otro server virtual • Bootstrap actions permiten customizar el master o slaves • Los cluster pueden ser persistente o efimeros • 2 instance groups: CORE y TASK domingo 4 de noviembre de 2012
  • 20. domingo 4 de noviembre de 2012
  • 21. domingo 4 de noviembre de 2012
  • 22. domingo 4 de noviembre de 2012
  • 23. domingo 4 de noviembre de 2012
  • 24. domingo 4 de noviembre de 2012
  • 25. domingo 4 de noviembre de 2012
  • 26. Elastic Map Reduce Ejemplos desde la consola: # Bajar el instance group TASK a cero instancias shell# elastic-mapreduce --jobflow j-XXXXX --modify-instance-group TASK --instance-count 0 domingo 4 de noviembre de 2012
  • 27. Hive: Qué es? • SQL sobre hadoop • Traducir Pseudosql a tareas Map/Reduce • Maneja datos a escala “Hadoop” • Puede usar logfiles como source data • WC en Hive: • SELECT COUNT(*) as freq, word FROM words GROUP by word; domingo 4 de noviembre de 2012
  • 28. Access log - crear tabla CREATE EXTERNAL TABLE access_log( ip STRING, host STRING, finishtime STRING, uri STRING, return_code STRING, bytes STRING, referrer STRING, user_agent STRING, quality STRING ) comment 'data logs uploaded from servers' PARTITIONED by (   year string,   month string,   day string,   hour string,   minute string) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES (   "input.regex" = '(.+?) (.+?) - (.+) "(.+?)" ([0-9]+) ([0-9]+) "(.+)" "(.+)" "(.+)"',   "output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s" ) STORED AS TEXTFILE LOCATION 's3n://somebucket/acceslog_dir/'; domingo 4 de noviembre de 2012
  • 29. Ejemplo con CSV CREATE EXTERNAL TABLE page_view( viewTime INT, userid BIGINT, url STRING, referrer_url STRING, ip STRING COMMENT 'IP Address of the User', country STRING COMMENT 'country of origination' ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE LOCATION 's3n://somebucket/page_views'; domingo 4 de noviembre de 2012
  • 30. Queries # Conteo de hits x url para Nov 2012 SELECT count(*) as count, uri FROM access_log WHERE year = 2012 and month = 11 GROUP by uri ORDER by uri DESC; # subqueries # tablas: users, action_video y action_comment # salida: una lista con todas las acciones de todos los usuarios y sus fechas SELECT u.id, actions.name, actions.date FROM ( SELECT av.uid AS uid, ‘video publicado’ as name FROM action_video av WHERE av.date = '2008-06-03' UNION ALL SELECT ac.uid AS uid, ‘comentario publicado’ as name FROM action_comment ac WHERE ac.date = '2008-06-03' ) actions JOIN users u ON (u.id = actions.uid) # insertar la salida del query en s3 INSERT OVERWRITE DIRECTORY ‘s3n://somebucket/somedir’ SELECT * FROM access_log where uri = ‘http://example.com’ domingo 4 de noviembre de 2012
  • 31. Limitaciones • No implementa todo el SQL. • Algunas cosas se hacen de manera rara (group by) • Miles de archivos de salida. • Map/Reduce es inherementente lento • Puede ser adictivo domingo 4 de noviembre de 2012
  • 32. Tips • Particionar las tablas (s3://bucket/ access/y=2012/m=11/d=4/h=1) • Crear sets de prueba con pocos datos • Crear varias tablas para distintos queries • Tabla => Query => Tabla => Query • Borrar los datos que no usas en S3! domingo 4 de noviembre de 2012
  • 33. Precios? • Cluster tipico • Master: small (u$s 0.09/hora) x 1 • Slaves: c1.medium u$s 0.2/hora x 2 • Total: u$s 0.49 x hora • S3: u$s 0.125 x gb (muy aprox) domingo 4 de noviembre de 2012
  • 34. En Smowtion? • 70 gb x dia entre datos propios y de partners • Hive funciona como datawarehouse y como parte del pipeline de datos: domingo 4 de noviembre de 2012
  • 35. Cómo seguir? • Cloudera.com • Hadoop.apache.org • http://developer.yahoo.com/hadoop/tutorial/ • http://aws.amazon.com/developertools/2264 (AWS command line Ruby Client) • https://cwiki.apache.org/confluence/display/ Hive/LanguageManual (hive lang manual) domingo 4 de noviembre de 2012
  • 36. Preguntas? • @ezegolub • ezequiel.golub@gmail.com domingo 4 de noviembre de 2012