Fedora 명령 터미널에서 다음 코드를 얻습니다.
[root@localhost python_code]# pwd
/root/python_code
[root@localhost python_code]# cd ..
[root@localhost ~]# ls
anaconda-ks.cfg python_code
[root@localhost ~]# cd /usr/local
[root@localhost local]# ls
bin games hadoop-2.6.4.tar.gz input lib libexec sbin src
etc hadoop include jdk1.8.0_77 lib64 output share
[root@localhost local]# cd hadoop
[root@localhost hadoop]# ls
bin include libexec logs README.txt share
etc lib LICENSE.txt NOTICE.txt sbin
[root@localhost hadoop]# pwd
/usr/local/hadoop
[root@localhost hadoop]# bin/hdfs dfs -copyFromLocal /root/python_code/input_data.csv /usr/local/hadoop/input_localuser
copyFromLocal: `/usr/local/hadoop/input_localuser': No such file or directory
[root@localhost hadoop]# ls
bin include libexec logs README.txt share
etc lib LICENSE.txt NOTICE.txt sbin
[root@localhost hadoop]# mkdir input_localuser
[root@localhost hadoop]# ls
bin include lib LICENSE.txt NOTICE.txt sbin
etc input_localuser libexec logs README.txt share
[root@localhost hadoop]# bin/hdfs dfs -copyFromLocal /root/python_code/input_data.csv /usr/local/hadoop/input_localuser
copyFromLocal: `/usr/local/hadoop/input_localuser': No such file or directory
[root@localhost hadoop]# bin/hdfs dfs -copyFromLocal /root/python_code/input_data.csv home/usr/local/hadoop/input_localuser
copyFromLocal: `home/usr/local/hadoop/input_localuser': No such file or directory
[root@localhost hadoop]# pwd
/usr/local/hadoop
[root@localhost hadoop]# ls
bin include lib LICENSE.txt NOTICE.txt sbin
etc input_localuser libexec logs README.txt share
[root@localhost hadoop]#
추가 코드:
[root@localhost hadoop]# cd ~
[root@localhost ~]# ls
anaconda-ks.cfg python_code
[root@localhost ~]# cd python_code
[root@localhost python_code]# ls
data_generator.py input_data.csv mapper_project.py reducer_project.py
[root@localhost python_code]#
위에 표시된 대로 내 디렉터리는 루트 폴더에 있으며 해당 폴더의 파일을 hadoop 내의 디렉터리 python_code
로 복사하려고 합니다 .input_userlocal
그러나 다음 명령은 오류를 발생시킵니다.
bin/hdfs dfs -copyFromLocal /root/python_code/input_data.csv /usr/local/hadoop/input_localuser
copyFromLocal: `/usr/local/hadoop/input_localuser': No such file or directory
답변1
첫째, Hadoop 명령이 올바르지 않을 수 있습니다.
dfs -copyFromLocal
두 개의 매개 변수, 즉 로컬 파일(지정한 대로)과 Hadoop URI가 필요합니다. 당신이 준 파일 경로가 아닙니다.
Hadoop 웹 페이지에서
모든 FS 셸 명령은 경로 URI를 매개변수로 사용합니다. URI 형식은chem://authority/path입니다. HDFS의 경우 구성표는 hdfs이고 로컬 FS의 경우 구성표는 파일입니다. 구성표와 권한은 선택 사항입니다. 지정하지 않으면 구성에 지정된 기본 구성표가 사용됩니다. HDFS 파일 또는 디렉터리(예: /parent/child)는 hdfs://namenodehost/parent/child로 지정하거나 간단히 /parent/child로 지정할 수 있습니다(구성이 hdfs://namenodehost를 가리키도록 설정되어 있다고 가정).
FS 셸의 대부분 명령은 해당 Unix 명령처럼 작동합니다. 각 명령에 대한 차이점이 설명되어 있습니다. 오류 메시지는 stderr로 전송되고 출력은 stdout으로 전송됩니다.
Hadoop 인스턴스의 구조는 모르지만 대상은 파일 시스템뿐만 아니라 구조의 이름을 기반으로 해야 합니다.
둘째, 위의 내용을 보여주지 않았습니다 /root/python_code/
. 그것이 존재한다고 확신합니까 input_data.csv
?