2月datawhale组队学习:大数据

文章目录

    • 一、大数据概述
    • 二、 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/advantageThis 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.shWARNING: 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 /userhadoop 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.txthadoop 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.rhkb.cn/news/53872.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这里有110+公开的专业数据集

&#x1f446;点击关注&#xff5c;设为星标&#xff5c;干货速递&#x1f446; 哈喽大家好&#xff0c;我是俊欣 如果你不是会爬虫的技术流&#xff0c;那下面这110网站可以解决你90%的数据需求。 首先&#xff0c;常见的公开数据网站在 https://hao.199it.com/ 都可以搜索到。…

基于Python的世界各个国家的幸福度的公开数据集的数据挖掘

目录 一&#xff0e; 问题背景 1 二&#xff0e; 准备工作 2 三&#xff0e; 具体实施 2 1.数据存储及基本加载 2 数据整理到数组之中 2 2.数据清洗 2 ① 多余列清除 2 ② 列属性归一 3 ③ 空值处理 4 3.数据挖掘算法 6 ① 基本特征 6 ② 总体热力图分析 7 ③ 对指定数据的热…

【博览群书】《实战大数据》——属于我的第一本大数据图书

文章目录 前言简介目录其他 前言 Hello家人们&#xff0c;博主前不久参加了CSDN图书馆和机械工业出版社联合举办的图书类活动&#xff0c;很荣幸在活动中获得了属于自己的第一本大数据图书&#xff0c;《实战大数据—— 分布式大数据分析处理系统开发与应用》。作为大数据专业…

大数据与AI的16个实践分享

↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习&#xff0c;不错过 Datawhale活动 主办方&#xff1a;DataFun&#xff0c;指导单位&#xff1a;北京智源研究院 文章作者&#xff1a;Hoh Xil 出品平台&#xff1a;DataFunTalk 导读&#xff1a;12.19-20&…

用最诙谐的语言提升你对大数据的认知

写在前面 本文隶属于专栏《100个问题搞定大数据理论体系》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见100个问题搞定大数据理论体系 引子 小明又来了~ …

大数据平台技术回忆版

liu老师当时也没给我们怎么画重点 我主要是到mooc上面 还有刷题软件上找了题做做 确实有原题 怎么说呢 光看ppt是不太行的 因为有的知识点出的很细。 可以到刷题神器上看看做做题 简单举几个例子 比如这种是吧 选择题跟判断题也是到网上找找题做 确实碰到了原题目 是吧 …

hahabet05:com浅谈大数据一之认识大数据

浅谈大数据一之认识大数据 ***数据&#xff0c;相信在大部分人的脑海中会有一个大概的意识。没错&#xff0c;数据并不是一个新的概念&#xff0c;在这几天年的发展中&#xff0c;人类一直在利用着数据做着记录&#xff0c;而数据的价值&#xff0c;特别是大数据的价值却是近几…

话题讨论征文--谈论大数据时我们在谈什么 获奖名单公布

从社会发展趋势的角度&#xff0c;很明显大数据会是目前肉眼可及的视野范围里能看到的最大趋势之一。从传统IT 业到互联网、互联网到移动互联网&#xff0c;从以智能手机和Pad 为主要终端载体的移动互联网到可穿戴设备的移动互联网&#xff0c;然后再到万物互联的物联网&#x…

从图像处理到语音识别,25款数据科学家必知的深度学习开放数据集

选自Analytics Vidhya&#xff0c;作者&#xff1a;Pranav Dar&#xff0c;机器之心编译。 本文介绍了 25 个深度学习开放数据集&#xff0c;包括图像处理、自然语言处理、语音识别和实际问题数据集。 介绍 深度学习&#xff08;或生活中大部分领域&#xff09;的关键在于实践…

程序人生 - 祝贺登榜《大数据领域内容榜》NO.20

博客文章传送门&#xff1a;LeetCode&#xff08;数据库&#xff09;- 报告系统状态的连续日期

【大数据模型】LeonardoAi让心中所想跃然纸上

汝之观览&#xff0c;吾之幸也&#xff01; 本文主要聊聊LeonardoAi绘图工具 一、注册Discord账号 不管LeonardoAi还是midjourney&#xff0c;都需要注册一个Discord账号&#xff0c;Discord是一个社区软件&#xff0c;在这里可以进行讨论和交流使用心得 LeonardoAi官网地址 …

《数据分析咖哥十话》包邮送3本

文末留言包邮送三本 小雪求职记 入秋以来&#xff0c;市场就开始不景气&#xff0c;我们的女主人公小雪从一家互联网公司的运营岗毕&#xff08;cai&#xff09;业&#xff08;yuan&#xff09;以来&#xff0c;三个月都没接到任何面试。冬天到了&#xff0c;表姐小冰告诉她&am…

微信小程序通讯地址授权拒绝后的处理方式

在小程序开发时&#xff0c;在用户拒绝获取通讯地址的授权后&#xff0c;在一段时间内将无法在弹出授权提示导致无法获取通讯地址。通过看微信的api文档&#xff0c;发现其中有一个wx.openSetting()方法可以打开设置页面进行授权。但wx.openSetting()方法打开的设置页面只能显示…

微信第三方平台对接小程序发版

微信第三方平台对接小程序发版&#xff08;工作笔记&#xff09; 微信第三方平台是商家把公众号或小程序代交给服务商来管理&#xff0c;当商家把小程序授权给第三方平台后&#xff0c;同时授权小程序开发与数据分析&#xff0c;小程序后台就无法发版&#xff0c;必须开发人员…

针对小程序wx.getUserProfile接口将被收回后做出的授权调整

小程序文档中提出的调整说明 调整说明: 自 2022 年 10 月 25 日 24 时后&#xff08;以下统称 “生效期” &#xff09;&#xff0c;用户头像昵称获取规则将进行如下调整&#xff1a; 自生效期起&#xff0c;小程序 wx.getUserProfile 接口将被收回&#xff1a;生效期后发布…

【微信小程序】图片违法违规内容鉴别

微信小程序通过云调用校验一张图片是否含有违法违规内容。官方参考文档 选择图片 wx.chooseImage({count: 6,sizeType: [compressed], // 可以指定是原图还是压缩图&#xff0c;默认二者都有sourceType: [album, camera], // 可以指定来源是相册还是相机&#xff0c;默认二者都…

小度智能音箱=高灵敏度窃听器

智能音箱的运行原理&#xff1a;录制用户房间的声音&#xff0c;上传至百度语音识别服务器&#xff0c;语音识别服务器根据识别结果向用户反馈相应的语音内容。 手机APP无时不刻都在窃取用户信息&#xff0c;那么智能音箱呢&#xff1f; 智能的音箱的原理决定着音箱自身无时不…

小度和天猫精灵哪个好?这次我站小度

之前家里已经有一个天猫精灵了在客厅&#xff0c;想买一个智能音箱放在卧室&#xff0c;然后就入手了一个小度在家。以前只有一个音箱没有对比&#xff0c;也就没有伤害&#xff0c;但是两个音箱都在家使用&#xff0c;才知道原来还是小度在家要好很多。 首先就说音质吧&…

亲测89元小度智能音箱,这或许是国民级智能音箱应有的姿态

作者&#xff5c;震霆 出品&#xff5c;遇见人工智能 公众号&#xff5c;GOwithAI 会场突然好一阵躁动&#xff0c;仔细一看&#xff0c;原来是蔡康永来了&#xff01; ▲图注&#xff1a;蔡康永现身“小度智能音箱发布会” 他来干嘛&#xff1f;难道不是走错…

小度C1可以改语言吗,小度音箱怎么更改唤醒词

小度音箱行业版2.3.6安卓版 类型&#xff1a;生活服务大小&#xff1a;13.6M语言&#xff1a;中文 评分&#xff1a;5.0 标签&#xff1a; 立即下载 小度音箱是通过语音进行唤醒的&#xff0c;唤醒词是默认的&#xff0c;用户说唤醒词来唤醒小度音箱&#xff0c;有小伙伴想更改…