赞
踩
namendoe->相当于目录,不进行文件信息的存储
datanode->真正数据存放的位置
但namenode的默认存放位置在tmp文件下,tmp又是临时文件,随时可能被系统清除,我们存放在hdfs上的数据并不安全,所以我们需要修改一下namenode和datanode的存放位置
fsimage:第一次namenode格式化->在硬盘上生成镜像文件fsimage(持久化存储)->进行元数据的存储
edits:以后进行hdfs文件的存取等文件操作->就会再生成一个文件edits(这是一个编辑文件 用于进行文件操作的记录)
只要进行namenode格式化,就会生成fsimage和edits这两个文件,两者结合使用,进行数据存储,防止数据丢失
edits_inprogress_0000000000000000003在形成新的edits文件前,数据就在这个文件中进行预存储(防止数据丢失)
namenode和datanode之间,会有一个心跳一致检查,来确保数据存储到对应的datanode中
虚拟机中创建自己想要存放namenode和datanode位置的文件夹
- 注:nodepad++ 打完代码后记得ctrl+s保存一下
(官网)
只有把原来格式化文件删掉,才能重新格式化,不然namenode肯定起不来
rm -rf hadoop-root/
hadoop namenode -format
格式化成功----(在最后几行可以找到如下图的代码)
//在自己路径下的hadoop的sbin下
//我的是 cd /opt/soft/hadoop/sbin
./hadoop-daemon.sh start namenode
./hadoop-daemon.sh start datanode
连接成功
//在根目录中创建 名为a的文件夹
hdfs dfs -mkdir /a
//在根目录下创建a文件夹,在a下创建b,b下创建c,c下创建d
hdfs dfs -mkdir -p /a/b/c/d
//把d文件夹 移动到 /(根目录)下
hdfs dfs -mv /a/b/c/d /
//把d文件夹的名称 改为 dd
hdfs dfs -mv /d /dd
-R标识—>当前的路径表示是文件夹
//删除 /a/b/c文件夹
hdfs dfs -rm -R /a/b/c
//将datas.txt文件上传到 hdfs上的根目录下
hdfs dfs -put datas.txt /
replication:默认是3,但是如果进行单节点的服务器搭建,一般会改成1(因为只有一台服务器,不管存多少份,这一台服务器坏了,所有的数据都会消失)
官网修改方法: apache
//把hdfs中根目录下a.txt文件下载到虚拟机/opt/a中
hdfs dfs -get /a.txt /opt/a
//把根目录下的data.txt复制到 /a 下
hdfs dfs -cp /datas.txt /a
//把根目录下的data.txt 改名为 a.txt
hdfs dfs -mv /datas.txt /a.txt
把根目录下的a.txt文件移动到/a/b下
hdfs dfs -mv /a.txt /a/b
hdfs dfs -ls /a
//查看a下datas.txt文件的内容
hdfs dfs -cat /a/datas.txt
//在根目录下创建一个名为a.txt的空文件
hdfs dfs -touch /a.txt
把文件a中的内容拼接到指定文件b中,注意文件b必须为空文件,不然会报错
//把文件datas.txt的内容拼接到 /a.txt中
hdfs dfs -appendToFile datas.txt /a.txt
//删除hdfs中根目录下的a.txt文件
hdfs dfs -rm /a.txt
datanode有自己的数据存储机制----通过数据块进行的数据存储,数据块存在于块池中
数据块就是文件在hdfs中文件存储党的一个格式
[root@test1 subdir0]# pwd
/opt/datas/dfs/datas/current/BP-80508231-192.168.246.103-1696959173959/current/finalized/subdir0/subdir0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。