Table des matières
系统简介
模块简介
Maison base de données tutoriel mysql Hive2MySQL初步架构_MySQL

Hive2MySQL初步架构_MySQL

Jun 01, 2016 pm 01:07 PM

系统简介


本系统负责将Hive处理后的数据导出到MySQL服务器上,采用 主/从 架构。zeus2将待导出的数据信息放到zookeeper上,Zookeeper将该信息发送给master。master通过JobWatcher接收待处理的表信息,将这些信息转换为任务,并分发给client处理。当client处理完成时,会更新MySQL上数据处理表,表示该部分任务已经处理完成

模块简介


master

  • 简介
    为服务,会一直运行。包含接收zookeeper上传来的待导出数据的元信息、任务导出、任务超时处理、任务执行完成后的元数据更新、告警等功能
  • 流程
    1. 启动master服务
    2. 通过JobWatcher线程获取待处理的任务,并更新到队列MasterContext.finishedTZ中
    3. MasterContext中加入一个线程,扫描队列MasterContext.finishedTZ,如果有任务,则开始解析任务并进行任务分发
    4. 任务分发的时候,将分发任务加入到executor,执行完成的时候,得到返回码,并根据返回码,进行相应的处理
    5. MasterContext中加入一个线程,用于监控超时的client,如果超时,则将该client加入到超时列表中,以后不进行分发
  • 关键点
    1. MySQL节点的选择
    • 需求
      为了后续计算的方便,需要将能存储在一个MySQL服务器上的数据全部导出到一个节点上,例如上个月站点 A 导出到 MySQL1 上,这个月,还得将站点 A 的数据导出到节点 MySQL1 上。
    • 解决方案
      导出时,为了保证每次数据都导出到一个节点上去,需要维持一张site和host间对应的关系表。而部分站点的数据非常大,会超过MySQL服务器的单表阈值,这样部分站点的数据需要分发到不同的节点上去。site和节点之间的关系不是一一对应的。而大站点只是用户中的一部分,还存在一些小站点,一个MySQL服务器可能存放数个站点的数据。为了应对这些挑战,我们将站点分为三种SITE_LEVEL:SMALL_SITE、BIG_SITE、HUG_SITE,并分别采用不同的导出策略。
      SMALL_SITE  网站的数据量较小,一个站点只存放在一个MySQL服务器上去。所有的数据都会导出到一台MYSQL服务器上去。当数据超过MYSQL服务器单表限制的时候,会将数据导出到负载最小的MySQL服务器上去。某site很长时间以来一直使用我们的服务器时,可能会出现这种情况。
      BIG_SITE  导出的策略和SMALL_SITE一样,但是获取MySQL服务器的方法和SMALL_SITE不一样,BIG_SITE按照轮询的方式将HIVE上的数据导出到MYSQL中去,即今天的数据导出到 MYSQL1 上,明天的数据可能导出到MySQL2上。而SMALL_SITE的数据均导出到一台MYSQL服务器上。
      HUG_SITE  将站点每天的访问信息分发到不同的MYSQL服务器上去
  • 注解
    1. HDFS路径
      /user/hive/warehouse/ptmind_data.db/${tableName}_${tableType}/sitetz=${timezone}/partdt=${date}/partsid=${sid}
      /user/hive/warehouse/ptmind_data.db/sum_page_visits_stats_olap_d/sitetz=E0800/partdt=2014-06-02/partsid=56fbce4e
    2. tableType
      明细表的类型为x,其他表暂时只支持天d
    private String getTabType(String tableName) {if (tableName.equals(Constant.TB_1)) { return x;}else { return d;}}
    Copier après la connexion

client

  • 简介
    1. 部署在MySQL服务器上
    2. 执行HDFS2MySQL的导出任务
  • 流程
    1. 通过clientBootstrap监控消息
    2. 当监控到任务时,执行HDFS2MySQL的导出任务
      2.1 通过shell脚本,从HDFS上下载数据
      2.2 将元数据更新到MySQL服务器中
      2.3 删除本地文件
      2.4 根据表中插入行的数目判断数据是否导出成功
      2.5 将执行情况返回给master
    3. 定时向master发送心跳信息
  • 注解
  1. 存储的本地路径: /tmp/ptbalancer/data/${tableName}_${tableType}_${date}_${当前时间戳}

节点间通信

  • 中间件 netty

    master   ServerBootstrap

    client   ClientBootstrap

传输数据 PB

相比XML,PB有更好的传输效率、压缩率更高、解析速度更快

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Expliquez les capacités de recherche en texte intégral InNODB. Expliquez les capacités de recherche en texte intégral InNODB. Apr 02, 2025 pm 06:09 PM

Les capacités de recherche en texte intégral d'InNODB sont très puissantes, ce qui peut considérablement améliorer l'efficacité de la requête de la base de données et la capacité de traiter de grandes quantités de données de texte. 1) INNODB implémente la recherche de texte intégral via l'indexation inversée, prenant en charge les requêtes de recherche de base et avancées. 2) Utilisez la correspondance et contre les mots clés pour rechercher, prendre en charge le mode booléen et la recherche de phrases. 3) Les méthodes d'optimisation incluent l'utilisation de la technologie de segmentation des mots, la reconstruction périodique des index et l'ajustement de la taille du cache pour améliorer les performances et la précision.

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE? Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE? Mar 19, 2025 pm 03:51 PM

L'article discute de l'utilisation de l'instruction ALTER TABLE de MySQL pour modifier les tables, notamment en ajoutant / abandon les colonnes, en renommant des tables / colonnes et en modifiant les types de données de colonne.

Comment configurer le cryptage SSL / TLS pour les connexions MySQL? Comment configurer le cryptage SSL / TLS pour les connexions MySQL? Mar 18, 2025 pm 12:01 PM

L'article discute de la configuration du cryptage SSL / TLS pour MySQL, y compris la génération et la vérification de certificat. Le problème principal est d'utiliser les implications de sécurité des certificats auto-signés. [Compte de caractère: 159]

Quand une analyse de table complète pourrait-elle être plus rapide que d'utiliser un index dans MySQL? Quand une analyse de table complète pourrait-elle être plus rapide que d'utiliser un index dans MySQL? Apr 09, 2025 am 12:05 AM

La numérisation complète de la table peut être plus rapide dans MySQL que l'utilisation d'index. Les cas spécifiques comprennent: 1) le volume de données est petit; 2) Lorsque la requête renvoie une grande quantité de données; 3) Lorsque la colonne d'index n'est pas très sélective; 4) Lorsque la requête complexe. En analysant les plans de requête, en optimisant les index, en évitant le sur-index et en maintenant régulièrement des tables, vous pouvez faire les meilleurs choix dans les applications pratiques.

Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)? Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)? Mar 21, 2025 pm 06:28 PM

L'article traite des outils de GUI MySQL populaires comme MySQL Workbench et PhpMyAdmin, en comparant leurs fonctionnalités et leur pertinence pour les débutants et les utilisateurs avancés. [159 caractères]

Comment gérez-vous les grands ensembles de données dans MySQL? Comment gérez-vous les grands ensembles de données dans MySQL? Mar 21, 2025 pm 12:15 PM

L'article traite des stratégies pour gérer de grands ensembles de données dans MySQL, y compris le partitionnement, la rupture, l'indexation et l'optimisation des requêtes.

Différence entre l'index cluster et l'index non cluster (index secondaire) dans InnODB. Différence entre l'index cluster et l'index non cluster (index secondaire) dans InnODB. Apr 02, 2025 pm 06:25 PM

La différence entre l'index cluster et l'index non cluster est: 1. Index en cluster stocke les lignes de données dans la structure d'index, ce qui convient à la requête par clé et plage primaire. 2. L'index non clumpant stocke les valeurs de clé d'index et les pointeurs vers les lignes de données, et convient aux requêtes de colonne de clés non primaires.

Puis-je installer mysql sur Windows 7 Puis-je installer mysql sur Windows 7 Apr 08, 2025 pm 03:21 PM

Oui, MySQL peut être installé sur Windows 7, et bien que Microsoft ait cessé de prendre en charge Windows 7, MySQL est toujours compatible avec lui. Cependant, les points suivants doivent être notés lors du processus d'installation: téléchargez le programme d'installation MySQL pour Windows. Sélectionnez la version appropriée de MySQL (communauté ou entreprise). Sélectionnez le répertoire d'installation et le jeu de caractères appropriés pendant le processus d'installation. Définissez le mot de passe de l'utilisateur racine et gardez-le correctement. Connectez-vous à la base de données pour les tests. Notez les problèmes de compatibilité et de sécurité sur Windows 7, et il est recommandé de passer à un système d'exploitation pris en charge.

See all articles