文章目录
- 一、主要命令
- 二、配置虚拟机
-
- [2.1 设置静态ip](#2.1 设置静态ip)
- [2.2 修改主机名及映射](#2.2 修改主机名及映射)
- [2.3 修改映射](#2.3 修改映射)
- [2.4 单机模式](#2.4 单机模式)
- [2.5 伪分布式](#2.5 伪分布式)
- [2.6 完全分布式](#2.6 完全分布式)
- 三、初识Hadoop
- 四、三种模式的区别
- 五、问答题
- 六、shell访问hdfs(通过HDFS*Shell命令)
一、主要命令
- 开启防火墙 sudo ufw enable
- 关闭防火墙 sudo ufw disable
- 查看防火墙状态 sudo ufw status
- 修改主机名 sudo vi /etc/hostname
- 修改映射 sudo vi /etc/hosts (考题)
- 建立文件夹 mkdir 文件夹名字
- 删除文件夹 rm -rf 递归删除文件夹向下穿透,其下所有文件、文件夹都会被删除 rm -f 强制删除文件 rm -r 递归删除文件
- 解压文件夹 tar -zxvf 文件名 -C ~/解压到的文件路径
- 文件重命名 mv 旧文件名 新文件名
- 修改主机名的文件位置 /etc/hostname
- 使配置环境变量生效 source ~/.bashrc
- 修改环境变量的 vi ~/.bashrc
- 查看具体的某个文件用cat
- 查看目录用 ls
- 重启ssh服务器 service sshd restart
- 启动ssh sudo service ssh start
- sudo是必须执行的命令
- -i 表示覆盖的意思
二、配置虚拟机
2.1 设置静态ip
查看当前ip:ifconfig
进入到netplan文件夹 cd /etc/netplan
查看文件目录,找到需要修改的文件 ls
进行修改ip sudo vi 00-installer-config.yaml
将设置的网络应用 sudo netplan apply
再次查看ip ip已经更换
2.2 修改主机名及映射
修改主机名 sudo vi /etc/hostname 修改后记得重启
修改映射 sudo vi /etc/hosts (考题)
2.3 修改映射
sudo vi /etc/hosts 将ip地址和主机名的映射添加到文件中192.168.xx.xxx single
使用文本编辑器打开 C:\Windows\System32\drivers\etc\host 文件并在文件末尾添加以下配置并保存退出 192.168.xx.xxx single
2.4 单机模式
- 没有HDFS
- 只能测试MapReduce程序
- MapReduce处理的是本地的Linux的文件数据
- 只需要修改hadoop-env.sh配置文件
2.5 伪分布式
- 格式化HDFS的命令: hdfs namenode -format
启动hadoop集群的命令
- start-all.sh或
- 启动dfs命令: start-dfs.sh
- 启动yarn命令: start-yarn.sh
- 启动yarn之后会有哪些服务?
ResourceManage(8088)、NodeManager(8042)
- 启动hdfs之后会有哪些服务?
Namenode 、 DataNode、 SecondaryNamenode
- 启动所有服务的命令: start-all.sh
- 查看yarn、web页面的端口号
查看yarn的端口号:8088
查看hdfs端口号:50070(通过web看)
-
查看集群启动进程
jps
yarn的中文名(Yet Another Resource Negotiator):资源调度与分配框架
-
控制从节点运行的服务器:workers(3.0hadoop)slaves(2.0hadoop)
-
NameNode(名称结点)的职责
A. 维护HDFS集群的目录树结构:NameNode负责存储和管理文件系统的命名空间,包括目录、文件和其属性等信息。
B. 维护HDFS集群的所有数据块的分布、副本数和负载均衡:NameNode记录每个数据块的位置和副本信息,并负责管理数据块的复制和迁移,以实现数据的可靠性和负载均衡。
C. 响应客户端的所有读写数据请求:NameNode接收客户端的读写请求,并将请求转发到适当的DataNode进行数据读取或写入操作。
D.NameNode负责管理数据块和处理元数据。
- Namenode无法访问时:
- 默认数据块大小:64mb 128mb 128mb
- 要存下700m需要6块数据块:一块为128
- namenode保存的两个文件:edits文件(文件的更新操作,记录操作日志)fsimage文件(修改信息 时间 控制访问权限 hdfs的元信息)
- DataNode(数据结点)职责
1.存储数据块block
2.根据namenode的指令对block进行创建、复制、删除等操作
3.datanode和namenode进行心跳通信,接受namenode指令
4.定期向namenode汇报自身存储的block列表及健康状态
5.负责为客户端发起的读写请求提供服务
- block是hdfs文件系统中最小的存储单位
SSH免密登录原理
非对称加密算法(rsa)、公钥加密(给别人)、私钥解密(给自己)
生成密钥对:ssh-keygen -t
将公钥copy给serverB:ssh-copy-id -i
在主机上登录子机:ssh 子机名
2.6 完全分布式
- 分发命令:scp -r /home/hadoop/hadoop-2.7.4 node2:/home/hadoop
三、初识Hadoop
- 大数据的特征:大量、真实、多样、低价值密度、高速
- hadoop起源的三篇论文:NDFS、MapReduce(分而治之,并行计算)、HDFS(分布式文件系统)->源于谷歌的GFS论文
- hadoop处理的是离线数据!
- 元数据(MetaData):记录hdfs文件系统的相关信息,包括文件系统的目录结构 文件名 文件路径 文件大小等。
- Hadoop的优缺点(简答题):
高扩展性: 增加集群的存储和计算能力
低成本: 利用多台廉价计算机,分布式系统处理
高效性: 离线并行动态计算,提高计算效率
高可靠性: 维护数据副本(3个),可有效防止数据丢失
高容错性:可转移到其他计算机上运行
缺点
不适合处理小文件:为了解决大型数据集的处理问题
无法实时计算:核心是执行离线计算的引擎
安全性较低存储和网络传输方面缺乏对数据的加密
场景:
适合:大数据分析、离线分析
不适合:少量数据、复杂数据、在线分析
- HDFS是Hadoop生态圈的基石,主要负责hadoop集群数据的存储和读取
- 大数据处理的意义:对未来事物发展规律做出预测,对之前的数据进行归纳和总结。
- 第二名称节点的作用:辅助namenode合并fsimage文件和edits文件 将合并结果发送给namenode,帮助主节点namenode进行元数据备份和恢复
四、三种模式的区别
4.1、单机模式与伪分布式模式的区别
单机模式
运行在单个计算机中
所有Hadoop组件(如HDFS和YARN)都在本地运行 ,并且没有网络通信
在单机模式下,Hadoop使用本地文件系统来存储数据。
伪分布式模式
Hadoop在一台计算机上模拟了一个分布式环境。
Hadoop服务(如HDFS和YARN)运行在单个计算机上,但它们通过网络进行通信和协作。
文件系统被配置为HDFS,而不是本地文件系统,数据被存储在HDFS中。
4.2、特点
4.3、配置文件的差异
4.3.1、单机模式
4.3.2、伪分布式模式
4.3.3、完全分布式模式
五、问答题
(1)ifconfig
(2)scp -r /home/hadoop/hadoop-2.7.4 node2:/home/hadoop
(3)hdfs namenode -format
(4)start-dfs.sh 和 start-yarn.sh
(1)hdfs dfs -mkdir /hd123
(2)hdfs dfs -touch data.txt
(3)hdfs dfs -ls /hd123
(4)hdfs dfs -appendToFile test.txt /hd123/data.txt
(5)hdfs dfs -cat /hd2112054139/data.txt
(6)hdfs dfs -get /hd2112054139/data.txt
根据HDFS的块大小为128MB,存储300MB的文件需要多少个数据块。
计算方法如下:文件大小 / 块大小 = 数据块数量
300MB / 128MB ≈ 2.34
根据向上取整规则,需要3个数据块来存储300MB的文件。
所以,需要3个数据块来存储300MB的文件。
六、shell访问hdfs(通过HDFS*Shell命令)
- 格式化HDFS
hdfs namenode -format - 创建目录
hdfs -dfs -mkdir /hd2112054139 - 级联的创建目录
hdfs dfs -mkdir -p /hd2112054139/a/b/c 使用-p时,如果父目录不存在,会自动创建 - 查看目录
hdfs dfs -ls /hd211205139 - 级联的查看目录
hdfs dfs -ls -R /hd2112054139 - 将本地文件上传到HDFS中:hdfs dfs -put 文件名 文件目录 或 hdfs dfs -copyFromLocal b.txt /usr/opt/data
- 将本地文件下载(复制):hdfs dfs -get 文件目录 本地文件目录
- 追加数据
-appendToFile命令:将所有给定本地文件的内容追加到hdfs文件,hdf文件不存在,则创建该文件
hdfs dfs -appendToFile d.txt /usr/opt/data/a.txt
- 在hdfs中文件复制到同一个目录下:hdfs dfs -cp /data1.txt /data2.txt
- 查看文件夹大小:hdfs dfs -du -s 文件夹名
- 查看文件大小:hdfs dfs -du 文件名
- hdfs中删除文件:hdfs dfs -rm -r 文件路径名
- hdfs中统计文件:hdfs dfs -count 文件路径名(显示:目录个数、文件个数、文件总计大小、输入路径)
- 合并目录下的文件并下载到本地:hdfs dfs -getmerge /hd123 ~/input/merge.txt,
并在本地查看内容:cd 本地文件名 cat merge.txt - 查看文件内容:
powershell
#-cat命令:将文件内容显示出来(适合小文件)
hdfs dfs -cat /usr/opt/data/a.txt
#-haed命令:查看文件前1KB的内容
hdfs dfs -head /usr/opt/data/a.txt
#-tail命令:查看文件最后1KB的内容
hdfs dfs -tail /usr/opt/data/a.txt
#-tail -f命令:可以动态显示文件中追加的内容
#在Linux系统中
tail -f 1.txt
#hdfs
hdfs dfs -tail -f /usr/opt/data/a.txt
- HDFS中block默认保存3份
- 一个datanode上只有一个数据块的备份
6.1、问答题
1.根据要求写出HDFS shell命令
- 在HDFS上创建名为test的目录(此目录在主目录下)
hdfs dfs -mkdir ~/test - 将本地的文件file上传至test目录下
hdfs dfs -put /input/file.txt /test - 将本地的文件file内容追加至test目录下的file1.txt中
hdfs dfs -appendToFile file.txt /test/file1.txt - 查看test的目录信息.
hdfs dfs -ls /test
2.这三台操作系统为Ubutun 18.04机器(机器名分别是master(192.168.22.101)、slave(192.168.30.102)、slave2(192.168.22.103))部署Hadoop完全分布式环境,master上位Namenode节点,三台机器已经实现免密登录。实现下面功能需要输入什么Linux命令或者操作进行什么操作?
- 在主机master生成密钥的命令是什么?
ssh-keygen -t - 从master,通过ssh登录到slave2
ssh slave2 - 在master上,格式化HDFS
hdfs namenode -format' - 启动YARN
start-yarn.sh - 该Hadoop集群运行时,使用哪儿个命令查看集群启动进程
jps
6.2、注意
hdfs dfs -put ~/input/file.txt /test 和 hdfs dfs -put /input/file.txt /test 的区别在于文件的来源路径。
hdfs dfs -put ~/input/file.txt /test 中的~/input/file.txt表示当前用户的主目录下的input/file.txt文件。波浪号(~)在这里代表当前用户的主目录。
hdfs dfs -put /input/file.txt /test中的/input/file.txt表示根目录下的input/file.txt文件。
所以,两个命令的主要区别在于文件来源的路径。第一个命令将从当前用户的主目录下复制file.txt文件到HDFS中的/test目录,而第二个命令将从根目录下的/input目录中复制file.txt文件到HDFS中的/test目录。