总结
Hadoop分布式部署
节点规划:Hadoop是分布式主从 架构
根据每种进程使用资源的情况合理的分配节点
先选择一台机器进行安装配置
解压安装
修改配置
xxx-env.sh:环境变量配置文件,主要修改了JDK的路径
- hadoop-env.sh
- mapred-env.sh
- yarn-env.sh
xxx-site.xml:属性配置文件
- core-site.xml
- HDFS的入口 = 也就是
NameNode的地址
,端口8020- 端口决定了访问的应用程序是谁
- 为什么我给你的手机的微信发消息,不是你的QQ收到了这条消息
- Hadoop的一个
存储目录
- 存储一些临时的数据
- DataNode将HDFS中的数据块存储在Linux中的位置
- HDFS的入口 = 也就是
- hdfs-site.xml
- NameNode开放的http的网页端口:50070
分块机制
,分块的大小:128M的字节数副本机制
,默认存储3份
- mapred-site.xml
- MapReduce运行在YARN上
- yarn-site.xml
- ResourceManager所在的机器的地址
- YARN运行的程序类型为MapReduce类型
- 每台NodeManager能够使用的内存配置
<!--每台NodeManager最多能使用8GB内存-->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
</property>
<!--每台NodeManager最小能使用1GB内存-->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
从节点配置 文件:slaves
- 配置DataNode和NodeManager所在的机器的地址
core-site:定义了NameNode所在的机器地址
yarn-site:定义了ResourceManager所在的机器地址
- 为什么DataNode和NodeManager它们的配置文件是同一个?
- 也就是说
为什么DataNode和NodeManager肯定在同一台机器?
- 目的:希望DataNode和NodeManager放在同一台机器,加快数据处理的效率
- 为什么这样做,就能加快数据处理的效率?
- 原因:优先本地计算【设计思想:
移动存储不如移动计算
】- 功能:
DataNode:提供数据的读写
NodeManager:负责任务的计算
- 功能:
- 第一种:
DataNode和NodeManager不在一台机器
- NodeManager必须去DataNode的机器上
下载数据
- 以及计算出来的结果还要
通过网络写入
DataNode所在的机器 读写都要经过跨机器的网络传输
,数据量非常大,就比较慢
- NodeManager必须去DataNode的机器上
- 第二种:
DataNode和NodeManager在一台机器
- 在同一台机器的情况下
- Hadoop在计算任务时,
会优先将任务分配给这个数据所在机器的NodeManager
- NodeManager在读写数据时,直接会访问当前机器的DataNode
数据不用跨网络
分发
格式化
只要第一次格式化正常,不涉及关键性属性的修改,不需要重复格式化
- 初始化了集群
- 初始化NameNode的元数据
- 只要NameNode配置没问题【HDFS的入口】,元数据存储配置没问题,文件块的大小不需要更改,就可以不用初始化
- 格式化失败是肯定要重新格式化的
启动
hadoop-daemon.sh start namenode/datanode
yarn-daemon.sh start resourcemanager/nodemanager