HIVE FACEBOOK WHAREHOUSE

HIVE: Almacenamiento de datos y análisis sobre Hadoop - Transcripción Presentación

1. HIVE almacenamiento de datos y análisis de datos sobre Hadoop Facebook Team

2. ¿Por qué otro sistema de almacenamiento de los datos? Problema: Los datos, datos y más datos de 200GB por día en marzo de 2008 2 + TB (comprimido) los datos en bruto por día de hoy el experimento de Hadoop muy superior a la disponibilidad y la escalabilidad de la eficiencia comercial de DB no es tan grande, pero lanzar más de hardware parcial disponibilidad / capacidad de recuperación / escala más importante que el problema del ácido: Programación y metadatos Mapa-duro para reducir el programa (los usuarios sepan SQL / bash / python) La necesidad de publicar datos en la solución de bien conocidos esquemas: HIVE

3. ¿Qué es HIVE? Un sistema para consultar y gestionar datos estructurados construidos en la parte superior de Hadoop utiliza el mapa-Reducir la ejecución HDFS para el almacenamiento -, pero cualquier sistema que implemente la API de Hadoop FS Principios de construcción clave: Los datos estructurados con tipos de datos enriquecidos (estructuras, listas y mapas) consulta directa datos de diferentes formatos (texto / binario) y formatos de archivo (plano / secuencia) de SQL como una herramienta de programación familiar y para el análisis estándar que permiten que las secuencias de comandos incrustada de extensibilidad y para aplicaciones no estándar de metadatos ricos para permitir el descubrimiento de datos y para la optimización

4. Almacenamiento de datos en Facebook Hoy Servidores Web Servidores de Scribe declarantes HIVE de Hadoop Cluster Oracle RAC Federados MySQL

5. HIVE / Hadoop de uso de Facebook @ Tipos de aplicaciones: Por ejemplo, de resumir: agregaciones diarias / semanales de impresión cuenta / clic medidas complejas de participación de los usuarios ad hoc por ejemplo, análisis: ¿cuántos administradores de grupo, desglosadas por la Minería estado / país de Datos (Montaje de datos de entrenamiento) Por ejemplo, : participación de los usuarios en función de atributos de usuario patrones anómalos de detección de spam en la solicitud de UGC Optimización de uso de la API Anuncio demasiados patrones para contar ..

6. Hadoop Uso @ Facebook Datos estadísticos: Los datos totales: 180 TB (en su mayoría comprimido) Datos netos añadidos / día: 2 + TB (comprimido) 6 TB de los registros fuente sin comprimir 4 TB de datos sin comprimir de dimensiones vuelve a cargar las estadísticas diarias de uso: 3200 puestos de trabajo al día, con 800 mil tareas ( Mapa-reducir las tareas) / día 55TB de datos comprimidos escaneados al día 15 TB de datos de salida comprimidos por escrito a HDFS 80 MM calcular minutos al dí

7. HIVE: Componentes HDFS HIVE CLI consultas DDL Mapa de navegación Reducir MetaStore Ahorro API SerDe Ahorro Yute JSON .. Ejecución HIVE Analizador QL Planificador de Gestión. Interfaz de usuario web
8. Modelo lógico de datos Partición Hash partición de esquema Biblioteca clics HDFS MetaStore / HIVE / clics / HIVE / clics / ds = 03/25/2008 o HIVE o clics / ds = 03/25/2008 / 0 ... Número de Mesas Cubos = 32 bucketing Información Particiones Cols

9. Lidiar con el sistema de tipo de datos estructurado Los tipos primitivos de forma recursiva construir utilizando Composición / Mapas / interfaz de listas ObjectInspector definidos por el usuario Para una lista de tipos de esquema de forma recursiva Para acceder a los campos de forma recursiva dentro de un objeto de interfaz de línea genérica de serialización (DE) (SerDe) las familias de serialización implementar la interfaz de Ahorro DDL delimitado basado SerDe SerDe texto basado Usted puede escribir su propia SerDe (XML, JSON, ...)

10. Tiendas MetaStore Tabla / propiedades: la partición de esquema de mesa y biblioteca SerDe ubicación de la tabla de claves HDFS particiones lógicas y la partición de Ahorro nivel de tipos de metadatos Otros datos API de clientes actuales en Php (Web Interface), interfaz de Python para HIVE, Java (motor de consultas y CLI) de metadatos almacenados en cualquier servidor SQL Evolución del esquema futuro de Estadística

11. HIVE lenguaje de consulta SQL de base de la cláusula JOIN subconsulta ANSI (combinación de igualdad solamente) Multi-Insertar tabla multi-grupo de muestreo de recorrido por objetos de extensibilidad de Pluggable reducir Mapa secuencias de comandos que utilizan TRANSFORMAR

12. Correr Custom Map / Reduce scripts desde (FROM pv_users Seleccione Transformar (pv_users.userid, pv_users.date) USING 'map_script' AS (dt, uid) Cluster (dt)) INSERT INTO TABLE mapa pv_users_reduced TRANSFORM SELECT (map.dt, mapa . uid) USING 'reduce_script' AS (fecha, número);

13. (Simplificado) Mapa Reducir la revisión de la máquina 2 Máquina 1 Mapa Local Orden aleatorio Mundial Clasificación Local locales a reducir
 

14. HIVE QL - Únete a SQL: INSERT INTO TABLA SELECT pv_users pv.pageid, u.age DE page_view pv usuario se una u ON (= pv.userid u.userid); X = pv_users usuario page_view tiempo de identificación de usuario PageId 1 111 09:08:01 2 111 1 222 9:08:13 9:08:14 sexo, edad userid 111 222 32 25 mujeres de edad PageId masculina 1 25 2 25 1 32

15. HIVE QL - Ingreso en el mapa Reducir el usuario page_view pv_users Mapa Ordenar aleatoria Reducir valor de la clave 111 <1, 1> 111 <1, 2> 222 <1, 1> Tiempo userid PageId 1 111 2 111 09:08:01 09:08: 13 1 222 9:08:14 sexo, edad userid 111 222 32 25 mujeres valor de la clave masculina 111 <2, 25> 222 <2, 32> valor de la clave 111 <1, 1> 111 <1, 2> 111 <2, 25 > valor de la clave 222 <1, 1> 222 <2, 32> años de edad PageId 1 25 2 25 1 32 años de edad PageId

16. Se une a combinaciones externas INSERT INTO TABLA SELECT pv_users pv *, u.gender, u.age DE page_view pv FULL OUTER JOIN ON u usuario (pv.userid = u.id) DONDE pv.date = 03/03/2008.;

17. Únete al mapa Reducir la igualdad sólo se une con el apoyo conjunciones poda futuro de los valores enviados desde el mapa de reducir en la base de las proyecciones Haga producto cartesiano lado de la memoria más eficiente Mapa une Hash si se une a una de las mesas es muy pequeña explotación de los datos previamente ordenados por hacer mapa del lado de combinación de mezcla

18. Optimizaciones HIVE - Combinar Mapa secuencial reducir el empleo de SQL: DE (una combinación de b = a.key b.key) c unión en a.key SELECT = c.key ... Un mapa Reducir BC AB Mapa Reducir ABC tecla AV bv 1 111 222 tecla AV 1 111 1 222 bv clave clave 1 333 cv tecla AV bv cv 1 111 222 333

19. HIVE QL - Agrupar por SELECT PageId, la edad, el recuento (1) DE GRUPO POR pv_users PageId, la edad, la edad pv_users PageId 1 25 2 25 1 32 2 25 años de edad cuenta PageId 1 25 1 2 25 2 1 32 1

20. HIVE QL - Grupo A en el Mapa Reducir Mapa pv_users Ordenar aleatoria Reducir la edad PageId 1 25 2 25 años de edad PageId contar con 1 25 1 1 32 1 1 32 años de edad PageId 2 25 valor de la clave <1,25> 1 <2,25> 1 valor de la clave <1,32> 1 <2,25> 1 valor de la clave <1,25> 1 <1,32> 1 valor de la clave <2,25> 1 <2,25> 1 cuenta la edad PageId 2 25 2

21. HIVE QL - Grupo A con Distinct PageId SELECT, COUNT (DISTINCT identificador de usuario) page_view DE GRUPO POR PageId tiempo de identificación de usuario page_view PageId 1 111 2 111 9:08:01 9:08:13 9:08:14 1 222 2 111 09:08 : 20 PageId count_distinct_userid 1 2 2 1

22. HIVE QL - Grupo A con distinto en Mapa Reducir aleatoria page_view y ordenar Reducir Mapa Reducir pageID número 1 1 2 1 1 1 PageId cuenta el tiempo userid PageId 1 111 2 111 9:08:01 9:08:13 tiempo de identificación de usuario PageId 1 222 9 : 08:14 2 111 09:08:20 tecla v <1111> <2111> <2111> tecla v <1222> PageId número 1 2 2 1 PageId recuento

23. Agrupar por optimizaciones futuras Mapa secundarios agregaciones parciales Hash agregados basados ​​en explotar los datos pre-clasificados para el recuento de distintas agregaciones parciales en Combinador ser más inteligentes en la forma de evitar múltiples etapas Exploit de tabla / columna estadísticas para decidir la estrategia

24. Se inserta en archivos, tablas y los archivos locales de pv_users INSERT INTO tabla SELECT pv_gender_sum pv_users.gender, count_distinct (pv_users.userid) GROUP BY (pv_users.gender) INSERT INTO '/ user / facebook / tmp / pv_age_sum.dir' DIRECTORIO pv_users SELECT. edad, count_distinct (pv_users.userid) GROUP BY (pv_users.age) INSERT INTO DIRECTORIO LOCAL '/ home / me / pv_age_sum.dir' FIELDS TERMINATED BY ',' LINES TERMINATED BY 13 pv_users.age SELECT, count_distinct (pv_users.userid) GROUP BY (pv_users.age);

25. Labor futura basada en los costos de optimización de múltiples interfaces de JDBC (...) Las comparaciones de rendimiento con un trabajo similar (PIG) ​​El cumplimiento de SQL (ORDER BY, consultas anidadas ...) La integración con herramientas de BI de compresión de datos sistemas de almacenamiento en columnas Exploit perezosos / funcional HIVE interfaces de recuperación sobre el terreno la localidad mejor los datos Co-localizar particiones hash en la parrilla misma Explotar de alta dentro de la parrilla de ancho de banda de fusión se une a

26. HIVE global del rendimiento completo de tabla (no agrupados) de entrada de tamaño de los datos: 1407867660 (32 archivos) en el asignador de contar y 2 mapas a reducir puestos de trabajo para el turno de suma tomada 30 segundos cúmulo de pruebas: 10 nudos (a partir de la prueba t de selección de transformación (t.userid) como (CNT), utilizando) miContar 'mout SELECT SUM (mout.cnt);

27. Hadoop Desafíos @ Facebook QOS / Aislamiento: Grandes ofertas de empleo pueden acaparar la memoria JobTracker clúster como el impacto de los recursos de memoria limitada Límite de fuera de control programador de tareas de la Feria (Matei) Protección ¿Qué pasa si un error de software que corrompe el registro de transacciones NameNode / imagen? Instantáneas HDFS (Dhruba) Los datos de archivo No todos los datos está caliente y necesita de colocación con Compute HDFS enlaces simbólicos (Dhruba) Archivo de datos de rendimiento realmente difícil entender lo que son los cuellos de botella

28. Conclusión Disponible como un proyecto contrib hadoop http://svn.apache.org/repos/asf/hadoop/core/ Pedido src / contrib / HIVE desde el tronco (trabaja en contra de 0.19 en adelante) Las últimas distribuciones (incluso para Hadoop-0.17) en : La gente http://mirror.facebook.com/facebook/HIVE/~~HEAD=NNS: Suresh Prasad Anthony Zheng Shao Chakka Pete Wyckoff Namit Jain Raghu Murthy Joydeep Sen Sarma Ashish Thusoo

0 pensamientos:

Post a Comment

feedback!