Combinación de rutas de resumen de big data

01

Puntos clave de revisión del kit de herramientas de concurrencia

  1. Cola de bloqueo ArrayBlockingQueue, LinkedBlockQueue.
  2. Comparación de ConcurrentHashMap y HashTable. Seguridad del hilo y alto rendimiento.
    La versión anterior introdujo un mecanismo de bloqueo segmentado (cubo) (16).
    La nueva versión introduce CAS (Compare And Swap sin algoritmo de bloqueo) + la lista enlazada se convierte en un árbol rojo-negro.
  3. Bloqueo de disminución de subprocesos CountDownLatch (bloqueo).
  4. Grupo de subprocesos ThreadPool. Escenarios de aplicación de grupos pequeños con colas grandes y grupos grandes con colas pequeñas.
  5. Cerradura reentrante RetreenLock. La capa inferior admite mecanismos de bloqueo justo e injusto.
  6. Tipo atómico, AtomicInteger, AtomicDouble, AtomicBoolean.

Puntos clave de revisión del cuidador del zoológico

  1. Comprender los escenarios de aplicación de Zookeeper.
    • La administración del clúster, como un servidor en el clúster está inactivo, puede saberlo.

Inserte la descripción de la imagen aquí
Cuando el cliente inicia, registra su nodo temporal con zookeeper. Cuando este cliente deja de funcionar, se elimina el nodo temporal correspondiente. Zookeeper monitorea el evento de que el nodo es eliminado, para conocer el cambio de estado del servidor.
En resumen, Zookeeper administra el clúster a través de: nodos temporales + mecanismo de monitoreo

  1. Un servicio de nombres
    debe garantizar la singularidad de los nombres. Por lo tanto, la singularidad de la ruta del guardián del zoológico se puede utilizar para lograr este requisito.
    Por ejemplo, servidor 1: / servidor / 01
    servidor 2: / servidor / 02
  2. Notificación del servicio de coordinación
    Inserte la descripción de la imagen aquí
  3. Implementar el servicio de bloqueo distribuido

Inserte la descripción de la imagen aquí
A través del nodo de secuencia, determine el servidor que es el primero en hacerlo de forma preventiva y luego distribuya la pasta.
Si desea implementar un mecanismo de bloqueo justo: Según el orden del tamaño de la distribución.
Si desea implementar un mecanismo de bloqueo injusto: vuelva a ponerse en cuclillas.

  1. Proporcionar publicación y suscripción de información
    Supervisar cambios en los datos de los nodos.
    Inserte la descripción de la imagen aquí
  • En resumen, Zookeeper puede proporcionar muchos servicios centrales, la rutina es: varios tipos de nodos + monitoreo
    Inserte la descripción de la imagen aquí

Tipo de nodo Zookeeper

  • crear / aparcar
    un nodo persistente ordinario
  • crear -e / park
    nodo temporal
  • crear -s / parque
    nodo secuencial
  • crear -e -s / park
    nodo de secuencia temporal

Revisar el mecanismo de elección de Zookeeper

Zxid La identificación de
elección de ID de transacción más grande es
más de la mitad de la elección.

  1. Consistencia de datos distribuidos y algoritmos relacionados
  • Algoritmo 2PC algoritmo de protocolo de compromiso de dos fases
  • Algoritmo 3PC algoritmo de protocolo de compromiso trifásico
  • El algoritmo de Paxos es más de la mitad del algoritmo y se usó en un artículo de Google en ese momento.
    Zookeeper es una implementación de código abierto basada en este documento.

02

Enfoque del cuidador

  • Protocolo ZAB, Zookeeper Atomic Broadcast, protocolo de transmisión atómica.

    • Logre la coherencia de los datos distribuidos
    • Cuando el
      líder admite la recuperación tras un bloqueo , después de recibir una solicitud de transacción, asignará una identificación de transacción que aumenta globalmente a estas transacciones.
      El Líder escribe la transacción en el registro de transacciones local. El
      Líder envía la transacción a cada
      Seguidor y ejecuta la transacción después de recibir la transacción. (Ejecutar transacción se refiere a escribir la transacción en el registro de transacciones local. Si la escritura tiene éxito, significa que la transacción se ejecutó correctamente. Si la escritura falla, la transacción no se ejecuta). El
      líder recopila información de retroalimentación y, si más de la mitad está satisfecha, inicia una transacción de confirmación. Instrucciones. (Enviar una transacción se refiere a actualizar los cambios causados ​​por la transacción en la memoria (el cliente obtiene los datos de la memoria de Zookeeper)) Cuando
      el seguidor comienza de nuevo, encontrará el ID de transacción más grande que posee y lo enviará al líder.
      Una vez que el líder lo recibe, determina el punto de sincronización de la transacción. Y cree la cola de transacciones correspondiente, coloque la transacción en la cola para el resumen.
      El seguidor realiza la recuperación de transacciones. Antes de que se complete la recuperación, no proporciona servicios de lectura para evitar lecturas sucias.
  • ¿Qué mecanismo usa Zookeeper para prevenir la división del cerebro?
    El cerebro dividido se refiere a la presencia de varios líderes en un grupo, lo que provoca un desorden en la sincronización de transacciones.
    Zookeeper usa el mecanismo EpochId para prevenir la división del cerebro. Es decir, cada vez que se elige un nuevo líder, EpochI aumentará en +1. El seguidor solo acepta transacciones del líder con el mayor EpochId.

Hadoop

Las ventajas de Hadoop: económico y eficiente.

Libros recomendados

  1. guardián del zoológico: <De Paxos a guardián del zoológico: Principios y práctica de la coherencia distribuida> consulte el Capítulo 4
  2. hdfs <Análisis en profundidad de Hadoop HDFS> consulte el Capítulo 1
  3. yarn <información privilegiada sobre la tecnología Hadoop: análisis en profundidad de los principios de implementación y diseño de la arquitectura YARN> consulte el Capítulo 2

Componentes importantes de MapReduce

  • Componente mapeador
  • Componente reductor
  • Componente de partición (Hadoop usa HashPartitioner de forma predeterminada, que generará la partición Hash de la clave del asignador para garantizar que la misma clave de salida del asignador se encuentre en la misma partición) La partición se refiere a ReduceTask

Inserte la descripción de la imagen aquí

  • Componente combinador (primero fusionar en el lado del mapa y luego enviar a ReduceTask)
    función:
    1. Reducir la carga combinada de reduceTask
    2. Reduzca la transmisión de datos de la red y ahorre ancho de banda
  • Componente InputFormat. Cambie la clave de entrada de Mapper e ingrese el valor
  • Componente OutputFormat. Cambie el formato de la salida al archivo de resultados.

Número de tareas para MapTask y ReduceTask

  1. El número de MapTask = el número de porciones de archivo del trabajo (las porciones de archivo no son porciones de archivo) porciones de
    archivo = InputSplit, que es una porción lógica, descrita por objetos, incluida la longitud de inicio de la ruta,
    por lo que no hay datos de archivo en la porción de archivo, porciones de archivo
    = cuando se corta el archivo Cuando se carga en HDFS, se cortará físicamente en bloques y se almacenará en el DataNode.
  2. El número de ReduceTasks no tiene nada que ver con los cortes, el valor predeterminado es uno. Establecido por código (job.setNumReduceTasks (3))
  3. El
    MR de clasificación de MapReduce clasificará la salida del Mapper. La clasificación específica depende del método de comparación en el tipo de clave de salida del mapper.
  4. Proceso de ejecución de MRjob
    • Al recibir Maptask, cumpla con la estrategia de localización de datos. Evite transmitir datos a través de la red y ahorre ancho de banda.
  5. Proceso de MapReduce Shuffle (énfasis)
  6. La unión de MapReduce puede causar un sesgo de datos, cómo resolverlo.
    Inserte la descripción de la imagen aquí
    La figura anterior muestra la reducción de la unión lateral. Este método de unión puede provocar un sesgo de datos.
    Por lo tanto, map-side-join se puede usar para lograr
    Inserte la descripción de la imagen aquí
    esto.La figura anterior demuestra la idea de map-side-join, cargando datos de tablas pequeñas en cada caché de MapTask y luego completando la combinación en MapTask. Puede evitar la desviación de datos.
  7. Hilado (énfasis)
    Inserte la descripción de la imagen aquí

Tres altímetros de hilo

  • Programador FIFO (programador por orden de llegada): priorice todos los recursos del clúster para ejecutar el primer trabajo1. Una vez finalizado el trabajo1, ejecute el trabajo2.
    Escenario de aplicación: cuando encuentre un trabajo de alta prioridad y desee completarlo rápidamente, puede utilizar este programador.
  • El
    clúster del programador justo (programador justo) ejecuta solo un trabajo1, y la memoria utilizada en este momento: 16 GB.
    Si envía un trabajo2 nuevamente, la memoria utilizada por los dos trabajos en este momento: 8 GB,
    etc., asignará recursos de manera uniforme de acuerdo con las tareas del trabajo.
  • El programador de capacidad (programador de contenedores, el predeterminado)
    introduce el concepto de contenedor para encapsular recursos.

Inserte la descripción de la imagen aquí

Cómo MapReduce maneja archivos pequeños

Inserte la descripción de la imagen aquí

  1. Habilite el mecanismo de reutilización de JVM

  2. Combine varios sectores en un solo sector o en una pequeña cantidad de sectores job.setInputFormatClass (CombineTextInputFormat.class); el
    tamaño de sector compuesto predeterminado es 128 MB
    Inserte la descripción de la imagen aquí

Canal artificial

Componentes principales

  1. Fuente

    • Avro (importante y de uso común)
    • Http
    • NetCat
    • SpoolDir (fuente de datos del directorio local)
    • Ejecutivo
  2. Canal

    • Memoria
    • Expediente
    • Jdbc
    • Canal de desbordamiento de memoria
  3. Lavabo

    • Hdfs
    • Registrador
    • Euro
    • Kafka
    • Fregadero File_roll
    • HiveSink
  4. Interceptores (interceptores, vinculados a la fuente)

    • TimeStamp
    • Anfitrión
    • Estático
    • UUID
    • Regex_replace
  5. Selector

    • replicando el modo de replicación (modo)
    • modo de enrutamiento de multiplexación
  6. Proceso

    • Recuperación de fallas
    • Balanceo de carga

El concepto de almacén de datos

  • Sistema de transacciones en línea OLTP (base de datos)
  • Sistema de análisis en línea OLAP (almacén de datos)
    Inserte la descripción de la imagen aquí
  • Extracción, transformación y carga de datos ETL (extracción, transformación y carga)
  • Tipo de tabla de colmena:
    • Mesa interior, mesa exterior
    • Tanto las tablas internas como las externas pueden ser tablas particionadas.
    • Instrucciones relacionadas con la partición. Cree una tabla particionada particionada por. Agregar información de partición para una tabla agregar partición. Elimina la partición de caída de partición. Modifique el cambio de nombre de la partición a.
      Inserte la descripción de la imagen aquí
    • Mesa de cubo

COLMENA

  1. Funciones de manipulación de cadenas de uso común en Hive
    Inserte la descripción de la imagen aquí
  2. UDF
  3. Varias operaciones de unión de Hive
    left semi join
  4. Cómo resuelve Hive el problema de la desviación de datos
  • La operación de agrupación por agrupación puede causar sesgos de datos. Por ejemplo, el último caso estadístico de recuento de palabras. Para resolver la idea, divida un MRJob en dos Trabajos. Ob, haga particiones aleatorias. El segundo trabajo realiza las estadísticas de agrupación final establecidas hive.groupby .skewindata = verdadero
  • La operación de unión puede causar un sesgo de datos. Idea de solución: tabla pequeña-tabla grande hacer joim -> usar unión lateral del mapa, escribir tabla pequeña a la izquierda. Unión tabla grande-tabla grande -> usar tabla de cubo
  • recuento El recuento global puede provocar un sesgo de datos. Solución: establezca hive.groupby.skewindata = true
  1. Tuning HIVE
  2. Sqoop
  3. HIVE JDBC
  4. Arquitectura HIVE
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/yasuofenglei/article/details/101026195
Recomendado
Clasificación