1. Exigences du projet
1. Construction d'une plateforme de collecte de données sur le comportement des utilisateurs
2. Construction d'une plateforme de collecte de données commerciales
3. Modélisation dimensionnelle de l'entrepôt de données
4. Indicateurs statistiques
5. Outil de requête ad hoc pour analyser les indicateurs à tout moment
6. Surveiller les performances du cluster et déclencher une alarme lorsque des anomalies se produisent (informations tierces)
7. Gestion des métadonnées
8.Contrôle qualité
9. Gestion des autorisations (niveau table, niveau champ)
2. Sélection technologique
Volume de données, besoins de l'entreprise, expérience du secteur, maturité technologique, coûts de développement et de maintenance et budget total
Collecte et transmission de données : Flume, Kafka, Sqoop, Logstash (collecte de logs), DataX
Stockage des données : MySQL (couche ADS), HDFS, HBase, Redis, MongoDB
Informatique de données : Hive, Tez, Spark, Flink, Storm
Requête de données : Presto, Kylin, Impala, Druid, ClickHouse, Doris
Visualisation de données : ECharts, Superset (open source et gratuit) , QuickBI (hors ligne), DATAV (temps réel) (produits Alibaba)
Planification des tâches : Azkaban, Oozie, DolphinScheduler, Airflow
Surveillance du cluster : Zabbix (hors ligne), Prometheus (en temps réel)
Gestion des métadonnées : Atlas
Gestion des autorisations : Ranger, Sentry (Apache les a supprimés)
3. Traitement du processus de données du système
Nginx : équilibrage de charge, principalement chargé d'équilibrer les données sur chaque serveur
Principalement divisé en données commerciales et données sur le comportement des utilisateurs
Les données commerciales sont stockées dans MySQL et les données sont synchronisées avec le cluster via Sqoop.
Les données sur le comportement des utilisateurs proviennent principalement de points enfouis front-end. Les données sont stockées sous forme de fichiers. Les fichiers journaux sont collectés vers Kafka via Flume (pour éviter la collecte directe, éviter un volume de données excessif et l'élimination des pics), puis synchroniser les données. au cluster via Flume. HIVE On Spark effectue le stockage, le nettoyage, la conversion et d'autres opérations des données, et divise les données en couche d'origine des données ODS, couche de détail des données DWD, couche de service de données DWS, couche de sujets de données DWT et couche d'application de données ADS. .
Les données de la couche ADS sont ensuite synchronisées avec MySQL via Sqoop pour une analyse visuelle et un affichage (Superset)
Pendant le processus de calcul, les données des couches DWD, DWS et DWT peuvent être interrogées ad hoc via Presto.
L'analyse multidimensionnelle des données de la couche DWD peut être effectuée via Kylin et les résultats peuvent être stockés dans HBase
L'outil de planification de tâches planifiées peut utiliser Azkaban
Gestion des métadonnées avec Atlas
Gestion des autorisations à l'aide de Ranger
La gestion de la qualité des données utilise Python+Shell
Surveillance de cluster à l'aide de Zabbix
4. Sélection de la version du framework et taille du cluster
Apache open source et gratuit
Serveur cloud : Alibaba Cloud EMR
Amazon Cloud EMR
Tencent Cloud DME
Huawei Cloud DME
Le choix de la machine physique ou du serveur cloud repose principalement sur les besoins de l’entreprise.
Machine physique : le coût de l'espace, les factures d'électricité, la maintenance de la machine, puis l'exploitation et la maintenance du serveur sont élevés et la sécurité est relativement élevée.
Serveur cloud : coût élevé, mais maintenance ultérieure plus facile et sécurité inférieure à celle des machines physiques
Comment acheter un serveur ?
1 million d'utilisateurs quotidiens* 100 entrées par personne en moyenne* Taille du journal 1K* Aucune extension pendant six mois* 180* Trois copies3* Réserve 20 %~30 %Buf = 77T
Pensez ensuite à la superposition d’entrepôts de données, à la compression des données, etc.
Planification et conception des ressources du cluster
Principes des clusters de production :
Séparation de la consommation de mémoire
Les transferts de données sont rapprochés
Le client doit être placé sur un seul serveur autant que possible pour faciliter l'accès externe (sécurité des données)
S'il y a des dépendances, essayez de les placer sur un seul serveur.
Groupe de tests :