03 hdfs 文件的导入导出

172 阅读6分钟
hdfs的shell命令格式1: hadoop fs -命令 参数
hdfs的shell命令格式2: hdfs dfs -命令 参数

查看目录下内容:  hdfs df
linux本地上传文件到hdfs中: hdfs dfs -put linux本地要上传的目录或者文件路径  hfds中目标位置绝对路径
hdfs中下载文件到liunx本地: hdfs dfs -get hfds中要下载的目录或者文件的绝对路径 linux本地目标位置路径 

练习:

# 1.linux本地远程查看hdfs根目录文件列表
[root@node1 ~]# hdfs dfs -ls /
Found 3 items
drwxr-xr-x   - root supergroup          0 2023-08-18 21:44 /source
drwxrwx---   - root supergroup          0 2023-08-12 17:52 /tmp
drwxr-xr-x   - root supergroup          0 2021-10-24 02:25 /user

# 2.linux本地远程在hdfs根目录中创建itcast目录,最后验证是否创建成功
[root@node1 ~]# hdfs dfs -mkdir /itcast
您在 /var/spool/mail/root 中有新邮件
[root@node1 ~]# hdfs dfs -ls /
Found 4 items
drwxr-xr-x   - root supergroup          0 2023-08-26 21:41 /itcast
drwxr-xr-x   - root supergroup          0 2023-08-18 21:44 /source
drwxrwx---   - root supergroup          0 2023-08-12 17:52 /tmp
drwxr-xr-x   - root supergroup          0 2021-10-24 02:25 /user
s -ls 目录的绝对路径
创建目录: hdfs dfs -mkdir 目录的绝对路径
创建文件: hdfs dfs -touch 文件的绝对路径
移动目录/文件: hdfs dfs -mv 要移动的目录或者文件的绝对路径  目标位置绝对路径
复制目录/文件: hdfs dfs -cp 要复制的目录或者文件的绝对路径  目标位置绝对路径
删除目录/文件: hdfs dfs -rm [-r] 要删除的目录或者文件的绝对路径

把本地文件内容追加到hdfs指定文件中: hdfs dfs -appendToFile 本地文件 hdfs文件绝对路径
查看文件的内容: hdfs dfs -cat 要查看的文件的绝对路径          注意: 除了cat还有head,tail也能查看

查看hdfs其他shell命令帮助: hdfs dfs --help
注意: hdfs有相对路径,如果操作目录或者文件的时候没有以根目录/开头,就是相对路径,默认操作的是/user/root

# 3.linux本地远程在hdfs根目录中创建a.txt和b.txt文件,最后验证是否创建成功
[root@node1 ~]# hdfs dfs -touch /a.txt /b.txt 
您在 /var/spool/mail/root 中有新邮件
[root@node1 ~]# hdfs dfs -ls /
Found 6 items
-rw-r--r--   3 root supergroup          0 2023-08-26 21:43 /a.txt
-rw-r--r--   3 root supergroup          0 2023-08-26 21:43 /b.txt
drwxr-xr-x   - root supergroup          0 2023-08-26 21:41 /itcast
drwxr-xr-x   - root supergroup          0 2023-08-18 21:44 /source
drwxrwx---   - root supergroup          0 2023-08-12 17:52 /tmp
drwxr-xr-x   - root supergroup          0 2021-10-24 02:25 /user

# 4.linux本地远程把hdfs根目录的a.txt移动到itcast目录中
[root@node1 ~]# hdfs dfs -mv /a.txt /itcast

# 5.linux本地远程把hdfs根目录的b.txt复制到itcast目录中
[root@node1 ~]# hdfs dfs -cp /b.txt /itcast  

# 6.linux本地远程查看hdfs根目录观察移动和复制后文件列表
[root@node1 ~]# hdfs dfs -ls /
Found 5 items
-rw-r--r--   3 root supergroup          0 2023-08-26 21:43 /b.txt
drwxr-xr-x   - root supergroup          0 2023-08-26 21:44 /itcast
drwxr-xr-x   - root supergroup          0 2023-08-18 21:44 /source
drwxrwx---   - root supergroup          0 2023-08-12 17:52 /tmp
drwxr-xr-x   - root supergroup          0 2021-10-24 02:25 /user

# 7.linux本地远程把根目录的b.txt删除
[root@node1 ~]# hdfs dfs -rm /b.txt
Deleted /b.txt

# 8.在linux本地创建一个h.txt文件,存储内容为'hello hadoop'
[root@node1 ~]# echo 'hello hadoop' > /root/h.txt
[root@node1 ~]# ls
anaconda-ks.cfg  h.txt    

# 9.把linux本地h.txt文件内容追加到hdfs的itcast/a.txt文件中
[root@node1 ~]# hdfs dfs -appendToFile /root/h.txt /itcast/a.txt
[root@node1 ~]# hdfs dfs -cat /itcast/a.txt
hello hadoop

# 10.把linux本地h.txt文件上传到hdfs的itcast目录中,并验证是否上传成功
[root@node1 ~]# hdfs dfs -put /root/h.txt /itcast
[root@node1 ~]# hdfs dfs -ls /itcast
Found 3 items
-rw-r--r--   3 root supergroup         13 2023-08-26 21:48 /itcast/a.txt
-rw-r--r--   3 root supergroup          0 2023-08-26 21:44 /itcast/b.txt
-rw-r--r--   3 root supergroup         13 2023-08-26 21:49 /itcast/h.txt

# 11.把hdfs的itcast目录下a.txt文件下载到linux本地root目录中,并验证是否下载成功
[root@node1 ~]# hdfs dfs -get /itcast/a.txt /root
[root@node1 ~]# ls /root
anaconda-ks.cfg  h.txt a.txt 

问题1:

简述下分布式和集群的区别?

参考答案:

集群和分布式,都是描述的一组计算机。集群的所有节点跑的是同样的任务,集群本质是多台服务器联合起来独立做相同的任务(多个服务器分担客户端发来的请求) 。而分布式系统的节点跑的是分解后的任务,分布式本质是多台服务器协同配合完成同一个大任务(每个服务器都只完成大任务拆分出来的单独1个子任务)
以修手机为例:维修手机要分为检测、维修、测试三个环节,当多部手机都需要维修的时候,为了提高效率,雇了10位工程师。如果每个工程师维修时,对每台手机进行检测、维修和测试,这就是集群的工作方式。如果2位工程师负责检测,5位工程师负责维修,剩下的3位工程师负责测试,这就是分布式的工作方式。

问题2:

简述hadoop技术栈的组成?

参考答案:

首先hadoop技术栈由HDFS , MapReduce ,YARN三大组件组成
其次三大组件核心知识如下:
    HDFS是(分布式文件系统),解决海量数据存储
        元数据是描述核心数据的数据
        NameNode是集群当中的主节点,主要用于管理集群当中的各种数据
        SecondaryNameNode是主要能用于辅助NameNode进行文件块元数据存储
        DataNode是集群当中的从节点,主要用于存储真实的海量的业务数据
    YARN是(作业调度和集群资源管理的框架),解决资源任务调度
        ResourceManager是接收用户的计算请求任务,并负责集群的资源管理和分配
        NodeManager是 负责执行主节点分配的任务(给MR的计算程序提供资源)
    MapReduce是(分布式运算编程框架),解决海量数据计算
        核心思想就是分而治之   Map负责分解,Reduce负责合并
最后概括下MapReduce计算需要的数据和产生的结果需要HDFS来进行存储,MapReduce的运行需要由Yarn集群来提供资源调度。