1,项目说明
本项目来源于github 电商平台数据仓库搭建 。
项目为个人学习记录,项目代码及文件可访问 电商平台数据仓库搭建 获得。
2,项目准备
-
虚拟机准备
虚拟机开发工具为 VMware15。
本次项目我自己使用的CentOS版本为CentOS 7。
虚拟机需要配置3台,分别为Hadoop102,Hadoop103,Hadoop104。配置ssh、jdk1.vm-tools,并创建新用户hadoop并配置root权限,关闭防火墙。
主机复制和IP映射可以看这篇文章https://blog.csdn.net/m0_47792921/article/details/122182243
为了后续开发准备,请在虚拟机上配置以下参数,强烈建议和我保持一致,避免后续开发出现问题;
-
liunx设置
vi /etc/sysconfig/network
文件中内容
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=hadoop102
注意:主机名称不要有“_”下划线
[root@hadoop102 桌面]# vim /etc/hosts
添加内容(前面的IP根据你们自己的虚拟机IP来配置!!!)
查看ip使用命令 ifconfig
192.168.1.102 hadoop102 192.168.1.103 hadoop103 192.168.1.104 hadoop104
3,hadoop-2.7.2搭建
-
集群规划
-
安装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