-
集群规划
-
安装hadoop
Hadoop下载地址:
https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/
将hadoop-2.7.2.tar.gz复制粘贴到opt目录下面的software文件夹下面,并进入该目录打开终端。
# 压缩包路径
mkdir /opt/software
# 安装路径
mkdir /opt/module
cd /opt/software
# 解压,如果权限问题在前面加上sudo
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
# 查看是否解压成功,如果有hadoop2.7.2文件解压成功
ls /opt/module/
-
添加环境变量
(1)打开/etc/profile文件
sudo vim /etc/profile
在profile文件末尾添加JDK路径:(shitf+g)
按 i (插入模式)
##HADOOP_HOME
exportHADOOP_HOME=/opt/module/hadoop-2.7.2
exportPATH=$PATH:$HADOOP_HOME/bin
exportPATH=$PATH:$HADOOP_HOME/sbin
(2)保存后退出 先按esc 后输入 :
:wq
(3)让修改后的文件生效
source /etc/profile
(5)测试是否安装成功
hadoop version
# 如果安装成功会出现Hadoop的版本信息
Hadoop2.7.2
(6)重启(如果Hadoop命令不能用再重启)
[xzt@hadoop102 hadoop-2.7.2]$ sudo reboot
-
Hadoop的目录结构
(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例
-
集群配置
集群部署规划
| hadoop102 | hadoop103 | hadoop104 |
---|
HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
(1)核心配置文件
配置core-site.xml
cd opt/module/hadoop-2.7.2
vim etc/hadoop/core-site.xml
在该文件中编写如下配置
<!--指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!--指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
(2)HDFS配置文件
配置hadoop-env.sh
vim etc/hadoop/hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144(根据你自己安装JDK的路径来选择)
配置hdfs-site.xml
vim etc/hadoop/hdfs-site.xml
在该文件中编写如下配置
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
(3)YARN配置文件
配置yarn-env.sh
vim etc/hadoop/yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
(根据你自己安装JDK的路径来选择)
配置yarn-site.xml
vim etc/hadoop/yarn-site.xml
在该文件中增加如下配置
<!--Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
(4)MapReduce配置文件
配置mapred-env.sh
vim etc/hadoop/mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
(根据你自己安装JDK的路径来选择)
配置mapred-site.xml
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
vim etc/hadoop/mapred-site.xml
在该文件中增加如下配置
<!--指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop101:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop101:19888</value>
</property>
(5) 配置slaves
vim etc/hadoop/slaves
添加以下内容
hadoop102
hadoop103
hadoop104
配置lzo压缩
1)先下载lzo的jar项目(我在jars/hadoop里面已经放了一个jar包,嫌麻烦的直接用)
https://github.com/twitter/hadoop-lzo/archive/master.zip
2)下载后的文件名是hadoop-lzo-master,它是一个zip格式的压缩包,先进行解压,然后用maven编译。生成hadoop-lzo-0.4.20.jar。
3)将编译好后的hadoop-lzo-0.4.20.jar 放入hadoop-2.7.2/share/hadoop/common/
4)core-site.xml增加配置支持LZO压缩
<configuration>
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
</configuration>
5)同步core-site.xml到hadoop103、hadoop104
[xzt@hadoop102 hadoop]$ xsynccore-site.xml
-
在集群上分发配置好的Hadoop配置文件
scp -r /opt/module/hadoop2.7.2 hadoop103:/opt/module/
scp -r /opt/module/hadoop2.7.2 hadoop104:/opt/module/
-
群起集群
1)如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)
bin/hdfs namenode -format
(2)启动HDFS
sbin/start-dfs.sh
(3) 启动YARN
ssh hadopo103
cd /opt/module/hadoop-2.7.2
sbin/start-yarn.sh
注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN,所以我们要切换到Hadoop103来启动yarn。
-
集群所有进程查看脚本
1)在hadoop102的/home/hadoop/bin目录下创建脚本xcall.sh,该脚本可以在三台服务器上同时执行同一个命令
vim xcall.sh
2)在脚本中编写如下内容
#! /bin/bash
for i in hadoop102 hadoop103 hadoop104
do
echo --------- $i ----------
ssh $i "$*"
done
3)修改脚本执行权限
chmod 777 xcall.sh
4)启动脚本查看集群是否启动成功
xcall.sh jps
hadoop102
4903 Jps
4360 DataNode
4172 NameNode
4718 NodeManager
Hadoop03
4168 NodeManager
4650 Jps
3855 DataNode
3999 ResourceManager
Hadoop04
3904 SecondaryNameNode
4210 Jps
3784 DataNode
4029 NodeManager
成功情况下,三台服务器各有四个进程,如果失败的话请检查一下配置文件是否写错,改完后再格式化一下namenode再次启动
5) 集群启动和关闭命令
(关闭虚拟机前一定要关闭集群!!!否则有可能会导致集群错误)
整体启动/停止HDFS
start-dfs.sh / stop-dfs.sh
整体启动/停止YARN
start-yarn.sh / stop-yarn.sh
-
zookeeper集群搭建
关于zookeeper集群的搭建大家可以参考我的另外一篇文章https://blog.csdn.net/m0_47792921/article/details/122182344