Cours Big Data Chap6

Click here to load reader

Embed Size (px)

Transcript of Cours Big Data Chap6

  • Amal ABID Cours GI3 ENIS 1

    Chapitre 6

    HBase

  • HBase est une base de donnes :

    Distribue

    haute performance

    Extrmement volutive

    Tolrante aux fautes (+ pas de SPOF)

    Non-relationnelle (NoSQL- Oriente Colonnes)

    Elle peut tre utilise la fois comme :

    Base de donnes temps rel.

    Base de donnes pour une lecture intensive pour les systmes dcisionnels.

    HBase sinspire de BigTable de Google pour son architecture, son

    modle de donnes orient colonne et son mcanisme de persistance sur

    le disque.

    Amal ABID Cours GI3 ENIS 2

    Prsentation de HBase (1/4)

  • HBase est la base de donnes de Hadoop.

    La base de donnes Big Data libre qui s'installe sur un cluster Hadoop.

    HBase utilise le systme de fichiers distribu de Hadoop (HDFS) pour distribuer

    et rpliquer les donnes des tables sur l'ensemble des machines du cluster Hadoop.

    HBase a des performances exceptionnelles pour des lectures et critures

    massives de donnes. Elle a t conue pour stocker de trs grandes tables (des

    milliards d'enregistrement avec des millions de colonnes) de donnes.

    Elle est particulirement bien adapte pour le stockage de trs grandes collections

    de documents ou pour conserver de grandes quantits de donnes pour faire du

    profiling.

    HBase est un projet logiciel libre disponible sous licence Apache 2.0.

    Amal ABID Cours GI3 ENIS 3

    Prsentation de HBase (2/4)

  • Amal ABID Cours GI3 ENIS 4

    Prsentation de HBase (3/4)

  • HBase fait partie de l'cosystme Hadoop :

    HBASE

    HDFS

    Data Consumer

    Data Producer

    read write

    Amal ABID Cours GI3 ENIS 5

    Prsentation de HBase (4/4)

  • Le modle de donnes se base sur les concepts suivants :

    Table

    Dans HBase les donnes sont organises dans des tables.

    Les noms de tables sont des chanes de caractres.

    Row

    Dans chaque table les donnes sont organises dans des lignes.

    Une lignes est identifie (indexe) par une cl unique (RowKey).

    La Rowkey na pas un type, elle est traite comme un tableau doctets.

    6

    Modle de stockage des donnes (1/11)

    Amal ABID Cours GI3 ENIS

  • Column (Column qualifier)

    Pour chaque RowKey un nombre illimit d'attributs peuvent tre stocks dans les

    colonnes. Il n'y a pas de schma strict par rapport aux colonnes. De nouvelles

    colonnes peuvent tre ajoutes au runtime.

    Le column qualifier permet laccs aux donnes. Ce dernier nest pas spcifi

    la cration de la table mais plus tt linsertion de la donne.

    Comme les Rowkeys, le Column qualifier nest pas typ, il est trait comme un

    tableau doctets.

    Column Family

    Les colonnes sont regroupes en ColumnFamilies. Chaque ligne de la table a les

    mmes ColumnFamilies, qui peuvent tre peuples ou pas.

    Les ColumnFamilies doivent tre dfinies lors de la cration de la table et ne

    peuvent pas tre modifis par la suite.

    Les noms des ColumnFamilies sont des chaines de caractres.

    7Amal ABID Cours GI3 ENIS

    Modle de stockage des donnes (2/11)

  • Cell

    La combinaison du RowKey, de la Column Family ainsi que la Column qualifier

    identifie dune manire unique une cellule.

    Les donnes stockes dans une cellule sont appele les valeurs de cette cellule.

    Les valeurs nont pas de type, ils sont toujours considrs comme tableau

    doctets.

    Version

    Les valeurs au sein dune cellule sont versionnes. Chaque version est identifie

    par un Timestamp.

    Une fois la valeur est crite dans HBase, Elle ne peut pas tre modifie. Au lieu

    de cela une autre version avec un Timestamp plus rcent peut tre ajoute.

    Un Timestamp est de type long.

    8Amal ABID Cours GI3 ENIS

    Modle de stockage des donnes (3/11)

  • Null (Sparse) :

    Contrairement aux bases de donnes relationnelles, une colonne qui na pas de

    valeur nest pas matrialise (aucun stockage nest ncessaire en cas dune valeur

    null pour une colonne).

    Par consquent, la combinaison suivante permet de retrouver une

    cellule :

    Avec toutes ces informations, nous avons la possibilit de rcuprer une

    donne prcise dans la base de donnes.

    Amal ABID Cours GI3 ENIS 9

    (RowKey, ColumnFamily, Column qualifier, Timestamp) Value

    Modle de stockage des donnes (4/11)

  • Amal ABID Cours GI3 ENIS 10

    Modle de stockage des donnes (15/11)

  • Amal ABID Cours GI3 ENIS 11

    Rows are ordered and accessed by

    row keyDifferent data separated

    into ColumnFamiliesAll values stores as

    byte arrays

    Rows can have different columns

    Cell can have multiple versions

    Data can be very sparse

    Modle de stockage des donnes (6/11)

  • Vue logique (1/2)

    Amal ABID Cours GI3 ENIS 12

    Modle de stockage des donnes (7/11)

  • Amal ABID Cours GI3 ENIS 13

    Vue logique (2/2)

    Modle de stockage des donnes (8/11)

  • 14

    Vue physique

    Modle de stockage des donnes (9/11)

  • Il est trs important de bien concevoir la taxonomie de cls dans HBase.

    Puisque dpendamment comment ces derniers sont conus, il sera plus facile

    de contrler comment et o les donnes sont sauvegardes.

    Aussi il sera plus facile daccder aux donnes.

    Il est noter que les enregistrements dans HBase sont toujours ordonns

    selon la valeur lexicographique, c.--d. en ordre alphabtique.

    Amal ABID Cours GI3 ENIS 15

    Modle de stockage des donnes (10/11)

  • Amal ABID Cours GI3 ENIS 16

    Tables et rgions

    Modle de stockage des donnes (11/11)

  • HBase, comme Hadoop, vise fonctionner sur un cluster de machines.

    Cest le serveur Master qui reoit la requte, et qui par la suite contacte les

    RegionServers. Lensemble des donnes sont rparties sur lensemble des

    RegionServers pour viter de charger une seule machine chaque requte.

    Composants principaux de HBase

    Amal ABID Cours GI3 ENIS 17

  • Architecture de Hbase (1/2)

    Amal ABID Cours GI3 ENIS 18

  • 19

    Architecture de Hbase (2/2)

  • Pour manipuler les donnes, HBase propose plusieurs mthodes :

    HBase Shell

    API Java

    Web-services RESTful (Ruby, Php, Python, Perl, C++,..)

    Thrift

    Stargate

    Manipulation des donnes (1/16)

    Amal ABID Cours GI3 ENIS 20

  • Toutes les oprations de base dune base de donnes relationnelle sont aussi

    supportes par HBase :

    Ajout et modification de donnes PUT

    Lecture de donnes GET

    Suppression de donnes DELETE

    Recherche de donnes SCAN

    Manipulation des donnes - Oprations (2/16)

    Amal ABID Cours GI3 ENIS 21

  • 1. Connexion au shell Hbase

    2. Cration dune table test avec une famille de colonnes data .

    3. Vrification de la cration de la table en listant les tables de la base.

    Manipulation des donnes HBase Shell (3/16)

    Amal ABID Cours GI3 ENIS 22

    > create 'test', 'data'

    0 row(s) in 1.0200 seconds

    > list

    TABLE

    test

    1 row(s) in 1.0570 seconds

    => ["test"]

    $ hbase shell

    hbase(main):001:0>

  • 4. Insertion des donnes dans trois lignes et trois colonnes diffrentes

    (dans la mme famille de colonnes data )

    Remarque : Nous avons insr trois valeurs. Le premier lment insr est

    row1, colonne data:a avec une valeur valeur1. Les colonnes de HBase

    sont composs d'un prfixe FamilyColumn, data dans cet exemple, suivi de

    deux points et un suffixe Colonm Qualifier, a dans ce cas.

    Manipulation des donnes HBase Shell (4/16)

    Amal ABID Cours GI3 ENIS 23

    > put 'test', 'row1', 'data:a', 'value 1'

    0 row(s) in 0.0390 seconds

    > put 'test', 'row2', 'data:b', 'value 2'

    0 row(s) in 0.0150 seconds

    > put 'test', 'row3', 'data:c', 'value 3'

    0 row(s) in 0.0090 seconds

  • 5. Affichage de la table (toutes les donnes la fois).

    6. Affichage dune ligne ('row2')

    7. Affichage de la valeur dune cellule ('row2'-'data:b')

    Manipulation des donnes HBase Shell (5/16)

    > scan 'test'

    ROW COLUMN+CELL

    row1 column=data:a, timestamp=1413741061087, value=value 1

    row2 column=data:b, timestamp=1413741095382, value=value 2

    row3 column=data:c, timestamp=1413741107667, value=value 3

    3 row(s) in 0.0450 seconds

    > get 'test', 'row2'

    COLUMN CELL

    data:b timestamp=1413741095382, value=value 2

    > get 'test', 'row2', 'data:b'

    COLUMN CELL

    data:b timestamp=1413741095382, value=value 224

  • 8. Modification de la valeur dune cellule et affichage du resultat

    9. Ajout dune valeur dans une cellule et affichage du rsultat

    Manipulation des donnes HBase Shell (6/16)

    > put 'test', 'row1', 'data:a', 'nouvelle valeur 1'

    0 row(s) in 0.0740 seconds

    > put 'test', 'row2', 'data:bb', 'valeur 22'

    get 'test', 'row1', 'data:a'

    COLUMN CELL

    data:a timestamp=1413744793745, value=nouvelle valeur1

    > get 'test', 'row2'

    COLUMN CELL

    data:b timestamp=1413741095382, value=valeur 2

    data:bb timestamp=1413745401122, value=valeur 22

    Amal ABID Cours GI3 ENIS 25

  • 10. Suppression de la cellule 'row3'-'data:c' et lister le contenu de la table

    11. Suppression de la famille de colonne 'data' de la table

    Manipulation des donnes HBase Shell (7/16)

    > delete 'test', 'row3', 'data:c'

    > scan 'test'

    ROW COLUMN+CELL