网站推广软件赚钱难吗?,制作微信网站模板,网站做维恩图,漳州市住房城乡建设局网站目录 HDFS的基础架构
VMware虚拟机部署HDFS集群
HDFS集群启停命令
HDFS Shell操作
hadoop 命令体系#xff1a;
创建文件夹 -mkdir 查看目录内容 -ls 上传文件到hdfs -put
查看HDFS文件内容 -cat
下载HDFS文件 -get
复制HDFS文件 -cp
追加数据到HDFS文件中 -appendTo…目录 HDFS的基础架构
VMware虚拟机部署HDFS集群
HDFS集群启停命令
HDFS Shell操作
hadoop 命令体系
创建文件夹 -mkdir 查看目录内容 -ls 上传文件到hdfs -put
查看HDFS文件内容 -cat
下载HDFS文件 -get
复制HDFS文件 -cp
追加数据到HDFS文件中 -appendToFile
HDFS文件移动 -mv 删除HDFS文件 -rm HDFS存储原理
存储原理 修改副本数量
fsck检查文件副本状态
NameNode元数据
edits和fsimage文件
元数据合并参数 SecondaryNameNode的作用
HDFS数据的读写请求 HDFS的基础架构
Hadoop由三个部分组成分别是HDFS、MapReduce和yarn HDFS由三个角色主角色、从角色、主角色辅助角色 NameNode HDFS系统的主角色是一个独立的进程负责管理HDFS整个文件系统负责管理DataNode SecondaryNameNode NameNode的辅助是一个独立进程主要帮助NameNode完成元数据整理工作 DataNode HDFS系统的从角色是一个独立进程主要负责数据的存储即存入数据和取出数据 VMware虚拟机部署HDFS集群
第二章-04-[实操]VMware虚拟机部署HDFS集群_哔哩哔哩_bilibili
HDFS集群启停命令
• $HADOOP_HOME/sbin/start-dfs.sh 一键启动 HDFS 集群 执行原理
• 在执行此脚本的机器上启动 SecondaryNameNode • 读取 core-site.xml 内容fs.defaultFS项确认 NameNode 所在机器启动 NameNode • 读取 workers 内容确认 DataNode 所在机器启动全部 DataNode •$HADOOP_HOME/sbin/stop-dfs.sh 一键关闭 HDFS 集群 执行原理
• 在执行此脚本的机器上关闭SecondaryNameNode • 读取core-site.xml内容fs.defaultFS项确认NameNode所在机器关闭NameNode • 读取workers内容确认DataNode所在机器关闭全部NameNode $HADOOP_HOME/sbin/hadoop-daemon.sh此脚本可以单独控制所在机器的进程的启停
用法hadoop-daemon.sh (start|status|stop) (namenode|secondarynamenode|datanode)
或者 hdfs --daemon (start|status|stop) (namenode|secondarynamenode|datanode) HDFS Shell操作
hadoop 命令体系
hadoop fs [generic options] 或者 hdfs dfs [generic options]
没有任何区别
创建文件夹 -mkdir
hdfs dfs -mkdir [-p] path 查看目录内容 -ls
清测-ll等是不可行的
hdfs dfs -ls [-h] [-R] [path ...] -h 人性化显示文件 -R 递归查看指定目录及其子目录 上传文件到hdfs -put
hdfs dfs -put [-f] [-p] localsrc ... dst-f 覆盖目标文件已存在下-p 保留访问和修改时间所有权和权限 localsrc 本地文件系统客户端所在机器 dst 目标文件系统HDFS 查看HDFS文件内容 -cat hdfs dfs -cat src ...当文件很大时可以配合more翻页 hdfs dfs -cat src | more下载HDFS文件 -get hdfs dfs -get [-f] [-p] src ... localdst下载文件到本地文件系统指定目录localdst必须是目录 -f 覆盖目标文件已存在下 -p 保留访问和修改时间所有权和权限。 复制HDFS文件 -cp hdfs dfs -cp [-f] src ... dstsrc和dst都只能是hdfs的文件路径 追加数据到HDFS文件中 -appendToFile HDFS的文件修改只支持追加和删除 hdfs dfs -appendToFile localsrc ... dst将localsrc的内容追加到dst HDFS文件移动 -mv hdfs dfs -mv src ... dst 移动文件到指定文件夹下,可以使用该命令移动数据重命名文件的名称 删除HDFS文件 -rm hdfs dfs -rm -r [-skipTrash] URI [URI ...] 删除指定路径的文件或文件夹 -skipTrash 跳过回收站直接删除 回收站功能默认关闭如果要开启需要在core-site.xml内配置 property namefs.trash.interval/name value1440/value /property property namefs.trash.checkpoint.interval/name value120/value /property 无需重启集群在哪个机器配置的在哪个机器执行命令就生效。 回收站默认位置在/user/用户名(hadoop)/.Trash 其他的一些用法跟linux里面是基本一致的 HDFS存储原理 存储原理 将每个文件分成nn个服务器份每一份又分成m个block(Block块HDFS最小存储单位,每个256MB可以修改))分成block的目的是统一hdfs的存储单元便于管理
但是这样如果丢了一个block那么整个文件都会失效那么 使用备份解决
将每个block备份n份放入不同的服务器 修改副本数量
可以在hdfs-site.xml中配置属性以设置默认文件上传到HDFS中拥有的副本数量
propertynamedfs.replication/namevalue3/value
/property一般不需要设置默认是3
除了配置文件外我们还可以在上传文件的时候临时决定被上传文件以多少个副本存储。
hadoop fs -D dfs.replication2 -put test.txt /tmp/
如上命令就可以在上传test.txt的时候临时设置其副本数为2
对于已经存在HDFS的文件修改dfs.replication属性不会生效如果要修改已存在文件可以通过命令
hadoop fs -setrep [-R] 2 path
如上命令指定path的内容将会被修改为2个副本存储。-R选项可选使用-R表示对子目录也生效。
fsck检查文件副本状态
hdfs fsck path [-files [-blocks [-locations]]]
fsck可以检查指定路径是否正常
-files可以列出路径内的文件状态-files -blocks 输出文件块报告有几个块多少副本-files -blocks -locations 输出每一个block的详情 红色线表示副本数量这里是总的数量也就是总共3个block
蓝色的是三个block存放的位置可以看到是存放在了三个不同的服务器 0hdfs系统的状态 1有多少个副本 2丢失了多少blocks
NameNode元数据
edits和fsimage文件
Hadoop是通过NameNode来记录和整理文件和block的关系 NameNode基于一批edits和一个fsimage文件的配合完成整个文件系统的管理和维护 edits文件是一个流水账文件记录了hdfs中的每一次操作以及本次操作影响的文件其对应的block会有多个edits文件 将全部的edits文件合并为最终结果即可得到一个Fsimage文件 对于存放的位置在hdfs-site.xml文件中配置了 propertynamedfs.datanode.data.dir/namevalue/data/dn/value/property那么此处的edits和fsimage就存放在了data/nn文件夹下的current文件夹
元数据合并参数
对于元数据合并成fsimage是一个定时过程基于两个参数
dfs.namenode.checkpoint.period默认3600秒即1小时
dfs.namenode.checkpoint.txns默认1000000即100W次事务只需要达到一个条件就需要合并
默认60秒检查一次是否符合条件基于
dfs.namenode.checkpoint.check.period默认60秒来决定SecondaryNameNode的作用
SecondaryNameNode会通过http从NameNode拉取数据edits和fsimage然后合并完成后提供给NameNode使用 HDFS数据的读写请求
数据写入流程
1. 客户端向NameNode发起请求2. NameNode审核权限、剩余空间后满足条件允许写入并告知客户端写入的DataNode地址一般来说会分配网络距离最近的datanode3. 客户端向指定的DataNode发送数据包4. 被写入数据的DataNode同时完成数据副本的复制工作将其接收的数据分发给其它DataNode5. 写入完成客户端通知NameNodeNameNode做元数据记录工作数据读取流程1、客户端向NameNode申请读取某文件2、 NameNode判断客户端权限等细节后允许读取并返回此文件的block列表3、客户端拿到block列表后自行寻找DataNode读取即可会去找最近的datanode