准备
下载安装包
https://hadoop.apache.org/
解压安装包
1
| tar -zxvf hadoop-x.x.x.tar.gz
|
配置
配置HDFS
创建目录
创建目录用于存储namenode和datanode的数据文件
1 2 3
| mkdir -p /usr/local/hadoop_tmp/hdfs/namenode mkdir -p /usr/local/hadoop_tmp/hdfs/datanode
|
配置目录
打开etc/hadoop/hdfs-site.xml,添加以下配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:///usr/local/hadoop_tmp/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///usr/local/hadoop_tmp/hdfs/datanode</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
|
- dfs.namenode.name.dir指定nameNode的数据文件存储目录
- dfs.datanode.name.dir指定dataNode的数据文件存储目录
- dfs.replication指定数据副本数量
配置YARN
配置
打开etc/hadoop/yarn-site.xml文件,添加以下配置
1 2 3 4 5 6 7 8 9 10
| <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> </configuration>
|
- yarn.nodemanager.aux-services 参数的值设置为 mapreduce_shuffle,以确保 MapReduce 应用程序可以正常运行。
- yarn.nodemanager.env-whitelist 参数用于控制在 YARN 容器中可以覆盖的环境变量白名单
运行
格式化Hadoop目录
1
| bin/hadoop namenode -format
|
- 执行此命令后,NameNode将被格式化,并创建一个新的FsImage文件。之后,你可以重新启动NameNode和整个HDFS集群。
运行HDFS
运行YARN
操作
创建目录
上传文件
1
| hadoop fs -put /Users/chenlong/test.json /temp
|
查询目录
下载文件
1
| hadoop fs -get /temp/test.json /Users/chenlong
|
备注
NameNode
Hadoop的NameNode是HDFS的master节点,负责管理整个集群的元数据和集群管理功能。它维护了一个树形的目录结构,记录了文件和目录的层次关系,方便用户组织和管理大规模的数据集。NameNode还负责管理数据块,保存所有数据块的元数据,用于block管理,维护BlocksMap和接收来自DataNode的块汇报等。此外,它还负责管理DataNode,包含了decommission和activities的节点,用于接收DataNode注册,心跳等。NameNode还负责管理文件的租约,缓存管理器处理DataNode上的缓存。
DataNode
Hadoop的DataNode是HDFS的slave节点,负责存储实际的数据块并提供存储功能。它执行实际的数据读写操作,创建和删除数据块,并在集群中复制数据。DataNode还定期发送块报告和心跳,以保持与NameNode的联系。
dfs.replication
dfs.replication是Hadoop分布式文件系统(HDFS)中的一个重要参数,它代表了每个数据块的备份数量,也就是冗余系数。
在HDFS中,dfs.replication的值决定了数据块的冗余程度,也就是数据在集群中的副本数量。如果该值为3,那么每个数据块会有3个副本,分布在不同的DataNode上。这意味着即使部分DataNode发生故障,也可以从其他DataNode上获取到数据。