大数据学习的基础生态圈核心组件。本身的框架分为三个组件,HDFS、MapReduce和Yarn。对应着存储,计算和调度功能。除了计算框架MR被其他许多框架代替,HDFS和YARN在各自领域还是基石般的存在。
安装前提: 有起码3个节点 (可用虚拟机模拟)。
虚拟机模拟分布式的安装部署文档:可参考用VM虚拟机搭建大数据学习集群(3节点)_zhang5324496的博客-优快云博客
集群的规划:
这是学习了解hadoop框架和简单练习使用命令、API操作框架。这里部署没有采用HA 架构
框架 | node121 | node122 | node123 |
HDFS | NameNode,DataNode | DataNode | SecondaryNameNode、DataNode |
YARN | NodeManager | NodeManager | NodeManager、ResourceManager |
1- 下载安装包
官网链接
Apache Hadoop
以2.9.2为例
Index of /dist/hadoop/common/hadoop-2.9.2 (apache.org)
2- 解压安装包
以下操作需要在三个节点上操作,
- 你可以使用xshell的全部回话来实现一起编辑配置文件。
- 也可以在一台机子上编辑完毕后,使用SCP拷贝到其他节点。
- 也可以使用rysnc命令
2.1- 登录node121, 创建目录存放解压hadoop
# 软件安装包存放目录
mkdir -p /opt/cluster/software
# 软件安装目录
mkdir -p /opt/cluster/server
2.2- 解压到统一的安装目录 server下
tar -zxvf hadoop-2.9.2.tar.gz -C /opt/cluster/server
2.3- 配置环境变量(方便后续操作)
编辑 /etc/profile ,添加如下内容
export HADOOP_HOME=/opt/cluster/server/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbi
执行 source /etc/profile, 让配置的环境变量生效
2.4- 验证hadoop
执行命令
hadoop version
应该出现hadoop的版本信息
2.5- 配置 JDK路径。
因为hadoop有用java语言开发,需要配置JDK
执行命令
vi /opt/cluster/server/hadoop-2.9.2/etc/hadoop/hadoop-env.sh
## 找到 java_home,并配置为 你机子上的实际路径。我这里也是安装到 server下
export JAVA_HOME=/opt/cluster/server/jdk1.8.0_231
3- HDFS集群配置
3.1- 指定 namenode 和 数据存储目录
vi /opt/cluster/server/hadoop-2.9.2/etc/hadoop/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://node121:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/cluster/server/hadoop-2.9.2/data/tmp</value>
</property>
</configuration>
3.2- 指定secondarynamenode节点 和 副本数
vi /opt/cluster/server/hadoop-2.9.2/etc/hadoop/hdfs-site.xml
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node123:50090</value>
</property>
<!--副本数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
3.3- 指定datanode的节点
在hadoop的配置目录下,新建slaves文件,内容是 datanode的节点。我这里是3个节点都安装
vi /opt/cluster/server/hadoop-2.9.2/etc/hadoop/slaves
node121
node122
node123
该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
4- MapReduce的集群配置
4.1- 指定MR 的JDK路径
vi /opt/cluster/server/hadoop-2.9.2/etc/hadoop/mapred-env.sh
## 找到 java_home,并配置为 你机子上的实际路径。我这里也是安装到 server下
export JAVA_HOME=/opt/cluster/server/jdk1.8.0_231
4.2- 模拟生产环境,指定MR 运行在 yarn资源调度框架上
mv /opt/cluster/server/hadoop-2.9.2/etc/hadoop/mapred-site.xml.template /opt/cluster/server/hadoop-2.9.2/etc/hadoop/mapred-site.xml
vi /opt/cluster/server/hadoop-2.9.2/etc/hadoop/mapred-site.xml
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
5- Yarn集群配置
5.1- 指定JDK路径
vi /opt/cluster/server/hadoop-2.9.2/etc/hadoop/yarn-env.sh
## 找到 java_home,并配置为 你机子上的实际路径。我这里也是安装到 server下
export JAVA_HOME=/opt/cluster/server/jdk1.8.0_231
5.2- 指定 resourceManager的master地址
vi /opt/cluster/server/hadoop-2.9.2/etc/hadoop/yarn-site.xml
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node123</value>
</property>
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
6- 分发到其他节点
SCP,手动修改,rysnc都可以。
7- 启动验证
7.1-- 第一次启动,需要格式化 namenode
在node121上
hadoop namenode -format
7.2- 启动 HDFS
start-dfs.sh
7.3- 启动yarn
start-yarn.sh
8- 验证是否成功
在所有的节点上执行 jps , 看节点上有没有 相应的组件进程。比如我们这里比较特殊的是
namenode在node121
secondnamenode在 node123
resourceManager在 node123
9- 如果出现个别的组件没有启动,可以到规划的节点上单独启动
比如 resourceManger没有启动,那么就去node123上执行
yarn-daemon.sh start resourcemanager
yarn和 hdfs 的单独 启/停 组件的命令如下
yarn-daemon.sh start/stop resourcemanager/nodemanager
hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode