web-dev-qa-db-fra.com

Erreur lors de la copie du fichier sur HDFS dans l'écosystème hadoop

Lors de l’émission d’une commande permettant de copier le fichier du système de fichiers local vers HDFS sur un terminal dans Hadoop 3.0, une erreur s’affiche.

hadoop-3.0.0/hadoop2_data/hdfs/datanode': No such file or directory: 
`hdfs://localhost:9000/user/Amit/hadoop-3.0.0/hadoop2_data/hdfs/datanode.

Cependant, j'ai vérifié que le répertoire hadoop-3.0.0/hadoop2_data/hdfs/datanode existe avec les droits d'accès appropriés. J'ai essayé de télécharger un fichier à partir d'un navigateur Web et il affiche l'erreur suivante.

"Couldn't find datanode to write file. Forbidden"

S'il vous plaît aider à résoudre le problème. Attacher le core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/Amit/hadoop-3.0.0/hadoop2_data/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/home/Amit/hadoop-3.0.0/hadoop2_data/hdfs/datanode</value>
</property>
</configuration>

Vérifié le fichier journal Datanode dans le répertoire d’installation Hadoop et il affiche le message de réussite sous la forme

INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: registered UNIX signal handlers for [TERM, HUP, INT]
INFO org.Apache.hadoop.hdfs.server.datanode.checker.ThrottledAsyncChecker: Scheduling a check for [DISK]file:/tmp/hadoop-Amit/dfs/data
INFO org.Apache.commons.beanutils.FluentPropertyBeanIntrospector: Error when creating PropertyDescriptor for public final void org.Apache.commons.configuration2.AbstractConfiguration.setProperty(Java.lang.String,Java.lang.Object)! Ignoring this property.
INFO org.Apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
INFO org.Apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled Metric snapshot period at 10 second(s).
INFO org.Apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
INFO org.Apache.hadoop.hdfs.server.common.Util: dfs.datanode.fileio.profiling.sampling.percentage set to 0. Disabling file IO profiling
INFO org.Apache.hadoop.hdfs.server.datanode.BlockScanner: Initialized block scanner with targetBytesPerSec 1048576
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Configured hostname is DESKTOP-JIUFBOR.localdomain
INFO org.Apache.hadoop.hdfs.server.common.Util: dfs.datanode.fileio.profiling.sampling.percentage set to 0. Disabling file IO profiling
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Starting DataNode with maxLockedMemory = 0
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Opened streaming server at /0.0.0.0:9866
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Balancing bandwidth is 10485760 bytes/s
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Number threads for balancing is 50
INFO org.Eclipse.jetty.util.log: Logging initialized @146677ms
INFO org.Apache.hadoop.security.authentication.server.AuthenticationFilter: Unable to initialize FileSignerSecretProvider, falling back to use random secrets.
INFO org.Apache.hadoop.http.HttpRequestLog: Http request log for http.requests.datanode is not defined
INFO org.Apache.hadoop.http.HttpServer2: Added global filter 'safety' (class=org.Apache.hadoop.http.HttpServer2$QuotingInputFilter)
INFO org.Apache.hadoop.http.HttpServer2: Added filter static_user_filter (class=org.Apache.hadoop.http.lib.StaticUserWebFilter$StaticUserFilter) to context datanode
INFO org.Apache.hadoop.http.HttpServer2: Added filter static_user_filter (class=org.Apache.hadoop.http.lib.StaticUserWebFilter$StaticUserFilter) to context logs
INFO org.Apache.hadoop.http.HttpServer2: Added filter static_user_filter (class=org.Apache.hadoop.http.lib.StaticUserWebFilter$StaticUserFilter) to context static
INFO org.Apache.hadoop.http.HttpServer2: Jetty bound to port 49833
INFO org.Eclipse.jetty.server.Server: jetty-9.3.19.v20170502
INFO org.Eclipse.jetty.server.handler.ContextHandler: Started o.e.j.s.ServletContextHandler@3a0baae5{/logs,file:///home/Amit/hadoop-3.0.0/logs/,AVAILABLE}
INFO org.Eclipse.jetty.server.handler.ContextHandler: Started o.e.j.s.ServletContextHandler@289710d9{/static,file:///home/Amit/hadoop-3.0.0/share/hadoop/hdfs/webapps/static/,AVAILABLE}
INFO org.Eclipse.jetty.server.handler.ContextHandler: Started o.e.j.w.WebAppContext@3016fd5e{/,file:///home/Amit/hadoop-3.0.0/share/hadoop/hdfs/webapps/datanode/,AVAILABLE}{/datanode}
INFO org.Eclipse.jetty.server.AbstractConnector: Started ServerConnector@178213b{HTTP/1.1,[http/1.1]}{localhost:49833}
INFO org.Eclipse.jetty.server.Server: Started @151790ms
INFO org.Apache.hadoop.hdfs.server.datanode.web.DatanodeHttpServer: Listening HTTP traffic on /0.0.0.0:9864
INFO org.Apache.hadoop.util.JvmPauseMonitor: Starting JVM pause monitor
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: dnUserName = Amit
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: supergroup = supergroup
INFO org.Apache.hadoop.ipc.CallQueueManager: Using callQueue: class Java.util.concurrent.LinkedBlockingQueue queueCapacity: 1000 scheduler: class org.Apache.hadoop.ipc.DefaultRpcScheduler
INFO org.Apache.hadoop.ipc.Server: Starting Socket Reader #1 for port 9867
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Opened IPC server at /0.0.0.0:9867
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Refresh request received for nameservices: null
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Starting BPOfferServices for nameservices: <default>
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Block pool <registering> (Datanode Uuid unassigned) service to localhost/127.0.0.1:9000 starting to offer service
INFO org.Apache.hadoop.ipc.Server: IPC Server Responder: starting
INFO org.Apache.hadoop.ipc.Server: IPC Server listener on 9867: starting
INFO org.Apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
INFO org.Apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
INFO org.Apache.hadoop.ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 2 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Acknowledging ACTIVE Namenode during handshakeBlock pool <registering> (Datanode Uuid unassigned) service to localhost/127.0.0.1:9000
INFO org.Apache.hadoop.hdfs.server.common.Storage: Using 1 threads to upgrade data directories (dfs.datanode.parallel.volumes.load.threads.num=1, dataDirs=1)
INFO org.Apache.hadoop.hdfs.server.common.Storage: Lock on /tmp/hadoop-Amit/dfs/data/in_use.lock acquired by nodename [email protected]
INFO org.Apache.hadoop.hdfs.server.common.Storage: Analyzing storage directories for bpid BP-1751678544-127.0.1.1-1518974872649
INFO org.Apache.hadoop.hdfs.server.common.Storage: Locking is disabled for /tmp/hadoop-Amit/dfs/data/current/BP-1751678544-127.0.1.1-1518974872649
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Setting up storage: nsid=1436602813;bpid=BP-1751678544-127.0.1.1-1518974872649;lv=-57;nsInfo=lv=-64;cid=CID-b7086125-1e01-4cf4-94d0-f8b6b1d4db25;nsid=1436602813;c=1518974872649;bpid=BP-1751678544-127.0.1.1-1518974872649;dnuuid=f132f3ae-7f95-424d-b4d0-729602fc80dd
INFO org.Apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Added new volume: DS-ba9d49d2-87cb-4dff-ae80-d7f11382644f
INFO org.Apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Added volume - [DISK]file:/tmp/hadoop-Amit/dfs/data, StorageType: DISK
INFO org.Apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Registered FSDatasetState MBean
INFO org.Apache.hadoop.hdfs.server.datanode.checker.ThrottledAsyncChecker: Scheduling a check for /tmp/hadoop-Amit/dfs/data
INFO org.Apache.hadoop.hdfs.server.datanode.checker.DatasetVolumeChecker: Scheduled health check for volume /tmp/hadoop-Amit/dfs/data
INFO org.Apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Adding block pool BP-1751678544-127.0.1.1-1518974872649
INFO org.Apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Scanning block pool BP-1751678544-127.0.1.1-1518974872649 on volume /tmp/hadoop-Amit/dfs/data...
INFO org.Apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Time taken to scan block pool BP-1751678544-127.0.1.1-1518974872649 on /tmp/hadoop-Amit/dfs/data: 1552ms
INFO org.Apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Total time to scan all replicas for block pool BP-1751678544-127.0.1.1-1518974872649: 1597ms
INFO org.Apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Adding replicas to map for block pool BP-1751678544-127.0.1.1-1518974872649 on volume /tmp/hadoop-Amit/dfs/data...
INFO org.Apache.hadoop.hdfs.server.datanode.fsdataset.impl.BlockPoolSlice: Replica Cache file: /tmp/hadoop-Amit/dfs/data/current/BP-1751678544-127.0.1.1-1518974872649/current/replicas doesn't exist 
INFO org.Apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Time to add replicas to map for block pool BP-1751678544-127.0.1.1-1518974872649 on volume /tmp/hadoop-Amit/dfs/data: 1ms
INFO org.Apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Total time to add all replicas to map: 4ms
INFO org.Apache.hadoop.hdfs.server.datanode.VolumeScanner: VolumeScanner(/tmp/hadoop-Amit/dfs/data, DS-ba9d49d2-87cb-4dff-ae80-d7f11382644f): no suitable block pools found to scan.  Waiting 1811581849 ms.
INFO org.Apache.hadoop.hdfs.server.datanode.DirectoryScanner: Periodic Directory Tree Verification scan starting at 2/18/18 8:15 PM with interval of 21600000ms
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Block pool BP-1751678544-127.0.1.1-1518974872649 (Datanode Uuid f132f3ae-7f95-424d-b4d0-729602fc80dd) service to localhost/127.0.0.1:9000 beginning handshake with NN
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Block pool Block pool BP-1751678544-127.0.1.1-1518974872649 (Datanode Uuid f132f3ae-7f95-424d-b4d0-729602fc80dd) service to localhost/127.0.0.1:9000 successfully registered with NN
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: For namenode localhost/127.0.0.1:9000 using BLOCKREPORT_INTERVAL of 21600000msec CACHEREPORT_INTERVAL of 10000msec Initial delay: 0msec; heartBeatInterval=3000
INFO org.Apache.hadoop.hdfs.server.datanode.DataNode: Successfully sent block report 0xe646383a22bd4be5,  containing 1 storage report(s), of which we sent 1. The reports had 0 total blocks and used 1 RPC(s). This took 9 msec to generate and 834 msecs for RPC and NN processing. Got back one command: FinalizeCommand/5.
1
Amit Singla

Résumé:

Il semble que vous essayiez de copier les fichiers dans un dossier HDFS non existant


Réponse détaillée:

Il y a une énorme différence entre le système de fichiers HDFS et le système de fichiers standard.

système de fichiers HDFS - Le système de fichiers distribués Hadoop (HDFS) est conçu pour stocker de manière fiable des fichiers très volumineux sur des ordinateurs d'un grand cluster.

Le système de fichiers est distribué sur plusieurs machines et est accessible uniquement à l'aide de commandes HDFS (ou équivalent).

En supposant que vous utilisiez /user/Amit/hadoop-3.0.0/hadoop2_data/hdfs/datanode en tant que dossier cible HDFS, je soupçonne que ce dossier n'existe pas.

Vous pouvez tester mon hypothèse lors de l'exécution des commandes suivantes:

  • Copier le fichier dans le dossier HDFS /tmp

    hadoop fs -put <LocalFileSystem_Path> /tmp
    
  • Copier le fichier dans le dossier HDFS par défaut (.)

    hadoop fs -put <LocalFileSystem_Path> .
    

Ensuite, vous pouvez exécuter la commande ls (list files) - pour voir si les fichiers sont présents:

  • Lister les fichiers dans le dossier HDFS /tmp

    hadoop dfs -ls /tmp
    
  • Lister les fichiers dans le dossier HDFS par défaut (.)

    hadoop dfs -ls .
    

Plus d'informations sur - Shell du système de fichiers HDFS peut être trouvé ici :


Mise à jour:

Afin de vérifier si le dossier HDFS /user/Amit existe réellement, vous pouvez exécuter la commande suivante:

hadoop dfs -ls /user/Amit

Si le dossier existe, vous pourrez peut-être y copier des fichiers en utilisant:

hadoop fs -put <LocalFileSystem_Path> /user/Amit

Si le dossier n’existe pas, vous devez examiner le système de fichiers HDFS, par exemple à l’aide de:

hadoop dfs -ls /

Suivi en effectuant ls sur les sous-répertoires.

Si vous disposez des autorisations appropriées, vous pourrez créer des sous-dossiers, par exemple si le dossier /user/Amit existe, vous pourrez peut-être exécuter:

hdfs dfs -mkdir /user/Amit/newsubfolder

Notez que vous pouvez essayer d’utiliser l’option mkdir-p, qui permettra également aux dossiers parents (si vous disposez des autorisations nécessaires) de voir deux exemples ci-dessous (je suppose que vous disposez des autorisations nécessaires pour le premier commander):

hdfs dfs -mkdir /tmp/Amit/fold1/fold2
hdfs dfs -mkdir /user/Amit/fold1/fold2
2
Yaron