DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Big Data Zone»Tutoriel Presto pratique : Presto 104
    Big Data Zone

    Tutoriel Presto pratique : Presto 104

    octobre 13, 2021
    Tutoriel Presto pratique : Presto 104
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    introduction

    Il s’agit du quatrième didacticiel de notre série Premiers pas avec Presto. Pour récapituler, voici les 3 premiers tutoriels :

    Presto 101 : Installer et configurer Presto localement

    Presto 102 : Exécution d’un cluster Presto à trois nœuds sur un ordinateur portable

    Presto 103 : Exécuter un cluster Presto sur GCP

    Presto est un moteur SQL de requête parallèle distribué open source qui s’exécute sur un cluster de nœuds. Dans ce didacticiel, nous allons vous montrer comment exécuter Presto avec Hive Metastore sur un ordinateur portable.

    Presto est un moteur désagrégé. Cela signifie que Presto possède la partie supérieure de la pile de base de données – l’analyseur SQL, le compilateur, l’optimiseur, le planificateur, le moteur d’exécution – mais il n’a pas d’autres composants de la base de données – cela inclut le catalogue système. Dans le monde des lacs de données, le catalogue système où réside le schéma de base de données réside dans ce qu’on appelle un catalogue. Deux catalogues populaires ont vu le jour. Du monde Hadoop – le Hive Metastore continue d’être largement utilisé. Notez que ceci est différent du moteur de requête Hive. Il s’agit du catalogue du système, où résident les informations sur les schémas de table et leurs emplacements. Dans AWS, le catalogue Glue est également très populaire.

    Le Hive Metastore est le mappage entre les tables et colonnes de la base de données et les objets ou fichiers qui résident dans le lac de données. Il peut s’agir d’un système de fichiers lors de l’utilisation de HDFS ou d’objets immuables dans des magasins d’objets comme AWS S3. Ce didacticiel simplifie le processus d’un scénario d’ordinateur portable pour vous aider à démarrer.

    Étapes de mise en œuvre

    Étape 1

    Créez un espace de noms réseau docker, afin que les conteneurs puissent communiquer entre eux à l’aide de l’espace de noms réseau.

    C:Usersrupendran>docker network create presto_networkd0d03171c01b5b0508a37d968ba25638e6b44ed4db36c1eff25ce31dc435415b

    Étape 2

    Ahana a développé un bac à sable pour PrestoDB qui peut être téléchargé à partir du docker hub, utilisez la commande ci-dessous pour télécharger le bac à sable PrestoDB, qui est fourni avec tous les packages nécessaires pour exécuter PrestoDB.

    C:Usersprestodb>docker pull ahanaio/prestodb-sandbox
    Using default tag: latest
    latest: Pulling from ahanaio/prestodb-sandbox
    da5a05f6fddb: Pull complete 
    e8f8aa933633: Pull complete 
    b7cf38297b9f: Pull complete 
    a4205d42b3be: Pull complete 
    81b659bbad2f: Pull complete 
    3ef606708339: Pull complete 
    979857535547: Pull complete
    Digest: sha256:d7f4f0a34217d52aefad622e97dbcc16ee60ecca7b78f840d87c141ba7137254
    Status: Downloaded newer image for ahanaio/prestodb-sandbox:latestdocker.io/ahanaio/prestodb-sandbox:latest

    Étape 3:

    Démarrez l’instance du bac à sable PrestoDB et nommez-la en tant que coordinateur

    #docker run -d -p 8080:8080 -it --net presto_network --name coordinator
    ahanaio/prestodb-sandbox
    db74c6f7c4dda975f65226557ba485b1e75396d527a7b6da9db15f0897e6d47f

    Étape 4:

    Nous souhaitons uniquement que le coordinateur s’exécute sur ce conteneur sans le nœud de travail. Modifions donc le fichier config.properties et définissons le node-scheduler.include-cooridinator sur false.

    sh-4.2# cat etc/config.properties
    coordinator=true
    node-scheduler.include-coordinator=false
    http-server.http.port=8080discovery-server.enabled=true
    discovery.uri=http://localhost:8080
    sh-4.2#

    Étape 5 :

    Redémarrez le coordinateur en cours d’exécution du conteneur Docker. Depuis que nous avons mis à jour le fichier de configuration pour exécuter cette instance uniquement en tant que coordinateur Presto et avons arrêté le service de travail.

    # docker restart coordinator

    Étape 6 :

    Créez trois autres conteneurs en utilisant ahanaio/prestodb-sandbox

    user@presto:~$docker run -d -p 8081:8081 -it --net presto_network --name worker1  ahanaio/prestodb-sandbox

    user@presto:~$docker run -d -p 8082:8082 -it --net presto_network --name worker2  ahanaio/prestodb-sandbox

    user@presto:~$docker run -d -p 8083:8083 -it --net presto_network --name worker3  ahanaio/prestodb-sandbox

    Étape 7 :

    Modifiez le fichier etc/config.properties dans chacun des trois conteneurs de travail et définissez le coordinateur sur false, http-server.http.port sur 8081/8082/8083 respectivement pour chaque travailleur et enfin discovery.uri doit pointer vers le coordinateur.

    sh-4.2# cat etc/config.properties
    coordinator=false
    http-server.http.port=8081
    discovery.uri=http://coordinator:8080

    Étape 8 :

    Nous allons maintenant installer et configurer Hive sur le conteneur coordinateur.

    Installer wget procps et tar

    # yum install -y wget procps tar less

    Étape 9 :

    Téléchargez et installez les packages Hive et Hadoop, définissez HOME et PATH pour JAVA, HIVE et HADOOP

    #HIVE_BIN=https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
    #HADOOP_BIN=https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz

    #wget --quiet ${HIVE_BIN}
    #wget --quiet ${HADOOP_BIN}

    #tar -xf apache-hive-3.1.2-bin.tar.gz -C /opt
    #tar -xf hadoop-3.3.1.tar.gz -C /opt
    #mv /opt/apache-hive-3.1.2-bin /opt/hive
    #mv /opt/hadoop-3.3.1 /opt/hadoop

    #export JAVA_HOME=/usr
    #export HIVE_HOME=/opt/hive
    #export HADOOP_HOME=/opt/hadoop
    #export PATH=$PATH:${HADOOP_HOME}:${HADOOP_HOME}/bin:$HIVE_HOME:/bin:.
    #cd /opt/hive

    Étape 10 :

    Téléchargez les fichiers jar supplémentaires nécessaires pour fonctionner avec S3

    #wget https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-core/1.10.6/aws-java-sdk-core-1.10.6.jar

    #wget https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-s3/1.10.6/aws-java-sdk-s3-1.10.6.jar

    #wget https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/2.8.4/hadoop-aws-2.8.4.jar

    #cp aws-java-sdk-core-1.10.6.jar /opt/hadoop/share/hadoop/tools/lib/
    #cp aws-java-sdk-s3-1.10.6.jar /opt/hadoop/share/hadoop/tools/lib/
    #cp hadoop-aws-2.8.4.jar /opt/hadoop/share/hadoop/tools/lib/

    echo « exporter
    HIVE_AUX_JARS_PATH=${HADOOP_HOME}/share/hadoop/tools/lib/aws-java-sdk-core-1.10.6.ja
    r:${HADOOP_HOME}/share/hadoop/tools/lib/aws-java-sdk-s3
    1.10.6.jar:${HADOOP_HOME}/share/hadoop/tools/lib/hadoop-aws-2.8.4.jar" >>/opt/hive/conf/hive-env.sh

    Étape 11 :

    Configurer et démarrer la ruche

    cp /opt/hive/conf/hive-default.xml.template /opt/hive/conf/hive-site.xml
    mkdir -p /opt/hive/hcatalog/var/log
    bin/schematool -dbType derby -initSchema
    bin/hcatalog/sbin/hcat_server.sh start

    Étape 12 :

    Créez le fichier /opt/presto-server/etc/catalog/hive.properties, ajoutez le point de terminaison de la ruche à presto, ce fichier doit être ajouté sur les conteneurs de coordinateur et de travail.

    Si vous choisissez de valider à l’aide du compartiment AWS S3, fournissez des informations d’identification de sécurité pour le même.

    connector.name=hive-hadoop2
    hive.metastore.uri=thrift://localhost:9083
    hive.s3.aws-access-key=<Your AWS Key>
    hive.s3.aws-secret-key=<your AWS Secret Key>

    Étape 13 :

    Redémarrez le coordinateur et tous les conteneurs de nœuds de calcul

    #docker restart coordinator
    #docker restart worker1
    #docker restart worker2
    #docker restart worker3

    Étape 14 :

    Exécutez le presto-cli et utilisez hive comme catalogue

    bash-4.2# presto-cli --server localhost:8080 --catalog hive

    Étape 15 :

    Créez un schéma à l’aide de l’emplacement local ou S3.

    presto:default> create schema tpch with (location='file:///root');
    CREATE SCHEMA
    presto:default> use tpch;

    Si vous avez accès au compartiment S3, utilisez la commande de création suivante en utilisant s3 comme destination

    presto:default> create schema tpch with (location='s3a://bucket_name');
    CREATE SCHEMA
    presto:default> use tpch;

    Étape 16 :

    Hive a l’option de créer deux types de table, ils sont

    • Tables gérées
    • Tables externes

    Les tables gérées sont étroitement associées aux données sur la destination, ce qui signifie que si vous supprimez une table, les données associées seront également supprimées.

    Les tables externes sont faiblement couplées aux données, ce qui signifie qu’elles conservent un pointeur vers les données. Ainsi, la suppression de la table ne supprimera pas les données de l’emplacement externe.

    La sémantique transactionnelle (ACID) n’est prise en charge que sur les tables gérées.

    Nous allons créer une table gérée sous le schéma hive.tpch

    Créer une table sous le schéma hive.tpch

    presto:tpch> create table hive.tpch.lineitem with (format="PARQUET") AS SELECT * FROM tpch.sf1.lineitem;
    CREATE TABLE: 6001215 rows
    Query 20210921_051649_00015_uvkq7, FINISHED, 2 nodes
    Splits: 19 total, 19 done (100.00%)
    1:48 [6M rows, 0B] [55.4K rows/s, 0B/s]

    Étape 17 :

    Faites une table desc pour voir la table.

    presto> desc hive.tpch.lineitem    
    -> ;
    Column | Type | Extra | Comment
    ---------------+-------------+-------+---------
    orderkey | bigint | |
    partkey | bigint | |
    suppkey | bigint | |
    linenumber | integer | |
    quantity | double | |
    extendedprice | double | |
    discount | double | |
    tax | double | |
    returnflag | varchar(1) | |
    linestatus | varchar(1) | |
    shipdate | date | |
    commitdate | date | |
    receiptdate | date | |
    shipinstruct | varchar(25) | |
    shipmode | varchar(10) | |
    comment | varchar(44) | |
    (16 rows)
    Query 20210922_224518_00002_mfm8x, FINISHED, 4 nodes
    Splits: 53 total, 53 done (100.00%)
    0:08 [16 rows, 1.04KB] [1 rows/s, 129B/s]

    Sommaire

    Dans ce didacticiel, nous fournissons des étapes pour utiliser Presto avec Hive Metastore en tant que catalogue sur un ordinateur portable. De plus, AWS Glue peut également être utilisé comme catalogue pour PrestoDB.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.