认识常用的Hadoop操纵:Hadoop选做题

打印 上一主题 下一主题

主题 816|帖子 816|积分 2448

(1)使用hadoop用户登录Linux系统,启动Hadoop(Hadoop的安装目录为“/usr/local/hadoop”),为hadoop用户在HDFS中创建用户目录“/user/hadoop”

(2)接着在HDFS的目录“/user/hadoop”下,创建test文件夹,并检察文件列表

(3)将Linux系统本地的“~/.bashrc”文件上传到HDFS的test文件夹中,并检察test

(4)将HDFS文件夹test复制到Linux系统本地文件系统的“/usr/local/hadoop”目录下

 
 
选做过程中出现的三个问题:
① SSH免密登录的设置不成功
② Java_HOME环境变量没设置好
③ 没有添加hadoop的可实行文件路径到系统的path环境变量里
解决完这三个问题,才得以启动hadoop和为hadoop用户创建目录。
一、选题的主思路:
步骤1:启动Hadoop
起首,切换到hadoop用户并启动Hadoop的所有服务(包括HDFS和YARN)。通常,Hadoop可以通过脚本启动,这些脚本位于Hadoop安装目录的sbin子目录下。
1su hadoop2cd /usr/local/hadoop/sbin3./start-dfs.sh4./start-yarn.sh
步骤2:在HDFS中为hadoop用户创建用户目录并检察文件列表
接下来,在HDFS中为hadoop用户创建一个目录,并检察根目录下的文件列表以确认创建成功。
1hadoop fs -mkdir /user/hadoop2hadoop fs -ls /
步骤3:在HDFS的/test文件夹下创建文件夹并上传本地文件
起首,在HDFS的/user/hadoop目录下创建一个名为test的文件夹,然后将本地的~/.bashrc文件上传到该文件夹内。
1hadoop fs -mkdir /user/hadoop/test2hadoop fs -put ~/.bashrc /user/hadoop/test3hadoop fs -ls /user/hadoop/test
步骤4:将HDFS文件夹复制到Linux本地系统
最后,将HDFS中的/user/hadoop/test目录复制到Linux系统的/usr/local/hadoop目录下。Hadoop原生下令不支持直接将HDFS目录复制到本地目录,但可以通过下载整个目录下的内容到本地的一个新目录中来间接实现。
1mkdir /usr/local/hadoop/test_download2hadoop fs -get /user/hadoop/test/* /usr/local/hadoop/test_download/
留意,这里使用了get下令配合通配符*来下载test目录下的所有内容到本地的/usr/local/hadoop/test_download/目录中,而不是直接复制目录结构。Hadoop的文件系统操纵更方向于文件级操纵,而不是直接操纵目录结构。
请根据现原形况调解路径和下令,确保操纵符合您的系统配置和安全要求
二、遇到的问题:
1、问题一:SSH无法使用密钥对认证方式登录到本田主机(localhost)或别的节点
遇到 "ermission denied (publickey,password)" 错误,通常意味着SSH无法使用密钥对认证方式登录到本田主机(localhost)或别的节点。Hadoop的守护进程启动脚本(如start-dfs.sh)通常依靠SSH无密码登录来启动各个守护进程。为相识决这个问题,你必要设置SSH免密登录。
解决方案:
1. 生成SSH密钥对(假如尚未生成)
起首,确保以hadoop用户身份实行以下下令,假如还没有生成SSH密钥对的话:1ssh-keygen -t rsa -P ""
这会在~/.ssh目录下生成id_rsa(私钥)和id_rsa.pub(公钥)文件。
2. 将公钥添加到授权列表
然后,将公钥添加到SSH的授权列表中,允许本身免密登录:1cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. 配置SSH以使用密钥认证
确保SSH配置允许使用密钥认证。编辑~/.ssh/config文件(假如不存在,则创建),添加以下内容:1Host *2 IdentityFile ~/.ssh/id_rsa3 PubkeyAuthentication yes4 PasswordAuthentication no
4. 测试SSH连接
在解决上述步骤后,测试可否无密码SSH到localhost:1ssh localhost
假如一切正常,你应该可以或许无需密码登录。
5. 重新实验启动Hadoop
完成上述设置后,退出当前的SSH会话(假如适用),然后再次实验启动Hadoop服务:1./start-dfs.sh
假如按照上述步骤操纵,你应该可以或许成功启动Hadoop服务,不再遇到权限拒绝的问题。假如问题仍然存在,可能必要检查Hadoop的配置文件(如hadoop-env.sh、core-site.xml等),确保SSH用户和干系配置准确无误。
怎么创建ssh/config文件
假如您的系统中没有.ssh/config文件,您可以手动创建一个。下面是创建并配置该文件的步骤:
创建 .ssh 目录(假如尚不存在)
起首,确保您的用户主目录下有一个名为.ssh的隐藏目录。假如不存在,请创建它:1mkdir ~/.ssh
创建或编辑 config 文件
接下来,在.ssh目录下创建或编辑config文件。您可以使用文本编辑器来完成这项任务,比如使用nano或vim:
使用 nano 编辑器:1nano ~/.ssh/config
使用 vim 编辑器:1vim ~/.ssh/config
添加配置内容
在打开的config文件中,您可以根据必要添加配置。假如您是为相识决SSH无密码登录问题而创建这个文件,可以添加类似于下面的内容:1Host *2 IdentityFile ~/.ssh/id_rsa3 PubkeyAuthentication yes4 PasswordAuthentication no
这段配置告诉SSH客户端使用默认的私钥文件(id_rsa)进行身份验证,并启用了公钥认证同时禁用了密码认证。
生存并退出编辑器
假如您使用的是nano,按Ctrl + O生存更改,然后按Ctrl + X退出。
假如您使用的是vim,按Esc键,然后输入:wq并回车来生存并退出。
设置文件权限
确保.ssh目录及其内容具有准确的权限,这对于SSH的安全性至关紧张:
1chmod 700 ~/.ssh2chmod 600 ~/.ssh/config3chmod 600 ~/.ssh/id_rsa4chmod 644 ~/.ssh/id_rsa.pub
完成以上步骤后,您就已经成功创建并配置了~/.ssh/config文件,有助于简化和安全化SSH连接过程。
hadoop@ubuntu:/usr/local/hadoop/sbin$ ssh localhost Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 5.4.0-150-generic x86_64)
Documentation: https://help.ubuntu.com
Management: https://landscape.canonical.com
Support: https://ubuntu.com/pro
Expanded Security Maintenance for Infrastructure is not enabled.
0 updates can be applied immediately.
Enable ESM Infra to receive additional future security updates. See https://ubuntu.com/esm or run: sudo pro status
Your Hardware Enablement Stack (HWE) is supported until April 2023.
The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
您已经成功通过SSH连接到localhost,这意味着SSH密钥对已经准确设置而且可以无密码登录。这一步是解决您最初在启动Hadoop时遇到的权限问题的关键。
既然您现在可以或许无密码SSH到localhost,您可以再次实验启动Hadoop服务:1hadoop@ubuntu:/usr/local/hadoop/sbin$ ./start-dfs.sh
这次应该不会再出现Permission denied (publickey,password)的错误,Hadoop的NameNode、DataNode以及Secondary NameNode应该可以或许顺利启动。
请在实行下令后检查Hadoop的日志文件(通常位于/var/log/hadoop或$HADOOP_HOME/logs),以确认所有服务都已正常启动并无错误信息。假如启动过程中仍然遇到任何问题,日志文件会提供进一步的诊断信息。
2、问题二:JAVA_HOME is not set and could not be found”,这意味着系统未能找到Java的安装路径,JAVA_HOME环境变量没有被准确设置
hadoop@ubuntu:/usr/local/hadoop/sbin$ ./start-dfs.sh ERROR: JAVA_HOME is not set and could not be found.
错误信息显示“JAVA_HOME is not set and could not be found”,这意味着系统未能找到Java的安装路径,因为JAVA_HOME环境变量没有被准确设置。Hadoop必要Java运行环境才华启动其服务。
解决方案:
查找Java安装路径: 起首,确认Java是否已安装,以及它的安装路径。可以在终端中实行以下下令:
1update-alternatives --list java
或者直接实行:1which java
这两个下令中的任何一个都应该会显示出Java的可实行文件路径,比方/usr/lib/jvm/java-8-openjdk-amd64/bin/java。从这个路径中,提取出JDK的安装目录,通常是路径中的java-8-openjdk-amd64之前的部分,即/usr/lib/jvm/java-8-openjdk-amd64。
设置JAVA_HOME环境变量:打开Hadoop的环境变量配置文件,通常是hadoop-env.sh,路径为$HADOOP_HOME/etc/hadoop/hadoop-env.sh。使用文本编辑器打开它,比方:1nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
在文件中找到关于设置JAVA_HOME的行(可能解释掉了),并将其修改为现实的Java安装路径。比方,假如Java安装在/usr/lib/jvm/java-8-openjdk-amd64,则修改为:1export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
生存并关闭文件。使修改生效: 修改完环境变量配置文件后,必要让这些变更生效。可以注销并重新登录,或者运行以下下令来立刻更新当前shell的环境变量:1source $HADOOP_HOME/etc/hadoop/hadoop-env.sh
重新实验启动Hadoop: 完成上述设置后,再次实验启动Hadoop服务:1./start-dfs.sh
颠末以上步骤,假如Java路径设置准确,您应该可以或许成功启动Hadoop的分布式文件系统(HDFS)服务。
^G Get Help ^O Write Out ^W Where Is ^K Cut Text ^J Justify ^X Exit ^R Read File ^\ Replace ^U Uncut Text ^T To Linter
看起来你似乎不小心输入了一串控制字符和提示信息。这些字符通常在使用特定文本编辑器或终端下令行界面时出现,用于实行诸如获取帮助、生存文件、剪切粘贴文本等操纵。假如你必要进一步的帮助或者有具体问题想要扣问,请直接告诉我你的需求,我会努力帮忙你。
怎么退出nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh文本编辑器
在nano文本编辑器中,要退出并生存文件,你可以按下以下按键组合:
.Ctrl + O (这是字母'O',代表Write Out),然后按回车键来生存你所做的修改。
.接着,按下 Ctrl + X 来退出编辑器。
假如你不想生存所做的修改,可以直接按下 Ctrl + X ,然后在出现的提示中选择“否”(通常通过按键盘上的大写N键,然后回车确认)来直接退出不生存。
error writing /etc/hadoop/hadoop-env.sh:No such file or directory
这个错误信息表明您实验写入的文件路径 /etc/hadoop/hadoop-env.sh 不存在。这可能是由于多种缘故原由,比如路径错误、Hadoop未准确安装或配置文件位置与预期不符。解决这个问题,您可以实验以下几个步骤:
确认Hadoop安装路径:起首,确保您使用的是准确的$HADOOP_HOME路径。假如Hadoop安装在了其他位置,比如/usr/local/hadoop,那么您应该相应地调解路径。
手动创建文件:假如确定了准确的安装路径,但是hadoop-env.sh确实不在预期的位置,您可以手动创建这个文件。使用以下下令在准确的位置创建文件:
1sudo mkdir -p /etc/hadoop2sudo touch /etc/hadoop/hadoop-env.sh3sudo nano /etc/hadoop/hadoop-env.sh
这将创建所需的目录(假如不存在),然后创建hadoop-env.sh文件,并直接打开它供编辑。
配置JAVA_HOME:一旦文件打开,您可以按照之前的指导设置JAVA_HOME环境变量。
权限问题:假如在创建或编辑文件时遇到权限问题,确保使用了适当的权限。在使用sudo下令创建或编辑系统级别的配置文件时,通常可以制止这类问题。
检查Hadoop配置文档:假如Hadoop是从包管理器安装的(如APT或Yum),配置文件可能位于差别的路径。查阅Hadoop的安装文档,确认hadoop-env.sh简直切推荐存放位置。
请根据您的具体情况选择符合的步骤操纵。
4、问题三:hadoop用户没有被添加到sudoers文件中
hadoop@ubuntu:/usr/local/hadoop/sbin$ sudo mkdir -p /etc/hadoop [sudo] password for hadoop: hadoop is not in the sudoers file. This incident will be reported. hadoop@ubuntu:/usr/local/hadoop/sbin$
您在实验以hadoop用户身份使用sudo下令来创建目录时遇到了权限问题,因为该用户没有被添加到sudoers文件中。sudoers文件是用来指定哪些用户具有实行sudo下令(即以超级用户或其他用户身份实行下令)权限的配置文件。
要解决这个问题,您必要以具有管理员权限的用户(通常是root用户)登录,然后将hadoop用户添加到sudoers文件中。您可以按照以下步骤操纵:
起首,切换到root用户。假如您知道root用户的密码,可以使用:1sudo -i或者直接登录:1su -
使用文本编辑器(如nano或vi)打开/etc/sudoers文件。推荐使用visudo下令来安全地编辑此文件,因为它会检查语法并制止锁定本身出错。
1visudo
在打开的文件中,找到类似下面这样的行(可能在文件的末端):
# User privilege specification
root ALL=(ALL:ALL) ALL
在此部分下方,添加一行来授予hadoop用户sudo权限。比方:
hadoop ALL=(ALL:ALL) NOPASSWD:ALL
这行意味着hadoop用户可以在任何主机上运行任何下令,而且不必要输入密码。假如出于安全考虑,您盼望hadoop用户在使用sudo时输入密码,可以去掉NOPASSWD:部分。生存并关闭文件。假如您使用的是nano,可以通过按Ctrl+X,然后按Y键确认生存更改,最后按回车键退出。假如是vi或vim,可以按下Esc键,然后输入:wq并回车来生存并退出。现在,您可以退出root用户会话,回到hadoop用户下,再次实验之前的下令应该就能成功了:1exit2hadoop@ubuntu:/usr/local/hadoop/sbin$ sudo mkdir -p /etc/hadoop3[sudo] password for hadoop: 
请确保在进行这些操纵时格外小心,错误地编辑sudoers文件可能会导致系统管理权限出现问题。
hadoop@ubuntu:/usr/local/hadoop/sbin$ su - Password: root@ubuntu:~# visudo root@ubuntu:~# exit logout hadoop@ubuntu:/usr/local/hadoop/sbin$ sudo mkdir -p /etc/hadoop hadoop@ubuntu:/usr/local/hadoop/sbin$ sudo mkdir -p /etc/hadoop hadoop@ubuntu:/usr/local/hadoop/sbin$ sudo mkdir -p /etc/hadoop hadoop@ubuntu:/usr/local/hadoop/sbin$ sudo touch /etc/hadoop/hadoop-env.sh hadoop@ubuntu:/usr/local/hadoop/sbin$ sudo nano /etc/hadoop/hadoop-env.sh hadoop@ubuntu:/usr/local/hadoop/sbin$ source $HADOOP_HOME/etc/hadoop/hadoop-env.sh hadoop@ubuntu:/usr/local/hadoop/sbin$ ./start-dfs.sh Starting namenodes on [localhost] localhost: ERROR: JAVA_HOME is not set and could not be found. Starting datanodes localhost: ERROR: JAVA_HOME is not set and could not be found. Starting secondary namenodes [ubuntu] ubuntu: ERROR: JAVA_HOME is not set and could not be found. hadoop@ubuntu:/usr/local/hadoop/sbin$
您遇到的问题是由于JAVA_HOME环境变量未设置或设置禁绝确,导致Hadoop启动失败。Hadoop必要知道Java安装的位置来运行其各个组件。您必要设置JAVA_HOME环境变量,指向您的Java安装目录。下面是设置JAVA_HOME的步骤:
查找Java安装路径:起首,您必要确定Java安装在哪个目录下。通常,Java安装在/usr/lib/jvm目录下的某个子目录,比方/usr/lib/jvm/java-8-openjdk-amd64。您可以使用以下下令来查找Java安装位置:1update-alternatives --list java
或者直接检察可能的安装目录:1ls -l /usr/lib/jvm
设置JAVA_HOME:一旦找到Java安装路径,您必要将其设置为JAVA_HOME环境变量。这可以通过编辑hadoop-env.sh文件来完成。您之前已经打开了这个文件,现在必要添加或修改以下行:
1export JAVA_HOME=/path/to/your/java/installation
将/path/to/your/java/installation替换为现实的Java安装路径,比方:
1export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
生存并退出编辑器:在nano中,按Ctrl+O生存更改,然后按Ctrl+X退出。
使更改生效:为了使更改立刻生效,您必要重新加载hadoop-env.sh脚本。您之前实验过但未显示成功消息,准确做法应该是:1source /etc/hadoop/hadoop-env.sh
或者,更保险的做法是完全退出当前终端会话再重新登录,这样环境变量的改变会主动加载。
重新实验启动HDFS:现在,再次实验启动HDFS服务,应该不会再出现关于JAVA_HOME的错误了:
1./start-dfs.sh
完成以上步骤后,假如Java路径设置准确,Hadoop应该可以或许正常启动了。假如另有其他问题,请检查Hadoop的配置文件以及Java是否准确安装和配置。
hadoop@ubuntu:/usr/local/hadoop/sbin$ update-alternatives --list java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java hadoop@ubuntu:/usr/local/hadoop/sbin$ ls -l /usr/lib/jvm total 12 lrwxrwxrwx 1 root root 20 May 6 2023 java-1.8.0-openjdk-amd64 -> java-8-openjdk-amd64 drwxr-xr-x 5 root root 4096 Sep 5 22:31 java-8-openjdk-amd64 drwxrwxrwx 8 hadoopqs hadoopqs 4096 Sep 4 08:14 jdk11.0.24_8 drwxr-xr-x 8 root root 4096 Sep 9 20:04 jdk1.8.0_371 hadoop@ubuntu:/usr/local/hadoop/sbin$
根据您提供的信息,Java 8的安装路径为/usr/lib/jvm/java-8-openjdk-amd64。接下来,您必要把这个路径设置到JAVA_HOME环境变量中。您之前已经知道了怎样编辑hadoop-env.sh文件来设置JAVA_HOME,现在让我们具体操纵一下:
编辑 hadoop-env.sh 文件:1sudo nano /etc/hadoop/hadoop-env.sh
设置 JAVA_HOME:在文件中找到关于设置JAVA_HOME的行(假如没有,则在文件的适当位置新增一行),并将其修改为准确的Java路径。根据您的系统情况,应该设置为:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
确保这一行没有被解释掉(即行首没有#)。
生存并退出:按 Ctrl+O 生存更改,然后按 Ctrl+X 退出编辑器。
使修改生效:为了让修改立刻生效,您必要重新加载hadoop-env.sh配置文件。但是,您之前实验的下令似乎有误,应该直接使用:
1source /etc/hadoop/hadoop-env.sh
这样做会立刻更新当前终端会话的环境变量设置。
再次实验启动 HDFS:现在,再次实验启动Hadoop的HDFS服务:
1./start-dfs.sh
完成上述步骤后,Hadoop应该可以或许辨认到准确的JAVA_HOME路径,并顺利启动。假如仍然遇到问题,请检查Hadoop的日志文件以获取更详细的错误信息。
5、问题五:设置了JAVA_HOME,但启动Hadoop时仍然提示JAVA_HOME未设置,解决方法:实验完全退出终端后再重新登录
hadoopqs@ubuntu:/usr/local/hadoop/sbin$ ./start-dfs.sh Starting namenodes on [localhost] Starting datanodes Starting secondary namenodes [ubuntu] hadoopqs@ubuntu:/usr/local/hadoop/sbin$
看起来您已经成功解决了JAVA_HOME未设置的问题,而且Hadoop的NameNode、DataNode以及Secondary NameNode都已经成功启动了。没有出现错误信息,这是个好迹象,表明您的Hadoop集群服务已经正常启动。
接下来,您可以进行一些根本的验证步骤来确认Hadoop是否运行正常:
检查进程:起首,可以通过检查系统中的进程来验证Hadoop守护进程是否正在运行。可以使用如下下令
1jps
这个下令会列出所有Java进程,您应该能看到NameNode, DataNode, 和 SecondaryNameNode(或在Hadoop 3.x及以后版本中的Namenode和Datanode,因为SecondaryNameNode已被替换为其他高可用机制)。
检察日志:检查Hadoop的各类日志文件,以确认服务启动过程中没有其他潜伏问题。日志文件通常位于$HADOOP_LOG_DIR(Hadoop配置中界说的目录,默认可能是/var/log/hadoop)或Hadoop安装目录的logs子目录下。
访问Web UI:Hadoop提供了一系列Web UI,用于监控集群状态。默认情况下,您可以访问以下地址来检察NameNode和DataNode的状态:
.
NameNode: http://localhost:50070
DataNode: http://localhost:50075
假如一切看起来正常,那么恭喜您,Hadoop集群已经成功启动并运行。接下来,您可以开始摆设MapReduce任务或者配置Hadoop的其他组件,比如YARN和Hadoop的高可用模式等,以满意更复杂的应用需求。
6、问题六:Hadoop的可实行文件路径没有被准确添加到系统的PATH环境变量中,因此无法直接在任何目录下实行hadoop下令,必要将Hadoop的bin目录添加到PATH中
hadoopqs@ubuntu:/usr/local/hadoop/sbin$ jps 5570 SecondaryNameNode 5171 NameNode 5734 Jps 5325 DataNode hadoopqs@ubuntu:/usr/local/hadoop/sbin$ ./start-dfs.sh Starting namenodes on [localhost] localhost: namenode is running as process 5171. Stop it first and ensure /tmp/hadoop-hadoopqs-namenode.pid file is empty before retry. Starting datanodes localhost: datanode is running as process 5325. Stop it first and ensure /tmp/hadoop-hadoopqs-datanode.pid file is empty before retry. Starting secondary namenodes [ubuntu] ubuntu: secondarynamenode is running as process 5570. Stop it first and ensure /tmp/hadoop-hadoopqs-secondarynamenode.pid file is empty before retry. hadoopqs@ubuntu:/usr/local/hadoop/sbin$ ./start-yarn.sh Starting resourcemanager Starting nodemanagers hadoopqs@ubuntu:/usr/local/hadoop/sbin$ hadoop fs -mkdir /user/hadoop hadoop: command not found hadoopqs@ubuntu:/usr/local/hadoop/sbin$
您已经成功启动了Hadoop的HDFS组件(包括NameNode, DataNode, 和 SecondaryNameNode)。接下来实验启动YARN时,固然没有显示错误信息,但看起来YARN干系的进程启动情况没有通过jps下令展示出来,这可能是因为它们尚未完全启动,或者启动过程中遇到了问题。不外,主要问题是您在实验运行hadoop fs -mkdir /user/hadoop下令时,系统提示hadoop: command not found。
这个问题通常是因为Hadoop的可实行文件路径没有被准确添加到系统的PATH环境变量中,因此无法直接在任何目录下实行hadoop下令。您必要将Hadoop的bin目录添加到PATH中。按照以下步骤操纵:
编辑bash配置文件:打开您的bash配置文件,对于bash shell,这通常是~/.bashrc或~/.bash_profile(取决于您的系统和配置)。可以使用文本编辑器,如:
1nano ~/.bashrc
添加Hadoop路径:在文件的末端添加以下行,以将Hadoop的bin目录参加PATH中。请根据您的现实Hadoop安装路径调解:
1export HADOOP_HOME=/usr/local/hadoop2export PATH=$PATHHADOOP_HOME/bin
使修改生效:生存文件并退出编辑器。然后,让修改生效,可以实行:source ~/.bashrc
验证:现在,再次实验运行hadoop下令,看是否能成功辨认:hadoop version
假如配置准确,这将显示Hadoop的版本信息。
之后,您应该可以或许成功运行hadoop fs -mkdir /user/hadoop下令来创建HDFS目录了。假如YARN服务启动情况仍不确定,可以通过检查干系日志文件或再次使用jps下令检察是否有YARN的ResourceManager和NodeManager进程在运行
hadoopqs@ubuntu:/usr/local/hadoop/sbin$ hadoop version Hadoop 3.3.5 Source code repository https://github.com/apache/hadoop.git -r 706d88266abcee09ed78fbaa0ad5f74d818ab0e9 Compiled by stevel on 2023-03-15T15:56Z Compiled with protoc 3.7.1 From source with checksum 6bbd9afcf4838a0eb12a5f189e9bd7 This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.3.5.jar hadoopqs@ubuntu:/usr/local/hadoop/sbin$ hadoop fs -mkdir /user/hadoop mkdir: `/user/hadoop': File exists hadoopqs@ubuntu:/usr/local/hadoop/sbin$ hadoop fs -ls / Found 1 items drwxr-xr-x - hadoopqs supergroup 0 2024-09-10 05:49 /user hadoopqs@ubuntu:/usr/local/hadoop/sbin$
很好,您已经成功验证了Hadoop的版本信息,这意味着Hadoop的可实行文件路径已经被准确添加到了系统的PATH环境变量中。当您实验创建HDFS目录/user/hadoop时,收到“File exists”的消息,这表明该目录已经存在,所以无需再次创建。
接下来,您可以通过列出/user目录的内容来确认/user/hadoop确实已经存在,您现实上已经这么做了,下令输出显示了如下信息:
1Found 1 items2drwxr-xr-x - hadoopqs supergroup 0 2024-09-10 05:49 /user
这表现/user目录下至少有一个条目(在这个情况下是/user/hadoop目录),而且它是由用户hadoopqs拥有,所属组为supergroup。
现在,您可以继续进行下一步操纵,比如上传文件到HDFS、运行MapReduce作业、配置YARN(假如还没有完成的话),或是进行更高级的Hadoop集群管理与维护工作。假如您必要进一步的帮助或指导,请随时告知。
hadoopqs@ubuntu:/usr/local/hadoop/sbin$ mkdir /usr/local/hadoop/test_download hadoopqs@ubuntu:/usr/local/hadoop/sbin$ hadoop fs -get /user/hadoop/test/* /usr/local/hadoop/test_download/ hadoopqs@ubuntu:/usr/local/hadoop/sbin$
您刚刚创建了一个本地目录/usr/local/hadoop/test_download,并实验使用Hadoop的文件系统下令hadoop fs -get从HDFS的/user/hadoop/test/目录下载所有文件到该本地目录。这个下令假定HDFS上的/user/hadoop/test/目录下存在一些文件可以下载。
请留意,假如在实行hadoop fs -get下令时没有出现任何错误信息,一般情况下这意味着下令实行成功,文件已经被下载到指定的本地目录。然而,由于下令没有输出确认信息,我们不能直接从这段交互记录中判断是否有文件被成功下载,或者/user/hadoop/test/目录下是否真的有文件存在。
为了确认操纵结果,您可以实行以下步骤:
检查下载目录:通过ls下令检察/usr/local/hadoop/test_download/目录,确认是否有文件被下载下来:1ls /usr/local/hadoop/test_download/
检察HDFS源目录:再次确认HDFS源目录/user/hadoop/test/的内容,以相识原始文件情况,可以使用:
1hadoop fs -ls /user/hadoop/test/
假如在下载目录中看到了预期的文件,那就说明文件已经成功下载。假如发现任何问题,比如文件未下载或数量不对,检查HDFS源目录的文件情况,以及是否有任何错误或警告信息被输出但未被捕获。假如有特定错误,根据错误信息采取相应的解决措施。
hadoopqs@ubuntu:/usr/local/hadoop/sbin$ ls /usr/local/hadoop/test_download/ hadoopqs@ubuntu:/usr/local/hadoop/sbin$ hadoop fs -ls /user/hadoop/test/ Found 1 items -rw-r--r-- 1 hadoopqs supergroup 4006 2024-09-15 08:26 /user/hadoop/test/.bashrc hadoopqs@ubuntu:/usr/local/hadoop/sbin$
从您的下令输出来看,HDFS的/user/hadoop/test/目录中确实有一个文件.bashrc,巨细为4006字节。但是,当您列出本地的/usr/local/hadoop/test_download/目录时,没有显示出任何文件,这表明之前实验使用hadoop fs -get下令下载文件可能没有成功,或者下载的文件由于某些缘故原由没有出现在预期的目录中。
这里有几个可能的缘故原由和相应的检查步骤:
权限问题:确认Hadoop用户是否有权限读取HDFS上的文件以及写入本地目标目录。
文件名隐藏:留意到HDFS中的文件名为.bashrc,这是一个以点开头的隐藏文件。在Linux系统中,ls下令默认不显示隐藏文件。实验使用ls -a /usr/local/hadoop/test_download/来检察是否包含了这个隐藏文件。
下令实行错误:确认在实行hadoop fs -get下令时是否出现了任何错误信息,偶然候下令可能因为权限、路径错误等缘故原由未能成功实行,但错误信息没有被留意到。
文件已存在:假如之前实验下载过且文件已存在于目标目录中,hadoop fs -get下令不会覆盖现有文件,除非使用了-f或--force选项逼迫覆盖。
建议您起首使用ls -a下令检查本地目录,确认文件是否下载但被隐藏了。假如没有看到文件,可以实验再次实行下载下令,这次加上-f参数逼迫覆盖本地存在的文件(假如有的话):
1hadoop fs -get -f /user/hadoop/test/*.bashrc /usr/local/hadoop/test_download/
或者,直接指定文件名而不是使用通配符:
1hadoop fs -get /user/hadoop/test/.bashrc /usr/local/hadoop/test_download/
实行后,再次检查本地目录,看文件是否成功下载。
hadoopqs@ubuntu:/usr/local/hadoop/sbin$ hadoop fs -get -f /user/hadoop/test/*.bashrc /usr/local/hadoop/test_download/ hadoopqs@ubuntu:/usr/local/hadoop/sbin$ hadoop fs -get /user/hadoop/test/.bashrc /usr/local/hadoop/test_download/ get: `/usr/local/hadoop/test_download/.bashrc': File exists hadoopqs@ubuntu:/usr/local/hadoop/sbin$
您在实验使用hadoop fs -get下令下载文件时收到了File exists的错误,这说明目标文件/usr/local/hadoop/test_download/.bashrc已经在本地存在,而您没有使用-f或--force选项来覆盖它。
假如您盼望覆盖已存在的文件,必要在下令中加上-f选项,如下所示:
1hadoop fs -get -f /user/hadoop/test/.bashrc /usr/local/hadoop/test_download/
这个下令会逼迫下载HDFS上的.bashrc文件,并覆盖本地同名文件(假如存在)。不外,从您的操纵序列来看,您在第二次实验下载时似乎并未加上-f选项,这可能是出于制止意外覆盖文件的考虑。
既然您已经知道目标文件存在,您有两种选择:
确认文件内容:起首检查现有的/usr/local/hadoop/test_download/.bashrc文件是否已经是您想要的文件,假如是,则无需再次下载。
覆盖下载:假如必要从HDFS下载最新的文件覆盖本地文件,使用带有-f的下令来逼迫下载并覆盖。
请根据您的现实需求选择符合的操纵。假如决定覆盖,请记得使用准确的下令进行下载。
hadoopqs@ubuntu:/usr/local/hadoop/sbin$ hadoop fs -get -f /user/hadoop/test/.bashrc /usr/local/hadoop/test_download/ hadoopqs@ubuntu:/usr/local/hadoop/sbin$
您已经使用了带有-f选项的hadoop fs -get下令来逼迫从HDFS的/user/hadoop/test/目录下载.bashrc文件到本地的/usr/local/hadoop/test_download/目录,并覆盖了原有文件(假如存在)。既然下令实行没有返回任何错误信息,我们可以假设文件已经被成功下载并覆盖(假如之前存在的话)。
现在,您可以再次检查本地目录以确认文件是否已被准确下载和覆盖:ls -l /usr/local/hadoop/test_download/
这条下令会列出目录内容并显示详细信息,包括文件巨细和修改时间,帮助您确认下载的文件是最新的,而且没有问题。
假如一切符合预期,接下来您可以继续进行其他Hadoop干系的操纵,比如上传文件至HDFS、运行MapReduce作业、配置和使用YARN资源管理等。假如在操纵过程中遇到任何问题,欢迎随时提问。
hadoopqs@ubuntu:/usr/local/hadoop/sbin$ ls -l /usr/local/hadoop/test_download/ total 0 hadoopqs@ubuntu:/usr/local/hadoop/sbin$
您实行ls -l /usr/local/hadoop/test_download/下令后,结果显示目录的总巨细为0,且没有列出任何文件。这可能意味着尽管您实验使用hadoop fs -get -f下令逼迫下载文件,但现实上文件并没有成功下载到指定的本地目录,或者下载后的文件被立刻删除了,又或者是存在其他未捕获的错误。
考虑到之前的操纵看似没有报错,这里有几个可能的缘故原由和建议的步骤:
权限问题:固然您能实行Hadoop下令,但请确认/usr/local/hadoop/test_download/目录对当前用户有富足的权限(读写权限)来存放下载的文件。
文件系统问题:偶然,文件系统异常也可能导致文件看似复制成功但现实上并未写入。检查磁盘空间是否富足,以及文件系统是否处于健康状态。
下令输出重定向或日志:偶然候,下令的输出可能被重定向或错误信息被忽略了。检查是否有任何干系的日志文件,如Hadoop的日志,可能会提供失败缘故原由的线索。
再次实验下载:直接明确指定文件路径,再次实验下载,并密切关注下令实行过程中的任何输出信息。
直接检察HDFS文件:偶然候,问题可能出在HDFS的文件本身,比如文件现实上是空的。可以再次检察HDFS上的文件详情:
1hadoop fs -ls -R /user/hadoop/test/.bashrc2hadoop fs -cat /user/hadoop/test/.bashrc
确认文件非空且内容如预期。
假如以上步骤都不能解决问题,可能必要更详细的错误信息或系统日志来进行深入排查。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表