[数据存储]HDFS的简介、初始化配置与运行

HDFS简介

HDFS(Hadoop Distributed File System)Hadoop分布式文件系统,是Hadoop项目中关于数据存储的组件,是Hadoop项目的一部分。

HDFS数据存储访问方式

HDFS采用主从模式的分布式存储方式存储文件。对于超大的数据而言,单个服务器无法承担对改数据的存储和读取工作。所以采用分布式的架构对文件进行存储。HDFS将大数据分割成不同的小部分数据,将分割后的数据存储在不同的服务器上,环境了服务器的存储压力。且在对数据进行传输的过程中,单服务器存储数据只能利用自己本身的网络传输,而在分布式的存储中,可以充分利用到多台主机进行网络传输,更好的利用到了网络带宽。HDFS会冗余性的为数据创建副本,保证了数据的安全性,避免因为硬件或软件的损坏导致数据的丢失。且HDFS将副本分布在多台主机中,当需要读取数据时,HDFS会自动根据请求地址,所以传输效率最高的副本进行网络传输。

HDFS节点

在HDFS中,节点按照功能和类型可以划分为NameNode(主节点)、SecondaryNameNode(辅助节点)、DataNode(从节点)

  • NameNode(主节点):
    • HDFS系统的主节点
    • 管理整个文件系统
    • 管理DataNode从节点
# 在 ${HADOOP_CONF_DIR}/core-site.xml文件中对主节点的通讯路径进行配置
# 在节点间通过hdfs协议进行数据通讯
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://node1:9001</value>
</property>
  • SecondaryNameNode(辅助节点):
    • NameNode的辅助节点
    • 主要帮助NameNode完成对元数据的处理工作
    • 在调用start-dfs.sh脚本的主机中自动启动SecondaryNameNode进程
  • DataNode(从节点):
    • 主要负责数据的存储与管理
# 在 ${HADOOP_CONF_DIR}/hdfs-site.xml文件中对DataNode进行配置
<property>
	<name>dfs.namenode.hosts</name>
	<value>node1, node2, node3</value>
</property>

HDFS的数据存储原理

  • HDFS将文件分割成多个部分进行分布式存储,在进行存储时,为更好的对文件进行统一管理,HDFS以block块结构统一文件的大小,方便管理
# 在 ${HADOOP_CONF_DIR}/hdfs-site.xml文件中对block大小进行配置
<property>
	<name>dfs.blocksize</name>
	<value>268435456</value>
</property>
  • 为防止因为丢失block块或块损坏而造成的文件不完整,HDFS在存储时采用多个副本的方式对数据进行备份操作
# 在 ${HADOOP_CONF_DIR}/hdfs-site.xml文件中对副本数量进行配置
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>

HDFS元数据(Block块管理)

在HDFS中,由NameNode主节点来对Block块进行管理。NameNode通过edits和fsimage在完成对整个文件系统的管理和维护

  • edits文件:
    • edits文件记录hdfs文件系统的每一次操作,以及操作影响到的block块结构
    • 随着记录的增加,edits会越来越大,影响对数据的检索效果,edits当文件到一定大小时会创建新的edits文件,多个edits文件确保系统的检索性能
  • fsimage文件:
    • 在进行检索时,需要从多个edits文件中从头到尾进行检索
    • 为解决需要全部检索的问题,hdfs定期或事务数达到一定值的时候对edits进行合并,生成最终的结果,确保文件的检索效率
# 在 ${HADOOP_CONF_DIR}/hdfs-site.xml文件中设置edits文件合并时间
<property>
	<name>dfs.namenode.checkpoint.period</name>
	<value>3600</value>
</property>
# 在 ${HADOOP_CONF_DIR}/hdfs-site.xml文件中设置edits文件合并事务数
<property>
	<name>dfs.namenode.checkpoint.txns</name>
	<value>1000000</value>
</property>
  • 以上两个条件满足一个即进行文件的合并操作
  • 文件的合并操作主要由SecondaryNameNode节点执行

HDFS的数据读写流程

HDFS数据写入流程

  • 客户端向NameNode发起写入请求
    • NameNode节点只负责元数据的记录和权限审批,不经手数据
  • NameNode审核用户权限和节点的剩余空间
  • NameNode告知客户端写入DataNode的地址
    • 该DataNode节点一般是和客户端网络距离最近的节点
  • 客户端向DataNode发送数据,写入DataNode
  • 由DataNode写入数据,并将数据发送给其他节点,完成数据的备份
    • 数据备份操作由DataNode节点之间自行完成
  • 写入完成后,客户端发送NameNode写入完成通知
  • NameNode记录写入的元数据

HDFS数据读取流程

  • 客户端向NameNode申请访问请求
  • NameNode判断客户端权限
  • NameNode告知客户端block列表
    • NameNode根据网络距离返回block列表
  • DataNode根据block列表读取数据

启动HDFS

HDFS初始化配置

根据前文配置好Hadoop的环境变量

${HADOOP_CONF_DIR}/hdfs-site.xml

hdfs-site.xml文件主要为hdfs组件的核心配置。

# hdfs web ui界面
<property>
	<name>dfs.namenode.http-address</name>
	<value>node1:9000</value>
</property>
# hdfs文件系统默认创建的文件权限
<property>
	<name>dfs.datanode.data.dir.perm</name>
	<value>700</value>
</property>
# NameNode元数据存储位置
<property>
	<name>dfs.namenode.name.dir</name>
	<value>${HADOOP_DATA_HOME}/nn/</value>
</property>
# 允许加入NameNode的DataNode
<property>
	<name>dfs.namenode.hosts</name>
	<value>${nameNodeHosts}</value>
</property>
# hdfs block块大小
<property>
	<name>dfs.blocksize</name>
	<value>268435456</value>
</property>
# NameNode处理的并发线程数
<property>
	<name>dfs.namenode.handler.count</name>
	<value>100</value>
</property>
# DataNode的数据存储目录
<property>
	<name>dfs.datanode.data.dir</name>
	<value>${HADOOP_DATA_HOME}/dn/</value>
</property>

文件系统格式化

在存储namenode时,需要对文件系统进行格式化。

hadoop namenode -format

启动HDFS

执行完以上操作和配置后,即可调用hadoop的hdfs启动脚本启动HDFS

# 启动hdfs组件
start-hdfs.sh
# 关闭hdfs组件
stop-hdfs.sj

xxx-hdfs.sh脚本存放在hadoop的sbin路径下,配置好环境变量后直接执行即可。

查看启动状态

hadoop通过jps命令查看当前主机中部署的节点

$ jps
272 NameNode
448 Jps
408 DataNode

也可以通过配置的hdfs的web ui界面查看节点运行状态
HDFS Web UI

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: HDFS格式化找不到命令通常是由于Hadoop集群环境配置不正确或者没有正确设置Hadoop的环境变量导致的。 首先,确保Hadoop已经正确安装并且Hadoop的bin目录已经在环境变量PATH中设置。可以通过在命令行中输入"hadoop version"来验证Hadoop是否正确安装和配置。 如果Hadoop已经正确安装,但仍然提示找不到命令,那可能是因为Hadoop配置文件中没有正确指定Hadoop的安装路径。可以检查Hadoop配置文件(hadoop-env.sh)中的HADOOP_HOME变量是否正确设置为Hadoop的安装路径。 另外,还需要确保当前操作用户具有对Hadoop文件系统进行格式化的权限。如果当前用户不是Hadoop的管理员或者没有足够的权限,可能会导致找不到格式化命令。可以试着以管理员身份运行格式化命令或者联系Hadoop管理员进行格式化操作。 最后,如果以上步骤都正确设置,但仍然找不到格式化命令,可以尝试重新安装Hadoop或者检查Hadoop的版本与所使用的命令是否兼容。 总之,HDFS格式化找不到命令通常是由于Hadoop环境配置不正确或者环境变量设置不正确导致的。需要确保Hadoop已正确安装、配置文件中的路径正确、用户具有足够权限,并确保Hadoop版本与命令兼容。 ### 回答2: HDFSHadoop分布式文件系统)是Hadoop生态系统中的一部分,用于存储和处理大数据。格式化HDFS是指在开始使用HDFS之前对其进行初始化配置的过程。当我们尝试格式化HDFS时,有时可能会遇到找不到命令的问题。这种情况可能是由以下几个原因引起的。 首先,可能是由于Hadoop的安装或配置有问题。当Hadoop未正确安装时,系统无法找到相关的Hadoop命令。在这种情况下,需要检查Hadoop是否按照正确的步骤进行安装,并确保相关的环境变量和路径设置正确。 其次,可能是由于Hadoop版本的兼容性问题。不同版本的Hadoop可能有不同的命令名称或命令用法。如果使用的Hadoop版本与命令不兼容,系统就无法找到相应的命令。 最后,可能是由于系统的权限问题。在某些情况下,Hadoop命令需要特定的用户权限才能执行。如果当前用户没有足够的权限,系统可能无法找到命令。在这种情况下,可以尝试使用管理员权限或与系统管理员联系以解决权限问题。 要解决这个问题,我们可以按照以下步骤进行操作。首先,确保Hadoop已正确安装并设置了正确的环境变量和路径。其次,检查使用的Hadoop版本是否与命令兼容。最后,确保当前用户具有执行命令所需的权限。 总结而言,当HDFS格式化时找不到命令,我们需要检查Hadoop的安装、配置、版本兼容性和权限等问题。通过对这些问题进行逐一排查,并解决相应的问题,我们就能够成功格式化HDFS并开始使用它来存储和处理大数据。 ### 回答3: Hadoop分布式文件系统(HDFS)格式化是在部署Hadoop集群之前必须执行的一项操作。这个命令会将HDFS的元数据数据全部删除,并将文件系统恢复为初始状态。这样做是为了确保干净的起点,以便重新开始构建和使用HDFS。 当我们在命令行中输入"hdfs namenode -format"命令时,如果提示找不到命令,可能是由于以下原因: 1. Hadoop安装错误:Hadoop分发包未正确安装或配置。在执行HDFS格式化命令之前,需要确保已经正确地安装和配置Hadoop。可以检查Hadoop的安装目录以及环境变量的设置,确保其正常运行。 2. 命令路径错误:Hadoop的bin目录没有添加到系统的PATH环境变量中。在执行HDFS格式化之前,需要将Hadoop的bin目录添加到系统的PATH环境变量中。这样系统就能够找到并识别"hdfs"命令。 3. Hadoop版本不匹配:Hadoop的版本与当前部署的版本不匹配。在执行HDFS格式化命令之前,需要确保Hadoop的版本与当前Hadoop集群的版本一致。如果版本不匹配,可能会导致"hdfs"命令无法识别。 4. HDFS服务未正确启动:HDFS服务没有成功启动或运行。在执行HDFS格式化命令之前,需要确保HDFS服务已经正确启动。可以使用"hadoop-daemon.sh start namenode"命令来启动HDFS服务,并确保服务运行正常,然后再执行格式化命令。 总之,如果在执行"hdfs namenode -format"命令时提示找不到命令,应该仔细检查Hadoop的安装和配置,确保Hadoop的版本正确,并确保HDFS服务已经正确启动。只有在以上步骤都正确无误的情况下,才能成功执行HDFS格式化命令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北溪入江流

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值