2月datawhale组队学习:大数据

news2024/11/16 11:57:26

文章目录

    • 一、大数据概述
    • 二、 Hadoop
      • 2.1 Hadoop概述
      • 2.2 su:Authentication failure
      • 2.3 使用sudo命令报错`xxx is not in the sudoers file. This incident will be reported.`
      • 2.4 创建用户datawhale,安装java8:
      • 2.5 安装单机版Hadoop
        • 2.5.1 安装Hadoop
        • 2.5.2 修改hadoop-env.sh文件配置
        • 2.5.3 Hadoop伪分布式安装
        • 2.5.4 启动Hadoop
      • 2.6 Hadoop3.3.1集群模式安装
        • 2.6.1 修改配置文件
        • 2.6.2 修改hosts文件
        • 2.6.3 配置节点和公钥
        • 2.6.4 启动Hadoop
        • 2.6.5 测试HDFS集群以及MapReduce任务程序
    • 三、HDFS
      • 3.1 HDFS概述
      • 3.2 HDFS的使用和管理
        • 3.2.1 启动HDFS
        • 3.2.2 验证HDFS运行状态
      • 3.3 常用HDFS命令
        • 3.3.1 .`ls`命令
          • 5.`put`命令(拷贝)
        • 3.3.2 `moveFromLocal`命令(拷贝后删除本地)
        • 3.3.3 `get`命令
          • 3.3.4 `rm`命令
          • 9.`mkdir`命令
          • 10.`cp`命令
          • 11. `mv`命令
          • 12.`count`命令
          • 13. `du`命令
          • 14.`setrep`命令
          • 15. `stat`命令
          • 16.`balancer`命令
          • 17. `dfsadmin`命令
          • 18. 其他命令
            • 18.1 `cat`命令
            • 18.2 `appendToFile`命令
            • 18.3 `chown`命令

本文参考datawhale项目juicy-bigdata,欢迎star。

在这里插入图片描述

一、大数据概述

见datawhale大数据教程

二、 Hadoop

  由于Hadoop本身是使用Java语言编写的,因此Hadoop的开发和运行都需要Java的支持,一般要求Java 6或者更新的版本

2.1 Hadoop概述

见datawhale大数据教程,有空再整理。

2.2 su:Authentication failure

在 Terminal 输入 su 或者输入 su - root 后,输入登录密码,显示su:Authentication failure
解决方法:

  • 输入 sudo passwd root,显示 [sudo] password for User:
  • Enter new UNIX password(输入登录密码):
  • Retypenew UNIX password:
  • 显示 passws: password updated successfully,这时候就可以用刚设置的密码进入 root 了。

2.3 使用sudo命令报错xxx is not in the sudoers file. This incident will be reported.

原因分析:当前用户没有sudo权限,需在/etc/sudoers系统文件添加vboxuser ALL=(ALL) ALL语句。

su 				    # 切换到超级用户
vi /etc/sudoers     # 打开/etc/sudoers文件

进入编辑模式,找到“root ALL=(ALL:ALL) ALL”一行,在下面插入“xxx ALL=(ALL:ALL) ALL”语句
在这里插入图片描述

2.4 创建用户datawhale,安装java8:

1. 安装java8
点此下载安装包:(密码: hO38),输入以下命令:

sudo adduser datawhale								# 创建datawhale用户
su datawhale										# 切换到datawhale用户
sudo tar -xzvf jdk-8u311-linux-x64.tar.gz -C /opt   # 解压安装包到opt文件夹
sudo mv /opt/jdk1.8.0_311/ /opt/java    			# 将jdk1.8.0_311目录重命名为java 								
sudo chown -R datawhale:datawhale /opt/java			# 修改java目录的所属用户 										

2. 修改系统环境变量
输入sudo vim /etc/profile 打开/etc/profile文件,在文件末尾输入:

#java
export JAVA_HOME=/opt/java
export PATH=$JAVA_HOME/bin:$PATH 

保存后输入source /etc/profile使环境配置生效。输入java -version,出现以下信息表示安装成功:

java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)

3. 设置SSH登录权限

  对于Hadoop的伪分布和全分布而言,Hadoop名称节点(NameNode)需要启动集群中所有机器的Hadoop守护进程,这个过程可以通过SSH登录来实现。Hadoop并没有提供SSH输入密码登录的形式,因此,为了能够顺利登录每台机器,需要将所有机器配置为名称节点,可以通过SSH无密码的方式登录它们。
  为了实现SSH无密码登录方式,首先需要让NameNode生成自己的SSH密钥,命令如下:

su datawhale 		# 切换为datawhale用户
ssh-keygen -t rsa   # 执行该命令后,遇到提示信息,一直按回车就可以

  NameNode生成密钥之后,需要将它的公共密钥发送给集群中的其他机器。我们可以将id_dsa.pub中的内容添加到需要SSH无密码登录的机器的~/ssh/authorized_keys目录下,然后就可以无密码登录这台机器了。对于无密码登录本机而言,可以执行以下命令:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

这时可以通过ssh localhost命令来检测一下是否需要输入密码。 测试ssh连接,看到“sucessful login”,则配置成功

datawhale@loaclhost:~$ ssh localhost
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-53-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.

2.5 安装单机版Hadoop

2.5.1 安装Hadoop

点此下载安装包:(密码: hO38),输入以下命令:

sudo tar -xzvf hadoop-3.3.1.tar.gz -C /opt/     # 解压安装包到opt文件夹
sudo mv /opt/hadoop-3.3.1/ /opt/hadoop          # 重命名为hadoop
sudo chown -R datawhale:datawhale /opt/hadoop   # 修改hadoop目录的所属用户和所属组
vim /etc/profile								# 修改系统环境变量

在文件末尾,添加如下内容:

#hadoop
export HADOOP_HOME=/opt/hadoop
export PATH=$HADOOP_HOME/bin:$PATH

输入source /etc/profile重启环境变量。再输入hadoop version查看版本号命令验证是否安装成功:

Hadoop 3.3.1
Source code repository https://github.com/apache/hadoop.git -r a3b9c37a397ad4188041dd80621bdeefc46885f2
Compiled by ubuntu on 2021-06-15T05:13Z
Compiled with protoc 3.7.1
From source with checksum 88a4ddb2299aca054416d6b7f81ca55
This command was run using /opt/hadoop/share/hadoop/common/hadoop-common-3.3.1.jar

  如果想切换另一个用户,使得刚才安装的Java和Hadoop也能使用,可以在切换新用户后重启环境变量,也就是输入source /etc/profile,这样新用户就可以使用了,否则会显示没有这个命令。

2.5.2 修改hadoop-env.sh文件配置

  对于单机安装,首先需要更改hadoop-env.sh文件,用于配置Hadoop运行的环境变量,命令如下:

cd /opt/hadoop/
vim etc/hadoop/hadoop-env.sh

  在文件末尾,添加如下内容:export JAVA_HOME=/opt/java/
  Hadoop文档中还附带了一些例子来供我们测试,此时可以运行WordCount的示例,检测一下Hadoop安装是否成功。执行命令如下:

mkdir input									#在/opt/hadoop/目录下新建input文件夹,用来存放输入数据
cp etc/hadoop/*.xml input					# 将etc/hadoop/文件夹下的配置文件拷贝至input文件夹中
# 在hadoop目录下新建output文件夹,用于存放输出数据,并运行wordCount示例
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar grep input output 'dfs[a-z.]+'
cat output/* 								# 查看输出数据的内容

dfsadmin									# 输出结果

这意味着,在所有的配置文件中,只有一个符合正则表达式dfs[a-z.]+的单词,输出结果正确。

2.5.3 Hadoop伪分布式安装

  分布式安装是指在一台机器上模拟一个小的集群。当Hadoop应用于集群时,不论是伪分布式还是真正的分布式运行,都需要通过配置文件对各组件的协同工作进行设置。对于伪分布式配置,我们需要修改core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml这4个文件。
1.修改core-site.xml文件配置

  打开core-site.xml文件,命令如下:

vim /opt/hadoop/etc/hadoop/core-site.xml

  添加下面配置到<configuration>与</configuration>标签之间,添加内容如下:

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

  上面配置中,<name>标签代表了配置项的名字,<value>项设置的是配置的值。对于该文件,我们只需要在其中指定HDFS的地址和端口号,端口号按照官方文档设置为9000即可。

2.修改hdfs-site.xml文件配置

  打开hdfs-site.xml文件,命令如下:

vim /opt/hadoop/etc/hadoop/hdfs-site.xml

  添加下面配置到<configuration>与</configuration>标签之间,添加内容如下:

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

  对于hdfs-site.xml文件,我们设置replication值为1,这也是Hadoop运行的默认最小值,用于设置HDFS文件系统中同一份数据的副本数量。

3.修改mapred-site.xml文件配置

  打开mapred-site.xml文件,命令如下:

vim /opt/hadoop/etc/hadoop/mapred-site.xml

  添加下面配置到<configuration>与</configuration>标签之间,修改后的mapred-site.xml文件内容如下:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>

4.修改yarn-site.xml文件配置

vim /opt/hadoop/etc/hadoop/yarn-site.xml

添加下面配置到<configuration>与</configuration>标签之间。

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

  对于本书的实验,通过上述配置后,就已经满足运行要求了。更详细的配置可以参考官方文档。

2.5.4 启动Hadoop

1. 格式化分布式文件系统
  在配置完成后,首先需要初始化文件系统,由于Hadoop的很多工作是在自带的 HDFS文件系统上完成的,因此,需要将文件系统初始化之后才能进一步执行计算任务。执行初始化的命令如下:

su datawhale
hdfs namenode -format

在看到运行结果中出现“successfully formatted”之后,则说明初始化成功。

2023-02-16 02:44:43,852 INFO common.Storage: Storage directory /tmp/hadoop-datawhale/dfs/name has been successfully formatted.
2023-02-16 02:44:43,888 INFO namenode.FSImageFormatProtobuf: Saving image file /tmp/hadoop-datawhale/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
2023-02-16 02:44:43,991 INFO namenode.FSImageFormatProtobuf: Image file /tmp/hadoop-datawhale/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 401 bytes saved in 0 seconds .
2023-02-16 02:44:44,005 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2023-02-16 02:44:44,032 INFO namenode.FSNamesystem: Stopping services started for active state
2023-02-16 02:44:44,033 INFO namenode.FSNamesystem: Stopping services started for standby state
2023-02-16 02:44:44,037 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
2023-02-16 02:44:44,038 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at zhxscut/127.0.1.1
************************************************************/

2. 启动Hadoop
  运行/opt/hadoop/sbin/start-all.sh就可以启动Hadoop的所有进程(等待10s)。可以通过提示信息得知,所有的启动信息都写入到对应的日志文件。如果出现启动错误,则可以查看相应的错误日志。

若要关闭Hadoop,运行/opt/hadoop/sbin/stop-all.sh

datawhale@zhxscut:/opt/hadoop$ /opt/hadoop/sbin/start-all.sh

WARNING: Attempting to start all Apache Hadoop daemons as datawhale in 10 seconds.
WARNING: This is not a recommended production deployment configuration.
WARNING: Use CTRL-C to abort.
Starting namenodes on [localhost]
Starting datanodes
Starting secondary namenodes [zhxscut]
Starting resourcemanager
Starting nodemanagers

3. 查看Hadoop进程
  运行之后,输入jps命令可以查看所有的Java进程。正常启动后,可以得到如下类似结果:

datawhale@zhxscut:/opt/hadoop$ jps
1441 NameNode
1738 SecondaryNameNode
1548 DataNode
1933 ResourceManager
2031 NodeManager
2367 Jps

4. Hadoop WebUI管理界面
  此时,可以通过http://localhost:8088访问Web界面,查看Hadoop的信息。
5. 测试HDFS集群以及MapReduce任务程序
  利用Hadoop自带的WordCount示例程序进行检查集群,并在主节点上进行如下操作,创建执行MapReduce任务所需的HDFS目录:

hadoop fs -mkdir /user
hadoop fs -mkdir /user/datawhale
hadoop fs -mkdir /input

  创建测试文件,命令如下:

vim /home/datawhale/test

  在test文件中,添加以下内容:

Hello world!

  使用Shift+:,输入wq后回车,保存并关闭编辑器。

  将测试文件上传到Hadoop HDFS集群目录,命令如下:

hadoop fs -put /home/datawhale/test /input

  执行wordcount程序,命令如下:

hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /out

  通过以下命令,查看执行结果:

hadoop fs -ls /out

  执行结果如下:

Found 2 items
-rw-r--r--    1 root supergroup       0 time /out/_SUCCESS
-rw-r--r--    1 root supergroup      17 time /out/part-r-00000 

  可以看到,结果中包含_SUCCESS文件,表示Hadoop集群运行成功。

  查看具体的输出结果,命令如下:

hadoop fs -text /out/part-r-00000

  输出结果如下:

Hello   1
world!  1

官网安装请参考:Hadoop单节点集群安装
安装问题:Hadoop中DataNode没有启动
VERSION参考查询目录:tmp/hadoop-datawhale/dfs/data/current/VERSION

2.6 Hadoop3.3.1集群模式安装

java与hadoop的安装与伪分布式流程一致,此处不再赘述,后面的配置文件有所不同。

2.6.1 修改配置文件

1. 修改hadoop hadoop-env.sh文件配置

vim /opt/hadoop/etc/hadoop/hadoop-env.sh

末端添加如下内容:

export JAVA_HOME=/opt/java/

2. 修改hadoop core-site.xml文件配置

vim /opt/hadoop/etc/hadoop/core-site.xml

添加下面配置到<configuration>与</configuration>标签之间。

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

3. 修改hadoop hdfs-site.xml文件配置

vim /opt/hadoop/etc/hadoop/hdfs-site.xml

添加下面配置到<configuration>与</configuration>标签之间。

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

4. 修改hadoop yarn-site.xml文件配置

vim /opt/hadoop/etc/hadoop/yarn-site.xml

添加下面配置到<configuration>与</configuration>标签之间。

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.env-whitelist</name>
   <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>

5. mapred-site.xml文件配置

vim /opt/hadoop/etc/hadoop/mapred-site.xml

添加下面配置到<configuration>与</configuration>标签之间。

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

6. 修改hadoop workers文件配置

vim /opt/hadoop/etc/hadoop/workers

覆盖写入主节点映射名和从节点映射名:

master
slave1
slave2

2.6.2 修改hosts文件

查看master ip地址

ip addr    

记录下显示的ip,例:172.18.0.4

打开slave1 节点,做如上操作,记录下显示的ip,例:172.18.0.3

打开slave2 节点,做如上操作,记录下显示的ip,例:172.18.0.2

编辑/etc/hosts文件:

sudo vim /etc/hosts

添加master IP地址对应本机映射名和其它节点IP地址对应映射名(如下只是样式,请写入实验时您的正确IP):

172.18.0.4 master
172.18.0.3 slave1
172.18.0.2 slave2

2.6.3 配置节点和公钥

在datawhale用户下创建公钥:(若上边做伪分布式时已生成过密钥则不必再做)

ssh-keygen -t rsa

依次回车默认创建完成。然后输入以下命令:

# 拷贝公钥:
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2

# 修改文件权限:(master和slave均需修改)
chmod 700 /home/datawhale/.ssh
chmod 700 /home/datawhale/.ssh/*

# 测试连接是否正常
ssh master  

# 拷贝文件到所有从节点
scp -r /opt/java/ /opt/hadoop/ slave1:/tmp/
scp -r /opt/java/ /opt/hadoop/ slave2:/tmp/

提示:命令执行过程中需要输入“yes”和密码“datawhale”。三台节点请依次执行完成。

  至此,主节点配置完成。现在,请去slave1和slave2依次完成节点配置。以下内容在所有从节点配置完成之后回来继续进行!

2.6.4 启动Hadoop

1. 格式化分布式文件系统

hdfs namenode -format

2. 启动Hadoop

/opt/hadoop/sbin/start-all.sh

重新启动前记得要先关闭

/opt/hadoop/sbin/stop-all.sh

3. 查看Hadoop进程

在hadoop主节点执行:

jps

输出结果必须包含6个进程,结果如下:

2529 DataNode
2756 SecondaryNameNode
3269 NodeManager
3449 Jps
2986 ResourceManager
2412 NameNode

在hadoop从节点执行同样的操作:

jps

输出结果必须包含3个进程,具体如下:

2529 DataNode
3449 Jps
2412 NameNode

4. 打开Hadoop WebUI管理界面:

firefox http://master:8088

2.6.5 测试HDFS集群以及MapReduce任务程序

利用Hadoop自带的WordCount示例程序进行检查集群;在主节点进行如下操作,创建HDFS目录:

hadoop fs -mkdir /datawhale/
hadoop fs -mkdir /datawhale/input

创建测试文件

vim /home/datawhale/test

添加文字datawhale,然后:

hadoop fs -put /home/datawhale/test /datawhale/input  # 将测试文件上传到到Hadoop HDFS集群目录
# 执行wordcount程序:
hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /datawhale/input/ /datawhale/out/
hadoop fs -ls /datawhale/out/  查看执行结果

如果列表中结果包含”_SUCCESS“文件,代码集群运行成功。


查看具体的执行结果,可以用如下命令:

hadoop fs -text /datawhale/out/part-r-00000


到此,集群安装完成。

三、HDFS

3.1 HDFS概述

见《datawhale大数据教程三:HDFS》。

3.2 HDFS的使用和管理

3.2.1 启动HDFS

以下作废,应该直接使用datawhale用户执行,因为Hadoop超级用户是datawhale。

  中间新建文件夹时可能报错mkdir: Call From zhxscut/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused,我运行hdfs namenode -format之后就可以执行hadoop fs 命令了。

启动HDFS,查看进程

cd /opt/hadoop/sbin/start-dfs.sh  # 启动Hadoop的HDFS相关进程
jps								  # 查看HDFS进程
datawhale@zhxscut:/opt/hadoop$ jps
2835 ResourceManager
4915 Jps
2937 NodeManager
2490 DataNode
2650 SecondaryNameNode
3564 NameNode

3.2.2 验证HDFS运行状态

datawhale@zhxscut:/opt/hadoop$ hadoop fs -mkdir /myhadoop1
datawhale@zhxscut:/opt/hadoop$ hadoop fs -ls /
Found 5 items
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:38 /input
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:39 /myhadoop1
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:39 /out
drwx------   - datawhale supergroup          0 2023-02-16 06:38 /tmp
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:37 /user

3.3 常用HDFS命令

3.3.1 .ls命令

hadoop fs -ls /   # 列出hdfs文件系统根目录下的目录和文件

Found 5 items
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:38 /input
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:39 /myhadoop1
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:39 /out
drwx------   - datawhale supergroup          0 2023-02-16 06:38 /tmp
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:37 /user

hadoop fs -ls -R / 列出hdfs文件系统所有的目录和文件
5.put命令(拷贝)
  • hadoop fs -put <local file> <hdfs file>:将本地文件上传(拷贝)到hdfs上 ,其中<hdfs file>的父目录必须存在,否则命令执行失败。
  • hadoop fs -put <local dir> <hdfs dir>:将本地目录上传(拷贝)到hdfs上 ,其中<hdfs dir>的父目录必须存在,否则命令执行失败。

示例:

hadoop fs -put /opt/hadoop/README.txt / # 将/opt/hadoop/README.txt文件上传到hdfs文件系统根目录
hadoop fs -put /opt/hadoop/logs /       # 将/opt/hadoop/log文件夹上传到hdfs文件系统根目录
hadoop fs -ls / 						# 查看是否拷贝成功

datawhale@zhxscut:/opt/hadoop$ hadoop fs -ls /
Found 7 items
-rw-r--r--   1 datawhale supergroup        175 2023-02-16 06:47 /README.txt
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:38 /input
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:49 /logs
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:39 /myhadoop1
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:39 /out
drwx------   - datawhale supergroup          0 2023-02-16 06:38 /tmp
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:37 /user

3.3.2 moveFromLocal命令(拷贝后删除本地)

  hadoop fs -moveFromLocal <local src> <hdfs dst>:将本地文件/文件夹上传到hdfs中,但本地文件/文件夹会被删除。 例如,执行如下命令,上传本地文件/文件夹至hdfs中:

hadoop fs -moveFromLocal /opt/hadoop/NOTICE.txt /myhadoop1
hadoop fs -moveFromLocal /opt/hadoop/logs /myhadoop1
datawhale@zhxscut:/opt/hadoop$ hadoop fs -ls /myhadoop1
Found 2 items
-rw-r--r--   1 datawhale supergroup       1541 2023-02-16 06:55 /myhadoop1/NOTICE.txt
drwxr-xr-x   - datawhale supergroup          0 2023-02-16 06:56 /myhadoop1/logs

3.3.3 get命令

  hadoop fs -get < hdfs file or dir > < local file or dir>:将hdfs文件系统中的文件/文件夹下载到本地。例如,将hdfs文件系统中/myhadoop1目录下的NOTICE.txtlogs分别下载到本地路径/opt/hadoop目录:

hadoop fs -get /myhadoop1/NOTICE.txt /opt/hadoop/
hadoop fs -get /myhadoop1/logs /opt/hadoop/

注意:

  1. 拷贝多个文件或目录到本地时,本地要为文件夹路径
  2. local file不能和hdfs file名字不能相同,否则会提示文件已存在。
  3. 如果用户不是root用户local路径要使用该用户文件夹下的路径,否则会出现权限问题
3.3.4 rm命令
  • hadoop fs -rm <hdfs file> ...:删除一个或多个文件
  • hadoop fs -rm -r <hdfs dir> ...:删除一个或多个目录
datawhale@zhxscut:/opt/hadoop$ hadoop fs -rm /README.txt
Deleted /README.txt
datawhale@zhxscut:/opt/hadoop$ hadoop fs -rm -r /logs
Deleted /logs
9.mkdir命令

1)创建一个新目录
  使用如下命令,在hdfs文件系统中创建一个目录,该命令只能一级一级的创建目录,如果父目录不存在,则会报错:

hadoop fs -mkdir <hdfs path>

  例如,在hdfs文件系统的/myhadoop1目录下创建test目录,命令如下:

hadoop fs -mkdir /myhadoop1/test

2)创建一个新目录(-p选项)
  使用如下命令,在hdfs文件系统中创建一个目录,如果父目录不存在,则创建该父目录:

hadoop fs -mkdir -p <hdfs dir> ...

  例如,在hdfs文件系统创建/myhadoop1/test目录,命令如下:

hadoop fs -mkdir -p /myhadoop2/test

3)查询目录
  查看刚刚创建的/myhadoop1/test/myhadoop2/test目录是否存在,命令如下:

hadoop fs -ls /
hadoop fs -ls /myhadoop1
hadoop fs -ls /myhadoop2

  执行结果如下:

ps:命令好多,不过都很硬核,嘤嘤嘤,各位看官,要坚持看下去哟

10.cp命令

  使用如下命令,在hdfs文件系统上进行文件或目录的拷贝,如果目标文件不存在,则命令执行失败,相当于给文件重命名并保存,源文件还存在:

hadoop fs -cp <hdfs file or dir>... <hdfs dir>

  按照下面的步骤,使用cp命令,将/LICENSE.txt拷贝到/myhadoop1目录下:
1) 拷贝一个本地文件到HDFS的根目录下
  将本地/opt/hadoop目录下的LICENSE.txt文件上传到hdfs文件系统的根目录下,命令如下:

hadoop fs -put /opt/hadoop/LICENSE.txt /

  查看hdfs文件系统的根目录下的LICENSE.txt是否存在,命令如下:

hadoop fs -ls /

2)将此文件拷贝到/myhadoop1目录下
  使用cp命令,将hdfs文件系统中根目录下的LICENSE.txt文件拷贝到/myhadoop1目录下,命令如下:

hadoop fs -cp /LICENSE.txt /myhadoop1

3)查看/myhadoop1目录
  使用如下命令,查看hdfs文件系统的/myhadoop1目录下是否存在LICENSE.txt文件:

hadoop fs -ls /myhadoop1

  执行结果如下:

11. mv命令

  使用如下命令,在hdfs文件系统上进行文件或目录的移动,如果目标文件不存在,则命令执行失败,相当于给文件重命名并保存,源文件不存在;源路径有多个时,目标路径必须为目录,且必须存在:

hadoop fs -mv <hdfs file or dir>... <hdfs dir>

**注意:**跨文件系统的移动(local到hdfs或者反过来)都是不允许的。

  按照下面的步骤,使用mv命令,将/myhadoop1/LICENSE.txt移动到/myhadoop2目录下:
1)移动一个 HDFS文件
  使用mv命令,将hdfs文件系统的/myhadoop1目录下的LICENSE.txt文件移动到/myhadoop2目录下,命令如下:

hadoop fs -mv /myhadoop1/LICENSE.txt /myhadoop2

2)查询/myhadoop2目录
  使用如下命令,查看hdfs文件系统的/myhadoop2目录下是否存在LICENSE.txt文件:

hadoop fs -ls /myhadoop2

  执行结果如下:

12.count命令

  使用如下命令,统计hdfs对应路径下的目录个数,文件个数,文件总计大小:

hadoop fs -count <hdfs path>

  例如,查看/myhadoop1/logs目录下的目录个数,文件个数,文件总计大小,命令如下:

hadoop fs -count /myhadoop1/logs

  执行结果如下:

13. du命令
  • 显示hdfs对应路径下每个文件夹和文件的大小
hadoop fs -du <hdsf path>
  • 显示hdfs对应路径下所有文件大小的总和
hadoop fs -du -s <hdsf path>
  • 显示hdfs对应路径下每个文件夹和文件的大小,文件的大小用方便阅读的形式表示,例如用64M代替67108864
hadoop fs -du -h <hdsf path>

  例如,执行如下命令,可以查看hdfs文件系统/myhadoop2目录下的每个文件夹和文件的大小、所有文件大小的总和:

hadoop fs -du /myhadoop2
hadoop fs -du -s /myhadoop2
hadoop fs -du -h /myhadoop2
hadoop fs -du -s -h /myhadoop2

  执行结果如下:

  执行结果说明:

  • 第一列:表示该目录下总文件大小
  • 第二列:表示该目录下所有文件在集群上的总存储大小,该大小和副本数相关,设置的默认副本数为3 ,所以第二列的是第一列的三倍 (第二列内容 = 文件大小 × \times × 副本数)
  • 第三列:表示查询的目录
14.setrep命令

  使用如下命令,改变一个文件在hdfs文件系统中的副本个数,数字3表示所设置的副本个数,其中,-R选项可以对一个目录下的所有目录和文件递归执行改变副本个数的操作:

hadoop fs -setrep -R 3 <hdfs path>

  例如,对hdfs文件系统中/myhadoop1目录下的所有目录和文件递归执行,设置为3个副本,命令如下:

hadoop fs -setrep -R 3 /myhadoop1

  执行结果如下:

15. stat命令

  使用如下命令,查看对应路径的状态信息:

hdoop fs -stat [format] < hdfs path >

  其中,[format]可选参数有:

  • %b:文件大小
  • %o:Block大小
  • %n:文件名
  • %r:副本个数
  • %y:最后一次修改日期和时间

  例如,查看hdfs文件系统中/myhadoop2/LICENSE.txt文件的大小,命令如下:

hadoop fs -stat %b /myhadoop2/LICENSE.txt

  执行结果如下:

16.balancer命令

  该命令主要用于,当管理员发现某些DataNode保存数据过多,某些DataNode保存数据相对较少,可以使用如下命令手动启动内部的均衡过程:

hadoop balancer
或
hdfs balancer
17. dfsadmin命令

  该命令主要用于管理员通过dfsadmin管理HDFS:

1)使用-help参数,查看相关的帮助:

hdfs dfsadmin -help

2) 使用-report参数,查看文件系统的基本数据:

hdfs dfsadmin -report

  执行结果如下:

3) 使用-safemode参数,操作安全模式:

hdfs dfsadmin -safemode <enter | leave | get | wait>

其中:

  • enter:进入安全模式
  • leave:离开安全模式
  • get:查看是否开启安全模式
  • wait:等待离开安全模式

  例如,进入安全模式,执行命令如下:

hdfs dfsadmin -safemode enter

  执行结果如下:

18. 其他命令

18.1 cat命令

  使用cat命令,查看hdfs文件系统中文本文件的内容,例如,查看根目录下的deom.txt文件内容:

 hadoop fs -cat /demo.txt
 hadoop fs -tail -f /demo.txt

  当使用hadoop fs -tail -f命令后,终端会根据文件描述符进行追踪,当文件改名或被删除,追踪停止。终端操作如下:

  • 此时要想暂停刷新,使用Ctrl+S暂停终端,S表示sleep
  • 若想要继续刷新终端,使用Ctrl+QQ表示quiet
  • 若想退出tail命令,直接使用Ctrl+C,也可以使用Ctrl+Z
    Ctrl+CCtrl+Z都是中断命令,当他们的作用却不一样的:
    1. Ctrl+C比较暴力,就是发送Terminal到当前的程序,比如正在运行一个查找功能,文件正在查找中,使用Ctrl+C会强制结束当前这个进程
    2. Ctrl+Z则会将当前程序挂起,暂停执行这个程序,比如mysql终端下,需要跳出来执行其他的文件操作,又不想退出mysql终端(因为下次还需要输入用户名密码进入,很麻烦),于是可以使用Ctrl+Zmysql挂起,然后进行其他操作,输入fg回车可以回到mysql终端,担任也可以挂起很多进程到后台,执行fg <编号>就能将挂起的进程返回到当前的终端。配合bgfg命令能更方便的进行前后台切换
18.2 appendToFile命令

  将本地文件内容追加到hdfs文件系统中的文本文件里,命令格式如下:

hadoop fs -appendToFile <local file> <hdfs file>

  执行示例如下:

18.3 chown命令

  使用chown命令,修改hdfs文件系统中文件的读、写、执行的权限,命令示例如下:

hadoop fs -chown user:group /datawhale
hadoop fs -chmod 777 /datawhale

其中,参数说明如下:

  • chown:定义谁拥有文件
  • chmod:定义可以对该文件做什么

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/351564.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

excel报表技巧:几个关于汇报演示方面的小功能

年终了&#xff0c;总结汇报避免不了。如果你的PPT还不够好&#xff0c;那就直接用Excel做汇报吧~这里有5条小技巧&#xff0c;可以帮助你最高效地展示自己的成绩报表&#xff01;想象一下&#xff0c;用SHIFTCTRLF1全屏显示你的工作表&#xff0c;配合上CtrlPageDown进行工作表…

WMS系统解决方案,数据从“人工采集”转为“自动采集”

今年以来&#xff0c;新冠疫情危机促使国内企业重新审视自我发展&#xff0c;加速了行业转型的步伐。很多制造企业放慢了规模扩张的脚步&#xff0c;应需而变&#xff0c;从规模速度型向质量效率型转型升级。纵观市场现状&#xff0c;很多制造企业面临产能过剩、成本上升、库存…

CHAPTER 4 监控全网服务器

监控全网服务器4.1 需求说明4.2 规划方案4.2.1 api接口使用&#xff08;curl&#xff09;4.3 具体实施规划4.3.1 硬件、系统、网络监控4.3.2 应用服务监控4.3.3 监控服务通用方法4.4 实施全网监控4.4.1 使用自动发现规则4.4.2 监控备份服务器1. 添加模板2. 添加应用集3. 添加监…

【观察】Solidigm P44 Pro SSD评测:原厂品质+软硬兼施=性能怪兽

众所周知&#xff0c;目前SSD&#xff08;固态硬盘&#xff09;已取代HDD&#xff08;机械硬盘&#xff09;成为电脑中常见的存储设备&#xff0c;特别是在技术创新的持续推动下&#xff0c;如今SSD的速度和效率都在不断地提高&#xff0c;从SATA2 3GB发展到SATA3 6GB&#xff…

计算机组成原理学习笔记:循环冗余校验码

循环冗余校验码 CRC 码 循环冗余校验码 (cyclic redundancy Check, CRC) 十进制除法 从熟悉的十进制出发&#xff0c;假设现在你要给另一个人传送882这样的一个10进制数据&#xff0c;为了防止传送数据的过程中某一个数据发生错误你可以和你的另一个小伙伴约定一个除数&…

英文论文(sci)解读复现【NO.5】让RepVGG再次变得更强大:一种量化感知方法

此前出了目标检测算法改进专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读发表高水平学术期刊中的SCI论文&am…

2023年可见光通信(LiFi)研究新进展

可见光无线通信Light Fidelity&#xff08;LiFi&#xff09;又称“光保真技术”&#xff0c;是一种利用可见光进行数据传输的全新无线传输技术。LiFi是一种以半导体光源作为信号发射源&#xff0c;利用无需授权的自由光谱实现无线连接的新型无线通信技术&#xff0c;支持高密度…

内网渗透(三十六)之横向移动篇-Password Spraying密码喷洒攻击和域内用户枚举横向移动

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

【原创】java+swing+mysql宿舍报修管理系统设计与实现

本文主要想利用javaswingmysql等开发技术设计一个高校宿舍报修管理系统&#xff0c;方便广大学生对宿舍中损坏的物品进行报修处理&#xff0c;提高报修效率。 功能分析&#xff1a; 宿舍报修管理系统的使用角色&#xff0c;一般分为管理员和学生&#xff0c;管理员主要进行学…

深入理解顺序io和随机io(全网最详细篇)

MySql系列整体栏目 内容链接地址【一】深入理解mysql索引本质https://blog.csdn.net/zhenghuishengq/article/details/121027025【二】深入理解mysql索引优化以及explain关键字https://blog.csdn.net/zhenghuishengq/article/details/124552080【三】深入理解mysql的索引分类&a…

汽车如何实现制动

汽车如何实现制动 汽车如何实现制动 难点答疑&#xff1a;汽车刹车时&#xff0c;四个车轮是如何制动的&#xff1f;制动机理是什么&#xff1f; 第一步&#xff1a;驾驶员踩下制动踏板&#xff0c;推动制动主缸 第二步&#xff1a;制动主缸将制动液的压力通过制动管道传递到四…

数据结构代码总结(C语言实现)

目录如何应对数据结构的代码题&#xff1f;采取的学习流程①首先对C语言的语法的熟悉②学习掌握基本代码的写法&#xff0c;做到熟练2.1插入排序2.2快速排序2.3二分查找2.4树的遍历③跟着网上视频开始熟悉对一些问题的解答④结合真题的代码&#xff0c;寻找其中的结题规律如何应…

CasEE: 一种用于重叠事件抽取的级联解码联合学习框架 论文解读

CasEE: A Joint Learning Framework with Cascade Decoding for Overlapping Event Extraction (用于重叠事件抽取的级联解码联合学习框架) 论文&#xff1a;CasEE: A Joint Learning Framework with Cascade Decoding for Overlapping Event Extraction (aclanthology.org) 代…

通俗易懂理解三次握手、四次挥手(TCP)

文章目录1、通俗语言理解1.1 三次握手1.2 四次挥手2、进一步理解三次握手和四次挥手2.1 三次握手2.2 四次挥手1、通俗语言理解 1.1 三次握手 C:客户端 S&#xff1a;服务器端 第一次握手&#xff1a; C&#xff1a;在吗&#xff1f;我要和你建立连接。 第二次握手&#xff…

设计模式之门面模式与装饰器模式详解和应用

目录1 门面模式定义1.1 门面模式的应用场景1.2 门面模式的通用写法1.3 门面模式业务场景实例1.4 门面模式在源码中的应用1.5 门面模式的优缺点2 装饰器模式2.1 装饰器模式定义2.2 装饰器模式的应用场景2.3 装饰器模式在源码中的应用2.4 装饰器模式和代理模式对比2.5 装饰器模式…

git命令篇(持续更新中)

首先介绍这个网页&#xff1a;https://learngitbranching.js.org/?localezh_CN --提交命令 git commit --创建分支 git branch <分支名> --切换分支 git checkout <分支名> --合并分支 (合并到主分支去&#xff0c;把我合并到谁的身上去) 自己写的分支合并到主线…

Unity—游戏设计模式+GC

每日一句&#xff1a;"少年一贯快马扬帆 道阻且长不转弯 要盛大要绚烂要哗然 要用理想的泰坦尼克去撞现实的冰川 要当烧赤壁的风而非借箭的草船 要为一片海就肯翻万山。" 目录 状态模式&#xff1a; 外观模式 组合模式&#xff0c; 单例模式 命令模式 观察者模…

FPGA开发软件(vivado + modelsim)环境搭建(附详细安装步骤+软件下载)

本文详细介绍了vivado软件和modelsim软件的安装&#xff0c;以及vivado中配置modelsim仿真设置&#xff0c;每一步都加文字说明和图片。一、软件安装包下载1、vivado vivado版本很多&#xff0c;目前最新的已更新到vivado2022.2&#xff0c;版本越高&#xff0c;安装包越大&…

90后阿里P7技术专家晒出工资单:狠补了这个,真香...

最近一哥们跟我聊天装逼&#xff0c;说他最近从阿里跳槽了&#xff0c;我问他跳出来拿了多少&#xff1f;哥们表示很得意&#xff0c;说跳槽到新公司一个月后发了工资&#xff0c;月入5万多&#xff0c;表示很满足&#xff01;这样的高薪资着实让人羡慕&#xff0c;我猜这是税后…

全局快门和卷帘快门(Global shutter and Rolling shutter)

全局快门和卷帘快门 “果冻效应”是什么&#xff1f;用相机拍下扇叶&#xff0c;为什么会发生扭曲变形&#xff1f; 相机两种曝光方式的优劣&#xff1a;全局曝光和卷帘曝光 卷帘快门和全局快门的区别 全局曝光和卷帘曝光是常见的相机曝光方式 一般来说&#xff0c;CCD相机是全…