大模型和大数据的关系
40ZB
b(bit)比特 最小的信息单元0或者1
B(Byte)字节 1B=8bit 汉字
KB 千字节 1KB=1024B 小段文字
MB 兆字节 1MB=1024KB 一首歌3-5M
GB 吉字节 1GB=1024MB 一部电影
TB 太字节 1TB=1024GB 数据库(25万张高清图片)
PB 拍字节 1PB=1024TB 公司数据中心,云服务提供商
EB 艾字节 1EB=1024PB 全球级别 全球天气观测数据
ZB 泽字节 1ZB=1024EB 全球数量总数40ZB
YB 尧字节 1YB=1024ZB
E·R(画图)
1.1 大数据的定义
![]()
TB PB EB
结构化数据: 固定格式 关系型数据库,excel,
半结构化数据:具有一定的层次结构,介于结构化数据与非结构化数据之间 json文件,xml文件,电子邮件
非结构化数据:无固定格式 文本文件,图片,音乐
大数据技术要面对的基本问题,也是最核心的问题:就是海量数据如何可靠存储和高效计算。
letcood网站学算法。
1.2 Google的三驾马车
GFS:The Google File System HDFS
MapReduce:Simplified Data Processing on Large Clusters 大型集群上的简单数据处理
Bigtable:A Distributed Storage System for Structured Data 一个分布式的结构化数据存储系统Hbase
1.2.1 GFS的思想
(1)Google思想一:GFS分布式文件系统
GFS架构:
(1)GFS Master节点管理所有的文件系统元数据,包括命名空间,访问控制权,文件和块的映射信息以及当前块的位置信息。
(2)GFS存储的文件都被分割成固定大小的块,每个块都会被复制到多个块服务器上(可靠性)。块的冗余度默认为3。
(3)GFS Master还管理着系统范围内的活动,比如块服务器之间的数据迁移等。
(4)GFS Master与每个块服务器通信(发送心跳包),发送指令,获取状态。
副本的位置选择策略要满足两个目标:最大化数据的可靠性和可用性。
1.2.2 MapReduce的思想
MapReduce采用“分而治之”的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个子节点共同完成,然后整合各个子节点的中间结果,得到最终的计算结果。MapReduce就是“分散任务,汇总结果”。
Map的输出是Reduce的输入。
1.3 Hadoop的概述
13.1.Hadoop是什么?
(1)Hadoop是由一个Apache基金会所开发的分布式计算基础框架。
(2)主要解决,海量数据的存储和海量数据的分析计算问题。
(3)广义上来讲,Hadoop通常是指一个更广泛的概念--Hadoop生态圈。
1.3.2.Hadoop根据是Google三篇论文实现
HDFS ——> GFS
MapReduce ——> MapReduce
HBase ——> BigTable
HDFS:Hadoop Distribute File System,是Hadoop项目的核心子项目,是分布式技术中数据存储管理的基础。
1.3.3
1.0与2.0的差别就是多了一个YARN
![]()
1.3.4 Hadoop的优势(重要)
高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢死。
高扩展性:在集群分配任务数据,可方便的扩展数以千计上午节点。
高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。
高容错性:能够自动将失败的任务重新分配。
1.3.5 Hadoop生态圈
| 组件 | 功能 |
| HDFS | 分布式文件系统 |
| YARN | 资源管理和调度器 |
| MapReduce | 分布式并行编程模型 |
| HBase | Hadoop上的非关系型的分布式数据库 |
| Hive | Hadoop上的数据仓库 |
| Pig | 一个基于Hadoop的大规模数据分析平台,提供类似SQL的查询语言Pig Latin |
| Flume | 一个高可用的,高可靠的,分布式的海量日志采集,聚合和传输的系统 |
| Sqoop | 用于在Hadoop与传统数据库之间进行数据传递 |
| Zookeeper | 提供分布式协调一致性服务 |
| Ambari | Hadoop快速部署工具,支持Apache Hadoop集群的供应,管理和监控 |
| Mahout | 提供一些可扩展的机器学习领域经典算法的实现 |
| Spark | 类似于Hadoop MapReduce的通用并行框架 |
| Oozie | Hadoop上的工作流管理系统 |
| Storm | 流计算框架 |
| Kafka | 一种高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据 |
1.4 Hadoop的组成
1.4.1 HDFS架构概述
NameNode:存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所爱的DataNode等。
DataNode:在本地文件系统存储文件块数据,以及块数据的校验和。
Secondary NameNode:每隔一段时间对NameNode元数据备份。
1.4.2 YARN架构概述
ResourceManager整个集群资源(内存,cpu等)的老大:
NodeManager单个节点服务器资源老大。
ApplicationMaster:单个任务运行的老大。(1)负责数据的切分(2)为应用程序申请资源并分配内部任务(3)任务的监控与容错
Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存,cpu,磁盘,网络等。
1.4.3 MapReduce架构
MapReduce将计算过程分为两个阶段:Map和Reduce
Map阶段并行处理输入数据
Reduce阶段对Map结果进行汇总
2.环境安装
用来将一个Docker镜像从 /cg/images/hadoop_node.tar.gz压缩包加载到本地Docker环境里面
docker run --name master --privileged --ulimit nofile=65535:65535 --hostname master --ip 172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave2:172.18.0.4 --add-host=slave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro -v /headless/course/:/course hadoop_node /service_start.sh docker run --name slave1 --privileged --ulimit nofile=65535:65535 --hostname slave1 --ip 172.18.0.3 --add-host=master:172.18.0.2 --add-host=slave2:172.18.0.4 --add-host=slave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh docker run --name slave2 --privileged --ulimit nofile=65535:65535 --hostname slave2 --ip 172.18.0.4 --add-host=master:172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave3:172.18.0.5 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.sh docker run --name slave3 --privileged --ulimit nofile=65535:65535 --hostname slave3 --ip 172.18.0.5 --add-host=master:172.18.0.2 --add-host=slave1:172.18.0.3 --add-host=slave2:172.18.0.4 -itd -v /cgsrc:/cgsrc:ro hadoop_node /service_start.shdocker run创建并启动一个docker容器
--name master:容器的名字叫做master
--privileged:赋予容器特权模式。允许它访问主机上所有设备
--ulimit nofile=65535.65535 设置容器的最大文件描述符数量(软限制/硬限制)。默认值较小,Hadoop、HDFS等大数据组件会频繁打开文件/网络连接,必须调高避免“too many open files”
启动容器
docker start容器的名字
3.进入容器
docker exec-it--privileged 容器的名字/bin/bash
4.安装Java环境
1.cd /usr/local
第三周:
1.配置分布式模式
HDFS:NameNode(1个)DataNode(多个)SecondaryNameNode(1个)
NameNode和SecondaryNameNode尽量不要安装在同一台服务器
YARN:ResourceManager(1个) NodeManager(多个)
ResourceManager很消耗内存尽量不要和NameNode,SecondaryNameNode放在同一台机器上
| Hadoop1 | Hadoop2 | Hadoop3 | Hadoop4 |
NameNode | DataNode | DataNode | DataNode SecondaryNameNode |
| NodeManager | NodeManager ResourceManager | NodeManager | NodeManager |
2.ping ip地址:ICMP协议,测试两台计算机之间的连通性(OSI第三层)
ping masterssh
Secure Shell(安全外壳协议)
一台电脑 --->另外一台电脑(有密码)
客户端--->服务端
场景:陈长湦寄一个箱子给高珊珊,这个箱子比较私密,中途不能让人打开。
1.高珊珊打造了一把锁(公钥)和一把钥匙(私钥)。
2.高珊珊把这把锁(公钥)给了陈长湦,但是钥匙高珊珊自己藏好。(把公钥放到服务器)
3.陈长湦把箱子用高珊珊给他的锁锁上。(用公钥加密)
4.箱子寄出去,中途任何没有钥匙的人都打不开。
5.只有高珊珊可以用她的钥匙打开。
高珊珊:客户端
陈长湦:服务端
生成公钥和私钥
ssh-keygen -t rsassh文件夹下的文件功能解释:
| known_hosts | 记录ss访问过计算机的公钥(public key) |
| id_rsa | 生成的私钥 |
| id_rsa.pub | 生成的公钥 |
| authorized_key | 存放授权过的无密码登录服务器公钥 |
将公钥文件追加到另一个文件authorized_keys中
cat 。/id_rsa.pub >> /authorized_keys3.scp从一台电脑的-/.ssh/id_rsa.pub的文件,复制到slave1这台电脑上,用户是root
2.2克隆
安全拷贝
1.从Hadoop102服务器上将本服务器的文件推给Hadoop103:
scp -r jdk1.8.0_212/ lotus@hadoop103:/opt/module/2.在Hadoop103服务器上操作,将Hadoop102的文件拿过来
scp -r lotus@102:/opt/module/jdk1.8.0_212/ ./同理Hadoop也可以这么操作
scp -r lotus@102:/opt/module/hadoop-3.1.3/ ./3.在服务器上,将102的文件拷贝到104
scp -r lotus@hadoop102:/opt/module/* lotus@hadoop104:/opt/module/master登录slave1,slave2,slave3(免密)
slave1 登录到master(没有密码)
实现场景:在slave1里面执行命令ssh master,就可以不输入密码master
1.slave1先生成私钥和公钥
2.slave1的公钥给到master
scp
3.在master上公钥给放到~/.ssh/atuorized_keys
4.去slave1里面测试ssh master
安装Hadoop
1.将hadoop包复制到/usr/local下面
2.解压
tar解压,压缩
-z使用gzip解压
x解压文件
v显示解压过程
f制定文件名
3.修改名字
mv旧的名字 新名字
mv hadoop-3.4.0 hadoop4.修改配置文件
vim~/.bashrc
在配置文件中
1.bin:存放操作命令,具体包含如(hdfs,mapred,yarn)
2.etc:所有配置文件
配置集群环境
/usr/local/hadoop/etc/hadoop/的配置文件
workers(DataNode节点)
core-site.xml整个集群的核心配置
hdfs-site.xml配置hdfs
mapred-site.xml配置mapreduce
yarn-site.xml配置yarn
hadoop-env.sh
1.编辑workers
vimworkers
master slave1 slave2 slave3
2.修改core-site.xml
<configuration> <!--默认文件系统的URI地址(内部接口) --> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <!--临时工作目录(默认一个月就删除) --> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> </property> </configuration> <configuration> <!-- secondary namenode--> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:50090</value> </property> <!-- hdfs存数据的份数--> <property> <name>dfs.replication</name> <value>3</value> </property> <!-- namenode元数据所在的物理地址--> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <!-- datanode数据,所存储的物理地址--> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration><configuration> <!-- mapreduce程序运行在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- job的历史服务器端地址(内部通讯端口) --> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <!-- 历史服务器web端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property> </configuration>5.任务 配置yarn
<configuration> <!-- 指定resource Manager的主机名在master上 --> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <!-- NodeManager提供的辅助服务,运行Mapreduce必配--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- NodeManager监控本地磁盘的健康状况(磁盘上限98.5%)--> <property> <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name> <value>98.5</value> </property> </configuration>配置slave节点
1.将/usr/local/下面的hadoop文件压缩成hadoop.master.tar.gz,并放到root文件下
tar -zcf ~/hadoop.master.tar.gz ./hadoop2.将master这台机器上的root/hadoop.master.tar.gz这个压缩包上传复制到
3.将~/hadoop.master.tar.gz的这个文件解压
3.环境测试
启动hdfs start-dfs.sh
namenode(1个) secondary namenode(一个) datanode(slave1 slave2 slave3 master)
resoucemanager(1个) nodemanager(master,slave1,2,3)
启动顺序:start-dfs.sh --> start-yarn.sh
关闭顺序:stop-yarn.sh --> stop-dfs.sh
172.18.0.2:9870(9870是默认的web端访问hdfs的端口号) 172.18.0.2(namenode所在机器的ip)
172.18.0.2:8088 172.18.0.2(resouce manager所在电脑的ip地址)8088是默认的web端访问yarn端的端口号
测试hdfs上传文件
1.创建一个本地文件zrw.txt
2.创建一个hdfs的文件夹
3.将本地文件上传到hdfs系统里面的文件夹里
4.查看文件是否上传成功
引入:QQ邮箱 2330551568@qq.com ,逻辑地址(并不是真正意义上存放文件的地址)
物理地址:真实存放文件的地址
hdfs系统
逻辑地址:/zInput/zrw.txt
物理地址:hdfs里面配置了 /usr/local/hadoop/tmp/dfs/data
file:/usr/local/hadoop/tmp/dfs/data问题:hdfs存放数据,datanode是真正存放数据的节点。hdfs默认存三份
master slave1 slave2 slave3存在那几台机器上了?
测试大文件上传
1.本地有一个大文件
cp被复制文件的地址和文件名粘贴到哪儿的地址
2.在HDFS系统里面创建一个新的文件
3.本地大文件上传到新的文件夹
4.查看,反思
hdfs系统存放文件是按照块存储。如果是大文件,分成多个块,分别存储。
hdfs: /bigFiles/jkd-8u171-linux-x64.tar.gz
物理地址(实际存放的位置) /usr/local/hadoop/tmp/dfs/data hdfs-site.xml
cat blk_1073741826 >>tmp.tar.gz 将blk_1073741827 >>tmp.tar.gz
tar -zxvf tmp.tar.gz
wordcount测试
上节课上传了小文件,上传到HDFS(/minput/lotus.txt),我们统计这个文件里面每个单词出现的频率。
1.确保你的HDFS系统里面/minput/lotus.txt这个文件是存在的
<property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value> </property>2.测试wordcount是否可以执行成果
cd /usr/local/hadoop/share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-3.4.0.jar wordcount /zInput/lotus.txt /zOutput
hadoop jar jar包的名字 调用方法的名字(wordcount) 输入路径(/zInput/lotus.txt这个输入文件必须存在) 输出路径(必须不存在,如果以及存在会报错)
3.解读wordcount运行过程和结果展示
mapreduce :map + reduce
是否成功:job completed successfully
多了一个mOutput,说明有输出
查看结果
hadoop fs -cat 文件路径和文件名
4.面试重点
1.常用端口号
hadoop3.X
| HDFS NameNode内部通常端口 | 8020/9000/9820 |
| HDFS NameNode对用户的查询端口 | 9870 |
| Yarn查看恩物运行情况的端口 | 8088 |
| 历史服务器 | 19888 |
hadoop2.X
| HDFS NameNode内部通常端口 | 8020/9000 |
| HDFS NameNode对用户的查询端口 | 50070 |
| Yarn查看恩物运行情况的端口 | 8088 |
| 历史服务器 | 19888 |
2.常用的配置文件
3.x core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml workers (/hadoop/etc/hadoop)
2.x core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml slaves
HDFS
一、HDFS概述
1.1 HDFS产生背景
随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件系统管理中的一种。
1.2 HDFS定义
HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS的使用场景:适合一次写入,多次读出的场景,且不支持文件的修改,适合用来做数据分析,并不适合来做网盘应用。
1.3 HDFS的优缺点
优点:
(1)高容错性
- 数据自动保存多个副本。它通过增加副本的形式,提高容错性。
- 某一个负样本丢失以后,它可以自动恢复。
(2)适合处理大数据
- 数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;
- 文件规模:能够处理百万规模以上的文件数量,数量相当之大。
(3)可构建在廉价机器上,通过多副本机制,提高可靠性。
缺点:
(1)不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
(2)无法高效的对大量小文件进行存储。
- 存储大量小文件的话,他会占用NameNode大量的内存来存储文件目录和块信息。这样是不可取的,因为NameNode的内存总是有限的;(理解 书包含目录和内容)
- 小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。
(3)不支持并写入,文件随即修改。
一个文件只能有一个写,不允许多个线程同时写;
仅支持数据append(追加),不支持文件的随机修改。
1.4 HDFS组成架构
NameNode(nn):就是Master(老板),它是一个主管、管理者。
- 管理HDFS的名称空间;
- 配置副本策略;
- 管理数据块的映射信息;
- 处理客户端的读写请求。
DataNode:就是Slave。NameNode下达命令。DataNode执行实际的操作。
- 存储实际的数据块。
- 执行数据块的读/写操作。
Client:就是客户端
- 文件切分。文件上传HDFS的时候,Cilent将文件切分成一个一个Block,然后进行上传。 (我上传zrw.txt文件,文件大小为200M,正常默认一个Block 134217728B/1024/1024=128M,存两个Block,第一个128M,第二个72M)
- 与NameNode交互,获取文件的位置信息;
- 与DataNode交互,读取或者写入数据;
- Cilent提供一些命令来管理HDFS,比如NameNode增删改查操作;
- Cilent可以通过一些命令来访问HDFS,比如对HDFS增删改查操作。
Secondary NameNode:并非NameNode的设备,当NameNode挂掉的时候,它不能马上替换NameNode并提供服务。 (没有解释,作业:Fsimage和Edits是干什么的,原理是什么)
- 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode;
- 在紧急情况下,可辅助恢复NameNode。
作业:Fsimage和Edits:
内存(优点:快 缺点:断电容易丢失)edits:编辑文件
硬盘 (Fsimage:为了防止断电数据丢失,会落盘为fsimage
以上内容全部存为fsimage1
edits1:2026年4月14日10:30——10:40 新的东西
edits2:2026年4月14日10:30——10:50 新的东西
Secondary NameNode:fsimage2=fsimage1+edits1+edits2
同步传给NameNode,会存fsimage2
namenode
secondary namenode
只不过namenode会多一个edits inprogress
1. namenode fsimage edits 会跟secondarynamenode同步
2. fsimage edits加起来得到一个新的fsimage,传回给namenode
namenode(物理地址)
/usr/local/hadoop/tmp/dfs
1.5 HDFS文件块大小(面试重点)
HDFS中的文件在物理上分块存储(Block),块的大小可以通过参数配置(dfs.blocksize)来规定,默认大小在Hadoop2.X版本是128M,老版本是64M。
block1 block2 block3 block4 ......block65 block66
1.如果寻址时间约为10ms,即找到目标block的时间为10ms(计算机组成原理)
2.寻址时间为传输时间的1%时,则为最佳状态。传输时间=10ms/0.01=1000ms=1s
3.目前磁盘的传输速率普遍为100MB/s 块大小:100MB/s*1s=100M 128M
普通机械磁盘 80M/s-90M/s 块大小:80-90M 128M,64M
固定磁盘 200M/s-300M/s 块大小:200M-300M 256M
思考:为什么块的大小不能是指太小,也不能设置太大?
(1)HDFS的块设置太小,会增加寻址时间,程序一直在找 块的开始位置。(找目标块)
(2)如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置的时间(寻址时间)。导致程序在处理这块数据时,会非常慢。
总结: HDFS块的大小设置主要取决于磁盘的传输速率。
1.6 HDFS的Shell操作(10分)
1.基本的语法
bin/hadooop fs 具体命令
bin/hdfs dfs 具体命令
两个完全相同
2.常用命令
(0) 启动Hadoop集群
sbin/start-dfs.sh 启动hdfs系统
sbin/start-yarn.sh 启动yarn
(1)-help:输出这个命令参数
hadoop fs -help rm :输出rm这个命令相关的解释
错误:重启
(2) -ls:显示目录信息
(3)-mkdir: 在HDFS上创建文件夹
hadoop fs -mkdir -p /wangzherongyao/zhonglu
(4)-moveFromLocal:从本地剪切粘贴到HDFS
1.本地有一个文件
touch buzhihuowu.txt 创建buzhihuowu.txt这个空文件
2.将本地的文件剪切(ctrl+x),粘贴到HDFS系统里面
hadoop fs -moveFromLocal 本地文件HDFS的路径
(5)-appendToFile:追加一个文件到已经存在的文件末尾。(第一组:上单的英雄,第二组:中单,第三组:发育,第四组:辅助,第五组:打野,第六组:中单)
1.本地文件(一般是有内容的)
2.把本地文件的内容放到(HDFS系统里面已经存在)的文件的末尾
hadoop fs -appendToFile 本地文件HDFS的文件:把本地文件的内容放到HDFS文件的末尾
(6)-cat:显示文件内容
(7)-chgrp,chmod,chown:Linux文件系统中的用法一样,修改文件所属权限
(ch:change,grp:group分组,mod:mode权限,own:owner拥有者)
charp [R] 组名 文件或者目录名:更改文件/目录所属的用户组
hadoop fs -chgrp 新改的组名 文件或者文件夹
chown:修改文件/目录所有者
hadoop fs -chown 更改为所有者:组名 文件或者文件夹
chmod [用户类别] [操作符] [权限] 文件/目录 (修改文件/目录的权限)
1.用户类别
u:所有者(user)
g:所属者组(group)
o:其他用户(others)
a:所有用户(all,默认值)
2.操作符
+:添加权限
-:移除权限
=:直接设置权限(覆盖原有的权限)
3.权限
r:读
w:写
x:执行 (-代表没有权限)
| 原有的权限 | 命令 | 现有的权限 |
| user原本rw- | chmod u+x script.sh | user的权限rwx |
| group的权限rw- | chmod g-w data.txt | group的权限r-- |
| others的权限rwx | chmod o=r file.txt | others的权限是r-- |
数字模式:
chmod[数字组合]文件/目录
1.权限对应数字
r读=4
w写=2
x执行=1
-(无权限)=0
2.数字组合规则
将三类用户(所有者,组,其他用户)的权限,得到三位数字
第一位:所有者权限
第二位:组权限
第三位:其他用户权限
例1:rwxr-xr--
所有者:rwx 4+2+1=7
组:r-x 4+0+1=5
其他用户:r-- 4+0+0=4
chmod 754 file.txt
例2:rw-r--r--
所有者:rw- 6
组:r-- 4
其他用户:r-- 4+0+0=4
chmod 644 file.txt
(8)-copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去
(9) -copyToLocal:从HDFS拷贝到本地
(10)-cp:从HDFS的一个路径拷贝到HDFS的另一个路径
1.创建一个其他分路的文件夹(游走)
2.我们把王昭君从中路复制一个到游走
(11) -mv:在HDFS目录中移动文件
1.先在HDFS创建一个打野的文件夹。
2.把不知火舞从中路移到打野的位置。
(12)-get:等同于copyToLocal,从HDFS下载文件到本地
hadoop fs -get hdfs系统里面的文件 下载到本地的存放路径
(13) -put:等同于copyFromLocal。上传本地文件到HDFS系统里面。
hadoop fs -put 本地文件HDFS系统的存放路径
(14)-tail:显示一个文件的末尾
(15)-rm:删除文件或文件夹
hadoop fs -rm -r /zOutput Deleted /zOutput
(16) -du 统计文件夹的大小信息(作业:查一下解释)
(17)-setrep:设置HDFS文件的副本数量
1.7 HDFS客户端操作 (开发重点)
master(shell),slave1,slave2,slave3
hdfs客户端代码(集群外的一台电脑
法1:pom.xml
package org.zrw; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.Test; import java.io.IOException; import java.net.URI; public class HdfsClient { @Test public void testMkdir() throws IOException, InterruptedException { //1.创建HDFS的客户端对象filesSystem, (发送了uri网址,配置对象,用户),请求连接集群 //2.登录hdfs成功,可以对HDFS做操作,所以我在HDFS系统里创建了一个aiqinggongyu的文件夹 fileSystem.mkdirs(new Path("/aiqinggongyu")); //.3退出登录,关闭资源 fileSystem.close(); } }法2:log4j2.xml
package org.zrw; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.Test; import java.io.IOException; import java.net.URI; public class HdfsClient { @Test public void testMkdir() throws IOException, InterruptedException { //1.创建HDFS的客户端对象filesSystem, (发送了uri网址,配置对象,用户),请求连接集群 URI uri=new URI(“hdfs://172.18.0.2:9000"); configuration conf=new configuration(); string user="root"; FileSystem fileSystem=FileSystem.get(uri,conf,user1); //2.登录hdfs成功,可以对HDFS做操作,所以我在HDFS系统里创建了一个aiqinggongyu的文件夹 fileSystem.mkdirs(new Path("/aiqinggongyu")); //.3退出登录,关闭资源 fileSystem.close(); } }