###### tags: `cours` `spark` `devel` `config`
# Formation administration Spark (O. Girardot)
YARN => mode batch
mesos => mode streaming et autres
HIVE metastore => map un schema sur du HDFS => abstraction en table depuis SPARK
HBASE => base de données cles/valeurs
benchmark kubernet avec container versus spark : https://www.datamechanics.co/blog-post/apache-spark-performance-benchmarks-show-kubernetes-has-caught-up-with-yarn
oozie, airflow => scheduler sur le cluster : AIRFLOW
### list des soumissions yarn
```
yarn app -list
```
## TP Live Cluster avec Olivier
### TODO
- spark-ui-enable à false car on utilise spark.history
/usr/local/spark/conf/spark-default.conf
update-interval à 10s => raffraichissement tous les 10s
pour obtenir l'adresse local:
hostvars[inventory_hostname].ansible_host
- [X] @christophe - resolution adresse IP (changement /etc/hosts)
- [X] conf /usr/local/spark/conf/spark-default.conf mem à 512m relativement petit. regle : 1 partition doit tenir dans la memoire d'un executor => conseil 2g (on peut aller à 30 à 31 Go du au changement d adressage - pas 32Go)
- spark-defaults.conf
- spark.driver.memory 2g
- spark.yarn.am.memory 2g
- spark.executor.memory 2g
- [X] yarn-schedulor-maximum-allocation-mb => proportion de ram max qu'on peut allouer...actuellement à 1536m
- [conf ici](https://services.pfem.clermont.inrae.fr/gitlab/metabosemdatalake/ansible-datalake/-/blob/master/roles/hadoop_conf/templates/yarn-site.xml.j2)
- yarn.nodemanager.resource.memory-mb <- 40960
- yarn.scheduler.maximum-allocation-mb <- 4096
- yarn.scheduler.minimum-allocation-mb <- 2048
- [ ] faire un timeout des soumission yarn (exemple de spark-shell qui est tué mais toujours present dans la yarn app -list)
- [ ] definition d'une partition tmp ? ou dans /data ?
- [ ] /etc/hadoop/core-site => hadoop.tmp.dir
- configuration du shuffle : https://spark.apache.org/docs/latest/running-on-yarn.html#configuring-the-external-shuffle-service
- [ ] sparkUI.enable = false car on utilise history spark.
- [ ] vcore total 40 max
- [ ] mem totel => 160 Gb => 64 Gb
- [ ] nombre de soumissions par utilisateur
- [ ] yarn.scheduler.capacity.maximum-am-resource-percent=1.0
- [ ] remplacer node.memory... ==> yarn.nodemanager.resource.detect-hardware-capabilities=true
- [ ] spark-default -> spark.yarn.am.memory=256m
- [ ] changer la replication HDFs de 4 à 3
- [ ] Install AirFlow (autre part que sur le named node?)
- [ ] Espace temporaire pour le telechargement des bases PubChem....
- Update/Telechargement des données RDF ? Scrach ? BioMAJ ou autre ?
- [ ] Edge Node (frontend/login node)
- [ ] Autoriser les utilisateurs pour spark (éviter ubuntu pour tout le monde) / gestion des nouveaux utilisateurs
- [ ] Réduire espace reservé (5%) pour root sur partition /data
```
tune2fs -l /dev/mapper/data-lv--data
tune2fs -m 0 /dev/mapper/data-lv--data
```
- [ ] Configuration _yarn-core-site.xml_ avec l utilisation de docker versus Deploiement avec Ansible
- [ ] Repertoire "Snapshotable" ?
- [ ] Installer zeppelin ? Sur le edgenode ?
https://zeppelin.apache.org/
- [ ] Ouvrir le edgenode (ssh + interface web pour zeppelin / proxy vers interfaces spark...) ?
- [ ] namenode: Secondary namenode - sans zookeeper
- [ ] namenode: Mettre en place backup namenode (_-fetchImage_, _VERSION_ file) + test restauration
https://docs.cloudera.com/runtime/7.2.7/data-protection/topics/hdfs-back-up-hdfs-metadata.html
- [ ] Ambari pour la supervision ?
https://ambari.apache.org/