hadoop-hdfs-伪分布式的基础知识和环境搭建

本文介绍Hadoop HDFS伪分布式的安装配置过程,包括免密钥设置、JDK与Hadoop安装、环境变量配置及核心配置文件的修改等步骤。同时详细解释了NameNode、DataNode和SecondaryNameNode的工作原理及其在文件系统中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hadoop-hdfs-伪分布式的基础知识和环境搭建

1.设置免密钥
现在检查您是否可以在没有密码的情况下ssh到localhost:
ssh localhost
如果在没有密码短语的情况下无法ssh到localhost,请执行以下命令:
ssh-keygen -t dsa -P ‘’ -f /root/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
2.安装jdk,rpm安装
rpm -ivh jdk-7u67-linux-x64.rpm
3.安装hadoop
tar xf hadoop-2.6.5.tar.gz
(1)都需要配置环境变量,JAVA_HOME,HADOOP_HOME,jdk使用命令jps验证是否安装jdk并且已经配置好环境变量。
在/etc/profile文件最后。在这里插入图片描述vi /etc/profile
修改完成,保存退出,执行。
./etc/profile
(2)将/hadoop-2.6.5/etc里hadoop目录下的hadoop-env.sh 文件里的JAVA_HOME环境变量修改为绝对路径。如图:
在这里插入图片描述
(3)将hadoop目录下的core-site.xml文件,添加:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

并且将localhost修改为对应虚拟机的名称,defaultFS规划了namenode在哪启动。修改如图:
在这里插入图片描述
(4)将hadoop目录下的hdfs-site.xml文件,添加:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

如图:
在这里插入图片描述
(5)修改hadoop目录下的slaves文件,将localhost修改为虚拟机名称(node01),如果有多台在此文件中依次罗列即可,修改完成保存退出。
注:该文件下的配置项决定了datanode在哪启动。
4. 修改hadoop目录下的core-site.xml文件,如图:
在这里插入图片描述
5. 修改hadoop目录下的hdfs-site.xml文件,如图:
在这里插入图片描述
注:hdfs-site.xml文件下的配置项决定SNN在哪启动。
在这里插入图片描述
6.格式化分布式文件系统
hdfs namenode -format
看到有successfully即格式化成功,如图:

7.启动在这里插入图片描述
start-dfs.sh
8.hadoop命令
hdfs dfs -跟需要执行的命令,与linux命令类似
例:hdfs dfs -mkdir -p /usr/root (创建多层目录加-p)
将一个文件上传到/usr/root目录下,上传时会显示COPYING,如图
在这里插入图片描述
上传完成后消失,如图:
在这里插入图片描述
例:将一个txt文件,上传到/usr/root目录,block大小设置为1MB,进行上传,上传的每个块严格按照1MB切割上传,不足的1MB的将剩余的作为一个块。
在当前目录下创建一个test.txt文件中,内容为循环5000次。

for i in seq 5000;do echo “hello hdfs $i” >>test.txt;done
hdfs dfs -D dfs.blocksize=1048576 -put test.txt /usr/root
1MB=1024kb=1024*1024=1048576
在这里插入图片描述
8.关闭
stop-dfs.sh
各部分的作用
一、NameNode
(1)存储文件和目录的元数据:包括文件block副本个数,访问和修改时间,访问权限,block大小以及组成文件的block信息。
(2)通过fsimage和edits log文件在本地进行持久化。
(3)在每次系统启动后, datanode通过心跳包向namenode发送block信息(包括block块的位置信息和状态),block块信息是动态分配的,每次系统重启,之前的block信息可能发生变化。
注:相同的存储目录,在同一时刻只允许一个namenode节点使用,这里使用in_use.lock文件锁定该存储目录,来防止其他用户使用。
二、DataNode存储数据模型
1、文件线性切割成块(Block),按字节切分一提到块就会想到概念:偏移量。
2、Block分散存储在集群节点中,不要把所有块放在同一节点。
3、单一文件Block大小一致,文件与文件可以不一致
4、Block可以设置副本数,副本分散在不同节点中,防止节点当机,文件丢失,副本数不要超过节点数量,副本就相当于每块的备份,。
5、文件上传可以设置Block大小(默认128M)和副本数,。
6、已上传的文件Block副本数可以调整,大小不变(不可以进行修改)。
7、只支持一次写入多次读取,同一时刻只有一个写入者
8、可以append追加数据,只能在最后追加,如果一个文件的最后一个块大小不是默认大小或者设置的大小,追加的数据先将最后一个块填满,再在最后一个块后新建一个相同大小的块进行后续的添加。
三、SecondaryNameNode
(1) 加快NameNode的启动
(2) 减少内存空间的消耗
SecondaryNameNode工作流程:
在这里插入图片描述
edits log(日志文件,记录对文件的操作)会随着对文件系统的操作而无限制地增长,这对正在运行的NameNode而言没有任何影响,如果NameNode重启,则需要很长的时间执行edits log的记录以更新fsimage(元数据镜像文件)。在此期间,整个系统不可用。解决方案就是运行SecondaryNameNode。
(1) SecondaryNameNode定时向namenode生成新的edits log文件,并向其中写日志。
(2) SecondaryNameNode通过HTTP GET的方式从NameNode下载fsimage和edits文件到本地。
(3) SecondaryNameNode将fsimage加载到自己的内存,并根据edits log更新内存中的fsimage信息,然后将更新完毕之后的fsimage写到磁盘上。
(4) SecondaryNameNode通过HTTP PUT将新的fsimage文件发送到NameNode,NameNode将该文件保存为.ckpt的临时文件备用,并将该文件重命名准备使用。
(5) 此时NameNode拥有一个新的fsimage文件和一个新的很小的edits log文件(可能不是空的,因为在SecondaryNameNode合并期间可能对元数据进行了读写操作)。管理员也可以将NameNode置于safemode,通过hdfs dfsadmin -saveNamespace命令来进行edits log和fsimage的合并。
(6) 总结为一句话就是:镜像+增量日志=新时刻镜像。默认一个小时进行一次合并或者edits log存储事务达到一百万个。
如果一个集群足够大,SecondaryNameNode运行于一台专用的物理主机。
Block的副本放置策略

第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。
第二个副本:放置在于第一个副本不同的 机架的节点上。
第三个副本:与第二个副本相同机架的节点。
更多副本:随机节点。
hadoop的安全模式
(1)启动NameNode,NameNode加载fsimage到内存,对内存数据执行edits log日志中的事务操作。
(2)文件系统元数据内存镜像加载完毕,进行fsimage和edits log日志的合并,并创建新的fsimage文件和一个空的edits log日志文件。
(3)NameNode等待DataNode上传block列表信息,直到副本数满足最小副本条件。
(4)当满足了最小副本条件,再过30秒,NameNode就会退出安全模式。最小副本条件指整个文件系统中有99.9%的block达到了最小副本数(默认值是1,可设置)。
在NameNode安全模式(safemode)
a、对文件系统元数据进行只读操作。
b、当文件的所有block信息具备的情况下,对文件进行只读操作。
c、不允许进行文件修改(写,删除或重命名文件)。
注:在安全模式NameNode不会要求DataNode复制或删除block。
新格式化的HDFS不进入安全模式,因为DataNode压根就没有block。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值