这是我参与「第四届青训营 」笔记创作活动的第17天
1. Hadoop
1.1 Hadoop是什么
- Hadoop是一个由apache基金会所开发的分布式系统基础架构
- 主要解决海量数据存储和计算问题
- 广义上是指Hadoops生态圈
三大发行版本:
- Apache基础版本
- Cloudera版本
- Hortonworks版本
Hadoop四大优势:
- 高可靠性
- 高扩展性
- 高效性
- 高容错性
Hadoop目录结构:
- bin目录:存放对Hadoop相关服务进行操作的脚本
- etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
- lib目录:存放Hadoop的本地库
- sbin目录:存放启动或停止Hadoop相关服务的脚本
- share目录:存放Hadoop的依赖jar包、文档和官方案例
1.2 HDFS
HDFS分布式文件系统:
- NameNode:存储文件的元数据,如文件名、文件目录结构、文件属性,以及每个文件的块信息
- DataNode:在本地文件存储文件数据块,以及块数据的校验和
- Secondary NameNode:每隔一段时间向NameNode汇报元数据备份
1.3 YARN
Yet Another Resource Negotiator简称YARN ,另一种资源协调者,是Hadoop的资源管理器。
- ResourceManager:管理整个集群资源
- NodeManager:管理单个节点服务器资源
- ApplicationMaster:管理单个任务的资源
- Container:虚拟容器,封装了任务运行需要的内存、CPU、磁盘、网络等资源
1.4 MapReduce
MapReduce将计算过程分为两个阶段:Map 和 Reduce
- Map阶段并行处理输入数据
- Reduce阶段对Map结果进行汇总
2. 搭建集群
2.1 准备
1.准备模板虚拟机
配置IP地址、主机名称映射、内存(4G)、硬盘(50G)
复制三台虚拟机、设置NAT网络模式保证三台主机可以相互Ping通
安装JDK并配置环境变量
安装Hadoop并配置环境变量
Hadoop运行模式:
- 本地模式:单机运行
- 伪分布式:单机上,主从节点在一台服务器上
- 完全分布式:多台服务器组成分布式环境
2.2 配置文件
规划集群:
| Hadoop102 | Hadoop103 | Hadoop104 | |
|---|---|---|---|
| HDFS | NameNode、DataNode | DataNode | SecondaryNameNode、DataNode |
| YARN | NodeManager | ResourceManager、NodeManager | NodeManager |
(1) core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为lee -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>lee</value>
</property>
</configuration>
(2) hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>
(3) yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MR走shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</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>
(4) 配置workers
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
hadoop102
hadoop103
hadoop104
(5) 启动集群
hdfs namenode -format
sbin/start-dfs.sh
# 在RM节点上启动YARN
sbin/start-yarn.sh
(6) 配置mapred-site.xml
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>