Base de données non relationnelle à grande échelle

Wangheng1409 2021-09-15 09:59:02
base donn es non relationnelle


  • HBaseLire le flux de données:

 

 

 Description du préfixe:

  • Block Cache :Lire le cache,Cache les données de la dernière lecture,ToutReginServerUn seul
  • MemStore :Écrire le cache,Cache les dernières données écrites,ChaqueStoreIl y a un
  • WAL: Pré - écritureLog

Lire le flux de données:

  • 1.Demandezk RequêtemetaAdresse du tableau
  • 2.SelonmetaRequête d'adresse pour la tablerowkeyÀ qui appartientreginserverLequel?regin,Métadonnées mises en cache dansMetaCache
  • 3.D'abord.BlockCache EtMemStoreTrouver,Ne pas trouver avant d'allerstoreFileCherche.,Si dansstoreFile On a trouvé,Il est mis en cache dansBlockCache- Oui.

HBaseÉcrire le flux de données:

 

 

Écrire le flux de données:

  • 1.Demandezk RequêtemetaAdresse du tableau
  • 2.SelonmetaRequête d'adresse pour la tablerowkeyÀ qui appartientreginserverLequel?regin,Métadonnées mises en cache dansMetaCache
  • 3.Écris d'abord.WAL,Écris encore.MemStore,ÉcrireMemStore Il est revenu ,
  • SiMemStorePas assez de mémoire,Oui.flush storeFileDocumentation, Et puis fusionner plusieurs storeFile

Note:: Hbase Le processus d'écriture est plus efficace que le processus de lecture , Parce que le processus d'écriture n'a besoin que d'écrire à la mémoire , Processus de lecture lire d'abord la mémoire , Si vous ne pouvez pas lire , Vous devez également lire le fichier disque .

 

HBaseDeflush( Écris. ) Mécanismes:

Conditions de brossage :

  • 1.MemStore Taille jusqu'à 128M
  • 2. Plus de temps que 1Heures
  • 3.ReginserverTous lesMemstore Taille jusqu'à reginserver Taille de la mémoire du tas utilisée 40%

Note:: Les conditions ci - dessus sont par défaut pour chaque 10s Vérifiez une fois

Pour éviter que les conditions d'écriture ne soient remplies avant l'inspection , Déclenchera le mécanisme de blocage .

Conditions de déclenchement du mécanisme de blocage :

  • MemstoreAtteindre512M
  • ReginserverTous lesMemstore Taille de la mémoire tas 0.95*0.4

Solutions pour éviter les mécanismes de blocage :

        Si cela se produit,Peut être agrandimemstoreTaille,Augmentationreginserver Taille de la mémoire tas pour .

 

Compact Mécanisme de fusion :

minor compact Petites fusions :

Critères de sélection des fichiers :

  • 1. Le nombre de fichiers à fusionner est supérieur à 3
  • 2. Nombre de fichiers à fusionner Moins de10
  • 3. La taille du fichier est inférieure à 128M Les documents de
  • 4. Exclure les fichiers particulièrement volumineux

Fusionner les conditions de déclenchement :

  • 1.menstore flush
  • 2.Contrôles périodiques,Par défaut10s

Major compact:

  • Fusionner tous les HFile,Par défaut7 Une fois par jour , Fermeture par défaut en production
  • Manuel:major_compact Nom du tableau

Attention!: La vraie suppression se fait à ce stade

 

Region Mécanisme de fractionnement :

IncreasingToUpperBoundRegionSplitPolicy:

0.94Version~2.0 Version de la politique de partition par défaut :

 La stratégie de segmentation est un peu compliquée , Vue d'ensemble et ConstantSizeRegionSplitPolicyMême idée.,Unregion La taille est supérieure au réglage
Le seuil déclenche la segmentation . Mais ce seuil n'est pas comme ConstantSizeRegionSplitPolicy Est une valeur fixe , Mais il va
Ajustement continu dans certaines conditions , Ajuster les règles et region La table est actuellement regionserverOui.region C'est le nombre qui compte .
region splitLa formule de calcul pour:
regioncount^3 * 128M * 2,Quandregion Atteindre ce size Quand ça arrive split
Par exemple:
Première foissplit:1^3 * 256 = 256MB
Deuxième foissplit:2^3 * 256 = 2048MB
Troisièmesplit:3^3 * 256 = 6912MB
Quatrièmesplit:4^3 * 256 = 16384MB > 10GB, Prenez donc la plus petite valeur 10GB
Chaque fois que splitDesizeTous.10GBC'est

SteppingSplitPolicy:

2.0 Version de la politique de partition par défaut , Voir Baidu pour d'autres versions :

 Le seuil de segmentation de cette stratégie de segmentation a encore changé ,Comparé à IncreasingToUpperBoundRegionSplitPolicy C'est simple
Quelques, Toujours et à diviser region La table est actuellement regionserverOui.region C'est le nombre qui compte ,SiregionLe nombre est égal à
1,
Le seuil de coupure est flush size(128M) * 2,SinonMaxRegionFileSize(10GB). Cette stratégie de segmentation s'applique aux grandes tables d'un grand Cluster 、 Les petites montres
Que IncreasingToUpperBoundRegionSplitPolicy Plus amical, Les petites montres ne produisent plus beaucoup de petites region,Mais...
Juste assez pour.

 

Hbase Pré - partitionnement :

Pour l'équilibrage de la charge , Améliorer l'efficacité de la lecture et de l'écriture , Sinon, la lecture et l'écriture commencent sur une seule machine .

Les problèmes d'équilibrage de charge sont généralement résolus , Et les solutions suivantes :

  • Voilà.row key Préfixe  
  • C'est exact.row key En courshash
  • Inversion

Region Fusionner:

Region La fusion n'est pas destinée à la performance , Mais à des fins d'entretien .

AdoptionMerge Fusion à froid de classe Region:

  • Il faut d'abord fermer hbaseCluster
  • Besoins:J'ai besoin d'aide.studentDans le tableau2- Oui.region Fusion des données :

student,,1593244870695.10c2df60e567e73523a633f20866b4b5.

student,1000,1593244870695.0a4c3ff30a98f79ff6c1e4cc927b3d0d.

Par iciorg.apache.hadoop.hbase.util.MergeClasse pour implémenter, Pas besoin d'entrer hbase shell,Exécution directe(Besoin Fermez d'abord.hbaseCluster):

hbase org.apache.hadoop.hbase.util.Merge student \
student,,1595256696737.fc3eff4765709e66a8524d3c3ab42d59. \
student,aaa,1595256696737.1d53d6c1ce0c1bed269b16b6514131d0.

Adoptiononline_merge Fusion thermique Region:

  • Pas besoin de fermerhbaseCluster, Fusion en ligne .
 Contrairement à la fusion à froid ,online_merge Le paramètre de transmission est RegionDehashValeur,EtRegionDehashLa valeur estRegion Le nom le plus
La dernière partie est dans deux . La partie de la chaîne entre .
Besoins:J'ai besoin d'aide.lagou_sDans le tableau2- Oui.region Fusion des données :
student,,1587392159085.9ca8689901008946793b8d5fa5898e06. \
student,aaa,1587392159085.601d5741608cedb677634f8f7257e000.
Besoin d'accèshbase shell:
merge_region
'c8bc666507d9e45523aebaffa88ffdd6','02a9dfdf6ff42ae9f0524a3d8f4c7777'

RowKey Conception:

  • RowKey Principe de longueur
    • rowkey C'est un flux binaire , Peut être n'importe quelle chaîne ,Longueur maximale64kb, Dans la pratique, il s'agit généralement de 10-100bytes, Parbyte[] Conservation formelle , Généralement conçu pour une longueur fixe .
    • Plus le Conseil est court, mieux c'est ,Ne pas dépasser16Octets  Une conception trop longue peut réduire memstore Utilisation de la mémoire et HFile Efficacité du stockage des données .
  • RowKey Principe de hachage
    • Recommandationsrowkey Haut de la page comme champ de hachage , Cela permettra une répartition plus équilibrée des données dans chaque RegionServer, Pour obtenir une charge égale Les chances d'équilibre .
  • RowKey Le seul principe
    •   Son caractère unique doit être garanti par la conception
  •  RowKey Principe de classement
    • HBaseDeRowkeyOui.ASCII Bien conçu ,Nous concevonsRowkey Pour en tirer le meilleur parti

scanAttention à l'utilisation:setStartRow,setEndRow Champ d'application limité, Plus la portée est petite ,Plus la performance est élevée.

 

版权声明
本文为[Wangheng1409]所创,转载请带上原文链接,感谢
https://javamana.com/2021/09/20210915095656851x.html

  1. L'arrivée de marchandises sèches, l'entretien d'emploi Java 12 grandes usines ont réussi à changer d'emploi,
  2. Multiple postures for handling container time in k8s environment
  3. Echarts remove left Gap, Blank
  4. Hotspot Weekly | zoom $100 million, docker fees, $38 billion Data bricks
  5. JsonMappingException: No serializer found for class org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory...
  6. Java. Security. Securerandom source code analysis Java. Security. EGD = file: / dev /. / urandom
  7. When using IntelliJ idea, jump directly and quickly from the mapper interface to mapper.xml
  8. When idea writes SQL in mybatis XML, the solution to the problems of table name, field and red reporting
  9. Spring cloud integrates Nacos
  10. 应届毕业生Java笔试题目,2021大厂Java社招最全面试题,
  11. Liver explosion! Take you to understand Hadoop serialization
  12. linux系列之:告诉他,他根本不懂kill
  13. java版gRPC实战之三:服务端流
  14. RabbitMQ核心知识总结!
  15. linux系列之:告诉他,他根本不懂kill
  16. java版gRPC实战之三:服务端流
  17. RabbitMQ核心知识总结!
  18. 10天拿到字节跳动Java岗位offer,学习Java开发的步骤
  19. 10天拿到字节跳动Java岗位offer,Java知识点思维导图
  20. Résumé des connaissances de base de rabbitmq!
  21. 10天拿到字節跳動Java崗比特offer,Java知識點思維導圖
  22. 10 jours pour obtenir un Byte Jump Java post offer, Java Knowledge point Mind Map
  23. 10 jours pour obtenir l'octet Jump Java post offer, apprendre les étapes du développement Java
  24. Java version of gppc Reality Three: server side stream
  25. Linux Series: Dites - lui qu'il ne connaît pas kill du tout
  26. "Data structure and algorithm" of front end -- binary search
  27. 2020-2021京东Java面试真题解析,如何才能通过一线互联网公司面试
  28. 13 SpringBoot整合RocketMQ实现过滤消息-根据SQL表达式过滤消息
  29. 12 SpringBoot整合RocketMQ实现过滤消息-根据TAG方式过滤消息
  30. 11 SpringBoot整合RocketMQ实现事务消息
  31. 11 springboot Consolidated rocketmq Implementation transaction message
  32. 12 springboot Consolidated rocketmq Implements Filtering messages - Filtering messages according to tag method
  33. 13 springboot Consolidated rocketmq Implementation Filtering messages - Filtering messages according to SQL expressions
  34. linux系列之:告诉他,他根本不懂kill
  35. (1)java Spring Cloud+Spring boot企业快速开发架构之微服务是什么?它的优缺点有哪些?
  36. Oracle 检查 DATE 列 RANGE 分区表已有分区的最大日期时间
  37. ConcurrentHashMap--原理
  38. 2020 - 2021 JD Java interview Real question Analysis, How can interview through First - Line Internet Company
  39. Concurrenthashmap - - Principes
  40. Oracle vérifie l'heure de date maximale d'une partition existante dans la colonne date
  41. Docker Compose 实践及梳理
  42. Qu'est - ce qu'un microservice pour Java Spring Cloud + Spring Boot Enterprise Quick Development architecture?Quels sont ses avantages et ses inconvénients?
  43. Plus sign interview knowledge points in Java
  44. Pratique et organisation de la composition des dockers
  45. Linux Series: Dites - lui qu'il ne connaît pas kill du tout
  46. Convenient CSS and jQuery drop-down menu solution
  47. Linux analog packet loss rate
  48. Redis:我是如何与客户端进行通信的
  49. 15 useful cron work examples commonly used by Senior Linux system administrators
  50. 24个 JavaScript 循环遍历方法,你都知道吗?
  51. Reading notes of JavaScript advanced programming (3rd Edition) 4
  52. 30分钟学会Docker里面开启k8s(Kubernetes)登录仪表盘(图文讲解)
  53. 24 méthodes de traversée de boucle Javascript, vous savez?
  54. 30 minutes pour apprendre à ouvrir le tableau de bord k8s (kubernets) dans le docker (explication graphique)
  55. Redis: comment je communique avec les clients
  56. Wsl2: Windows native Linux subsystem
  57. 30分钟学会Docker里面开启k8s(Kubernetes)登录仪表盘(图文讲解)
  58. Python高级用法总结(8)-函数式编程
  59. 261页前端面试题宝典,JavaScript变量声明提升
  60. The performance of JVM and Java applications of the same version differs by 30% on X86 and aarch64 platforms. Why?