编程知识 cdmana.com

Hadoop Foundation - 03 - hdfs (Hadoop Distributed File System) Basic Concepts

Code source voir:https://github.com/hiszm/hadoop-train

HDFSGénéralités(Hadoop Distributed File System)

  • Distribué
  • commodity、low-cost hardware:DécentralisationIoE
  • fault-tolerant:Haute tolérance aux défauts , Par défaut3Mécanisme de copie
  • high throughput:L'informatique mobile coûte moins cher que les données mobiles
  • large data sets:Ensemble de données à grande échelle , En gros.GBEtTBNiveau

HDFSDétails architecturaux

  • NameNode(master) / DataNodes(slave) HDFS Suivez le Seigneur./De l'architecturemaster/slave,Par Unique NameNode(NN) Et plusieurs DataNode(DN) Composition:

    • NameNode : Responsable de la mise en œuvre des Espace de noms du système de fichiers the file system namespace Fonctionnement,La plupart des systèmes de fichiers sont similaires (Par exemple: Linux) , Soutien Ajouter, supprimer et modifier la requête Fichiers et répertoires, etc.Il est également responsable du stockage des métadonnées du cluster,Enregistrer l'emplacement des blocs de données individuels dans le fichier.
    • DataNode:Responsable de fournir les demandes de lecture et d'écriture des clients du système de fichiers,Exécuter la création de blocs,Supprimer, etc.
  • HDFS Stocker chaque fichier dans une série deBloc, Chaque bloc est protégé contre les défauts par plusieurs copies , Ces blocs sont stockés dans DNMoyenne, Bien sûr, la taille et le facteur de réplication de ces blocs peuvent être configurés par eux - mêmes ( Par défaut,La taille du bloc est 128M, Le facteur de réplication par défaut est 3 ).

  • Environnement opérationnel GNU/Linux Moyenne. HDFS Avec Java Langues

Datanodes

Liens vers les documents officiels

Exemples
Una.txt Total150M UnblocksizePour128M
Ils se séparent. block L'un estblock1: 128M ; L'autre. block2: 22M

Alors la question se pose, block1 Etblock2 Où conserver DNÀ l'intérieur?
C'est Transparent pour les utilisateurs , Ça va marcher. HDFSPour finir

HdfsDesign

  • Système de fichiersNamespace

    • user or an application can create directories and store files inside these directories. (C'est bon.CURD)
    • The file system namespace hierarchy is similar to most other existing file systems; ( Similaire àLinux)
    • one can create and remove files, move a file from one directory to another, or rename a file. (C'est bon.CURD)
    • HDFS supports user quotas and access permissions. HDFS does not support hard links or soft links. ( Liens durs non pris en charge )
    • The NameNode maintains the file system namespace(UniqueNN,PlusieursDN)
  • Stabilité de l'architecture

    • Mécanisme du rythme cardiaque et réplication : Chaque DataNode Régulièrement à NameNode Envoyer un message de battement de cœur, Si aucun message de battement de cœur n'est reçu après le temps spécifié ,Alors DataNode Marqué mort .NameNode N'ajoutera rien de nouveau IO Demande de transmission à la personne déclarée morte DataNode, Je ne les utiliserai plus. DataNode Données sur. Parce que les données ne sont plus disponibles , Peut faire en sorte que le facteur de réplication de certains blocs soit inférieur à sa valeur spécifiée ,NameNode Va suivre ces blocs ,Et dans Re - Copier si nécessaire .

    • Intégrité des données : Défaillance du dispositif de stockage, etc. ,Stocké dans DataNode Les blocs de données peuvent également être endommagés . Pour éviter les erreurs dues à la lecture de données corrompues ,HDFS Un mécanisme de vérification de l'intégrité des données est fourni pour assurer l'intégrité des données. ,Les opérations spécifiques sont les suivantes:Lorsque le client crée HDFS Au moment du dossier,Il calculera chaque bloc du fichier Checksum,Et va Checksum Stocké dans le même HDFS Dans un fichier caché séparé sous l'espace de noms . Lorsque le client récupère le contenu du fichier , Il vérifie que chaque DataNode Les données reçues sont - elles corrélées avec celles stockées dans le fichier de somme de contrôle associé? Checksum Ça correspond.Si la correspondance échoue,Prouver que les données sont corrompues,Le client sélectionne ensuite DataNode Obtenir d'autres copies disponibles du bloc.

    • Défaillance du disque pour les métadonnées : FsImage Et EditLog - Oui. HDFS Données de base, La perte accidentelle de ces données peut entraîner HDFS Service non disponible.Pour éviter ce problème,Configurable NameNode Pour le soutenir FsImage Et EditLog Synchronisation multi - répliques ,Voilà. FsImage Ou EditLog Tout changement dans le FsImage Et EditLog Mise à jour synchrone pour.

    • Prise en charge des instantanés : Snapshot prend en charge le stockage de répliques de données à un moment donné , En cas de corruption accidentelle des données , Vous pouvez revenir à un état de données sain en faisant reculer l'opération .

HDFSMécanisme de copie

  • It stores each file as a sequence of blocks. The blocks of a file are replicated for fault tolerance. The block size and replication factor are configurable per file.( Par défaut,La taille du bloc est 128M, Le facteur de réplication par défaut est 3)

  • An application can specify the number of replicas of a file. The replication factor can be specified at file creation time and can be changed later.( Facteur de réplication et taille du bloc , C'est modifiable. )

Pour minimiser la consommation de bande passante et les retards de lecture ,HDFS Lors de l'exécution d'une demande de lecture , Priorité de lecture de la copie la plus proche du lecteur . S'il y a une copie sur le même rack que le noeud de lecteur , Cette copie est préférée .Si HDFS Cluster s'étend sur plusieurs centres de données , Les répliques sur le Centre de données local sont préférées .

LinuxIntroduction à l'environnement

(base) JackSundeMBP:~ jacksun$ ssh [email protected]

[[email protected] ~]$ pwd
/home/hadoop


[[email protected] ~]$ ls
app   Desktop    Downloads  maven_resp  Pictures  README.txt  software   t.txt
data  Documents  lib        Music       Public    shell       Templates  Videos

Nom du fichier Objet
software Kit d'installation du logiciel
app Répertoire d'installation du logiciel
data Données
lib jarSac
shell Script
maven_resp mavenPaquets dépendants

[[email protected] ~]$ sudo vi /etc/hosts

192.168.68.200 hadoop000

HadoopDéploiement

  • hadoop Ça marche. CDH
  • CDH Téléchargement de paquets connexes :http://archive.cloudera.com/cdh5/cdh/5/
  • hadoopVersion de :hadoop-2.6.0-cdh5.15.1
  • hiveVersion: hive-1.1.0-cdh5.15.1

JDK1.8 Détails du déploiement

  • Accès aux documents scp jdk_name [email protected]/168.1.200
  • Installationjdk tar -zvxf jdk_name -C ~/app
  • Configurer l'environnement système
    vi .bash_profile
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH

Entrée en vigueur des modificationssource .bash_profile

java -version

java version “1.8.0_91”
Java SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot 64-Bit Server VM (build 25.91-b14, mixed mode)

L'installation est réussie si vous imprimez ce qui précède

ssh Détails du déploiement de la connexion sans mot de passe

  • Créer une cléssh-keygen -t rsa

  • cd .ssh

  • Clé publique entrée dans keyÀ l'intérieurcat id_rsa.pub >> authorized_keys

-rw------- 1 hadoop hadoop  796 8Mois  16 06:17 authorized_keys
-rw------- 1 hadoop hadoop 1675 8Mois  16 06:14 id_rsa
-rw-r--r-- 1 hadoop hadoop  398 8Mois  16 06:14 id_rsa.pub
-rw-r--r-- 1 hadoop hadoop 1230 8Mois  16 18:05 known_hosts

id_rsa Clé privée
id_rsa.pub Clé publique

[[email protected] ~]$ ssh localhost 
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:LZvkeJHnqH0AtihqFB2AcQJKwMpH1/DorPi0bIEKcQM.
ECDSA key fingerprint is MD5:9f:b5:f3:bd:f2:aa:61:97:8b:8a:e2:a3:98:5a:e4:3d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Last login: Sun Aug 16 18:03:23 2020 from 192.168.1.3
[[email protected] ~]$ ls
app              Desktop    lib         Pictures    shell      t.txt
authorized_keys  Documents  maven_resp  Public      software   Videos
data             Downloads  Music       README.txt  Templates
[[email protected] ~]$ ssh localhost 
Last login: Sun Aug 16 18:05:21 2020 from 127.0.0.1

Hadoop Détails du catalogue d'installation et hadoop-envConfiguration

  • Télécharger https://download.csdn.net/download/jankin6/12668545
  • Décompresser tar -zxvf hadoop_name.tar.gz -C ~/app
  • Ajouter une variable d'environnement
  • Modifier la configuration

ConfigurationJAVA_HOME

[[email protected] hadoop]$ ls
capacity-scheduler.xml      httpfs-env.sh            mapred-env.sh
configuration.xsl           httpfs-log4j.properties  mapred-queues.xml.template
container-executor.cfg      httpfs-signature.secret  mapred-site.xml
core-site.xml               httpfs-site.xml          mapred-site.xml.template
hadoop-env.cmd              kms-acls.xml             slaves
hadoop-env.sh               kms-env.sh               ssl-client.xml.example
hadoop-metrics2.properties  kms-log4j.properties     ssl-server.xml.example
hadoop-metrics.properties   kms-site.xml             yarn-env.cmd
hadoop-policy.xml           log4j.properties         yarn-env.sh
hdfs-site.xml               mapred-env.cmd           yarn-site.xml
[[email protected] hadoop]$ pwd
/home/hadoop/app/hadoop-2.6.0-cdh5.15.1/etc/hadoop
[[email protected] hadoop]$ sudo vi hadoop-env.sh 

-----------------------------

# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}

export JAVA_HOME=/home/hadoop/app/jdk1.8.0_91 

vi ~/.bash_profile

export HADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.15.1
export PATH=$HADOOP_HOME/bin:$PATH

cd $HADOOP_HOME/bin

  • Table des matières
[[email protected] hadoop-2.6.0-cdh5.15.1]$ ls
bin             etc                  include  LICENSE.txt  README.txt  src
bin-mapreduce1  examples             lib      logs         sbin
cloudera        examples-mapreduce1  libexec  NOTICE.txt   share
Table des matières Objet
bin hadoop Liste des clients
etc/hadoop hadoop Répertoire de stockage des profils associés
sbin Démarragehadoop Scripts pour les processus connexes
share Exemples courants

HDFS Détails du formatage et du démarrage

http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.15.1/

vi etc/hadoop/core-site.xml:

Ce noeud principal, et sur cette machine, 8020Port

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop000:8020</value>
    </property>
</configuration>

vi etc/hadoop/hdfs-site.xml:

<configuration>


    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/app/tmp</value>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>


</configuration>

vi slaves

Effectuer le formatage pour la première fois Système de fichiers, Ne pas répéter : hdfs namenode -format

cd $HADOOP_HOME/bin

Les commandes sont là. cd $HADOOP_HOME/bin

  • Démarrer le cluster$HADOOP_HOME/sbin/start-dfs.sh

Validation réussie

[[email protected] sbin]$ jps
13607 NameNode
14073 Jps
13722 DataNode
13915 SecondaryNameNode
  • Interférence du pare - feu

http://192.168.1.200:50070
Découvertejps Peut être ouvert, mais pas le Navigateur , Probablement un pare - feu.

Voir le pare - feufirewall-cmd --state
Coupe le pare - feu. systemctl stop firewalld.service

[[email protected] sbin]$ firewall-cmd --state
not running

  • Arrêter le cluster
    $HADOOP_HOME/sbin/stop-dfs.sh

  • Attention!

tart-dfs. shégal à

hadoop-daemons.sh start namenode
hadoop-daemons.sh start datanode
hadoop-daemons.sh start secondarynamenode

Même chose.stop-dfs.shC'est aussi

Hadoop Détails de l'opération en ligne de commande

Modification des variables d'environnement
source ~/.bash_profile

[[email protected] bin]$ ./hadoop
Usage: hadoop [--config confdir] COMMAND
       where COMMAND is one of:
  fs                   run a generic filesystem user client
  version              print the version
  jar <jar>            run a jar file
  checknative [-a|-h]  check native hadoop and compression libraries availability
  distcp <srcurl> <desturl> copy file or directories recursively
  archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
  classpath            prints the class path needed to get the
  credential           interact with credential providers
                       Hadoop jar and the required libraries
  daemonlog            get/set the log level for each daemon
  s3guard              manage data on S3
  trace                view and modify Hadoop tracing settings
 or
  CLASSNAME            run the class named CLASSNAME

Most commands print help when invoked w/o parameters.


[[email protected] bin]$ ./hadoop fs
Usage: hadoop fs [generic options]
	[-appendToFile <localsrc> ... <dst>]
	[-cat [-ignoreCrc] <src> ...]
	[-chgrp [-R] GROUP PATH...]
	[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
	[-chown [-R] [OWNER][:[GROUP]] PATH...]
	[-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]
	[-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
	[-count [-q] [-h] [-v] [-x] <path> ...]
	[-cp [-f] [-p | -p[topax]] <src> ... <dst>]
	[-df [-h] [<path> ...]]
	[-du [-s] [-h] [-x] <path> ...]
	[-find <path> ... <expression> ...]
	[-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
	[-getfacl [-R] <path>]
	[-getfattr [-R] {-n name | -d} [-e en] <path>]
	[-getmerge [-nl] <src> <localdst>]
	[-help [cmd ...]]
	[-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]]
	[-mkdir [-p] <path> ...]
	[-moveFromLocal <localsrc> ... <dst>]
	[-moveToLocal <src> <localdst>]
	[-mv <src> ... <dst>]
	[-put [-f] [-p] [-l] <localsrc> ... <dst>]
	[-rm [-f] [-r|-R] [-skipTrash] <src> ...]
	[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
	[-test -[defsz] <path>]
	[-text [-ignoreCrc] <src> ...]
	[-touchz <path> ...]
	[-usage [cmd ...]]

  • Commandes courantes
    hadoop fs -ls /
    hadoop fs -cat /hadoop fs -text /
    hadoop fs -put /
    hadoop fs -copyFromLocal /
    hadoop fs -get /README.txt ./
    hadoop fs -mkdir /hdfs-test
    hadoop fs -mv
    hadoop fs -rm
    hadoop fs -rmdir
    hadoop fs -rmr==hadoop fs -rm -r
    hadoop fs -getmerge
    hadoop fs -mkdir /hdfs-test
[[email protected] hadoop-2.6.0-cdh5.15.1]$ hadoop fs -put README.txt  /
[[email protected] hadoop-2.6.0-cdh5.15.1]$ hadoop fs -ls /
Found 1 items
-rw-r--r--   1 hadoop supergroup       1366 2020-08-17 21:35 /README.txt

[[email protected] hadoop-2.6.0-cdh5.15.1]$ hadoop fs -cat /README.txt

......
and our wiki, at:
......
  Hadoop Core uses the SSL libraries from the Jetty project written 
by mortbay.org.

[[email protected] hadoop-2.6.0-cdh5.15.1]$ hadoop fs -get /README.txt ./


[[email protected] hadoop-2.6.0-cdh5.15.1]$ hadoop fs -mkdir /hdfs-test
[[email protected] hadoop-2.6.0-cdh5.15.1]$ hadoop fs -ls /
Found 2 items
-rw-r--r--   1 hadoop supergroup       1366 2020-08-17 21:35 /README.txt
drwxr-xr-x   - hadoop supergroup          0 2020-08-17 21:48 /hdfs-test

HDFS Extensions de stockage pour



Dans l'image ci - dessus, nous pouvons voir un fichier divisé en deux blocs , Mais où sont - ils réellement stockés? ?

Et donc nous avons conclu
put,1 Fichiers divisés en nUn bloc., Et ensuite stocker les différents noeuds
get,D'abord.n Sur les noeuds n Informations de données correspondantes trouvées sur les blocs

Insérer la description de l'image ici

版权声明
本文为[Sun zhongming]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/10/20211013211945115m.html

Scroll to Top