Multiple NameNode role-groups may lead to cluster startup failure
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 25/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- kubernetes, rust
- Ambito
- distributed-systems, infrastructure
Direzione di ricerca
Inizia dallo script del contenitore init format-namenode e riproduci l’avvio con due gruppi di ruoli NameNode, verificando come entrambi possano essere formattati come active in parallelo. Esamina le opzioni ZooKeeper e operator-determined-role, oltre a issue #261, e considera i test di integrazione menzionati nel report; il lavoro è completato quando l’avvio è deterministico, con un NameNode active e senza un errore dovuto a un’immagine non valida.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Affected version
0.7.0-nightly
Current and expected behavior
Currently, we have a format-namenode namenode init container and a script to either create an active or standby namenode.
With one role-group and the podManagementPolicy: "OrderedReady" we make sure that namenodes (actually data and journalnodes as well) will spin up after another.
With two role-groups like:
nameNodes:
roleGroups:
default:
replicas: 1
other_default:
replicas: 1
we get two StatefulSets, which by itself respect the "OrderedReady" policy but spin up their individual Pods in parallel.
This may lead to a cluster startup failure. The namenodes of the different role-groups sometimes (flaky) both format itself as active, with different blob IDs etc. which leads to the "slower" namenode to fail starting up and joining the cluster:
Failed to start namenode.
java.io.FileNotFoundException: No valid image files found
at org.apache.hadoop.hdfs.server.namenode.FSImageTransactionalStorageInspector.getLatestImages(FSImageTransactionalStorageInspector.java:158)
at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:688)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:339)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1201)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:779)
at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:681)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:768)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:1020)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:995)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1769)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1834)
Possible solution
We have to improve the format-namenode init container script to take into account namenodes (and their formatting) starting in parallel. Currently it just checks if there is already an active namenode and depending on that will format as active or standby (which leads to the "race" condition of having two nodes formatted as active with different blob IDs).
- Take ZooKeeper into account?
- Let the operator determine which role-group should format as active?
- Introduce "wait" times for different role-groups to make sure they will not spin up in parallel (not very deterministic)
@lfrancke @soenkeliebau @Jimvin any ideas?
Additional context
This came up when implementing logging for the HDFS operator (and the integrationtests using multiple role-groups per role for custom and automatic log testing).
We should try to get rid of the "OrderedReady" policy part anyways (see https://github.com/stackabletech/hdfs-operator/issues/261) to speed up cluster creation.
Environment
Failed on GKE 1.23, AWS 1.22, Azure 1.23 (and probably any other provider)
Would you like to work on fixing this bug?
None
- Lingua principale
- Rust
- Stelle
- 53
- Fork
- 9
- Merge medio
- 1g 5h
- PR unite (30g)
- 10
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di stackabletech/hdfs-operator
-
Topology Provider permissions briefly dropped during reconciliation when the reflector watch resetsApertatype/bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
stackabletech/hdfs-operator#774 ·
I maintainer di solito rispondono entro 1 giorno
-
type/bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
stackabletech/hdfs-operator#773 ·
I maintainer di solito rispondono entro 1 giorno
-
Re-enable restart-controllerApertatype/internal-debt
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
stackabletech/hdfs-operator#769 ·
I maintainer di solito rispondono entro 1 giorno
-
type/bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
stackabletech/hdfs-operator#763 ·
I maintainer di solito rispondono entro 1 giorno
-
type/bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
stackabletech/hdfs-operator#712 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di stackabletech/hdfs-operator
Issue simili
-
discover: `sudo RTK_DISABLED=$VAR …` is not detected as a bypass when `sudo` is a transparent prefixApertaarea:cli bug good first issue priority:medium
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
rtk-ai/rtk#4412 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[review-skill] Unresolved review threads need paginated GraphQL; first:100 silently truncatesApertaskill:code-review
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
component:sight
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
agentic-os-org/ANOLISA#4115 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
rivet-dev/rivet#5819 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
A-io-database bug needs triage python
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno