安装与部署
提示
- 这里使用的Linux版本是
CentOS7
- 这里使用的Hadoop版本是
Hadoop-3.3.6
- 这里使用的JDK版本是
8
Hadoop源码编译部署
匹配不同操作系统本地库环境,Hadoop某些操作比如压缩、I0需要调用系统本地库(*.so
|*.dl1
)
带有 src
字样的 .tar.gz
文件就是源码包,查看源码包根路径下的 BUILDING.txt
,查看都需要什么环境,然后编译即可
相关博客:
- https://zhuanlan.zhihu.com/p/447274945
- https://blog.csdn.net/weixin_45835339/article/details/123974591
某些公司会优化源代码,编译后使Hadoop更契合自己的业务
Hadoop集群角色规划
例如,公司给你1000台服务器,让你去搭建Hadoop集群和其他软件,怎样做一个合理规划?
例如某个软件的运行依赖于大内存,那就尽量去给它分配到大内存的服务器上
如果某两个软件的运行互相冲突,那就尽量给他们避开一点
提示
资源上有抢夺冲突的,尽量不要部署在一起
工作上需要相互配合的,尽量部署在一起
处理虚拟机
为了更happy的学习Hadoop,建议内存为 4G,硬盘为 50G
首先配置三台 Linux
虚拟机,分别为 testHadoop1
、testHadoop2
、testHadoop3
下载通用软件
安装一些Linux用的软件
# 额外软件包
yum install -y epel-release
# 最小安装的Linux系统需要安装如下软件
yum install -y net-tools
yum install -y vim
关闭防火墙
# 关闭防火墙
systemctl stop firewalld
# 禁用防火墙开机自启动
systemctl disable firewalld.service
企业开发时,通常情况下,服务器之间的防火墙是关闭的。公司会将整个服务器机组对外设置防火墙
修改虚拟机IP和Hostname
修改IP的话需要配置 /etc/sysconfig/network-scripts/ifcfg-ens33
、/etc/hostname
和 /etc/hosts
文件
/etc/sysconfig/network-scripts/ifcfg-ens33
:配置静态ip/etc/hostname
:配置当前主机名称/etc/hosts
:配置ip别名,将包括本机在内的所有Hadoop集群中服务器,都配置一下别名
安装及配置环境变量
在开始之前,选中其中一台机器,根据如下内容安装JDK和Hadoop。然后将内容分发到其他机器上
需要使用
tar.gz安装包
在/opt/module
目录下 安装JDK,并且配置好环境变量注意查看是否有系统自带的JDK
成功安装后再进行如下操作
注:明确解压缩路径是为了分发安装软件后的内容
解压Hadoop压缩包至 /opt/module
下,解压后的文件会自动组成一个文件夹
tar -zxvf hadoop安装包 -C /opt/module
配置环境变量
在 /etc/profile.d
中创建文件 hadoop_env.sh
文件
touch hadoop_env.sh
将如下内容放进去
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
使配置文件生效
source /etc/profile
查看Hadoop版本
hadoop version
查看Hadoop安装路径
which hadoop
Hadoop目录结构及介绍
bin
:Hadoop相关服务(hdfs
、yarn
、mapred
)的操作脚本存放在此目录下,但是通常使用的脚本在sbin目录下。etc
:Hadoop配置文件存放在此目录下,主要包含core-site.xml
、hdfs-site.xml
、mapred-site.xml
等从 Hadoop1.0 继承而来的配置文件和yarn-site.xml
等 Hadoop2.0 新增的配置文件。lib
:Hadoop对外提供的编程动态库和静态库存放在此目录下。sbin
:Hadoop管理脚本存放在此目录下,主要包含hadoop单机运行、HDFS和YARN中各类服务的启动/关闭脚本。src
:Hadoop的源码包存放在此目录下。share
:存放Hadoop的依赖 jar 包、文档、和官方案例
Hadoop配置文件及介绍
hadoop-env.sh
:配置Hadoop运行所需的环境变量yarn-env.sh
:配置Yarn运行所需的环境变量core-site.xml
:Hadoop核心全局配置文件,可在其他配置文件中引用该文件hdfs-site.xml
:HDFS配置文件,继承core-site.xml
配置文件mapred-site.xml
:MapReduce配置文件,继承core-site.xml
配置文件yarn-site.xml
:Yarn配置文件,继承core-site.xml
配置文件
运行模式
Hadoop运行模式包括:本地模式
、伪分布式模式
和 完全分布式模式
本地模式
:单机运行,只是用来演示一下官方案例。生产环境不用。伪分布式模式
:也是单机运行,但是具备Hadoop集群的所有功能,一台服务器模拟一个分布式的环境,生产环境不用。(个别缺钱的公司用来测试)完全分布式模式
:多台服务器组成分布式环境,生产环境使用
本地模式
使用官方的 WordCount
案例
进入到hadoop根目录下,在当前目录下创建文件夹 wcinput
在 ./wcinput
路径下,创建文件 word.txt
,写上如下内容
vim ./wcinput/word.txt
hadoop hadoop hadoop
java java java java
mahe666 mahe666
mahe233
然后输入命令
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount wcinput/ wcoutput/
提示
解析如下
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount
:运行官方示例中的jar包里的wordcountwcinput/
:输入路径(word.txt 文件所在路径)wcoutput/
:输出结果的地方,如果输出时存在该文件夹,则会报错
查看结果
cat ./wcoutput/part-r-00000
输出结果如下
hadoop 3
java 4
mahe233 1
mahe666 2
集群分发脚本
上面的做完,我们准备开始搭建完全分布式模式了
先不急着去给其他两个服务器安装软件
因为这里要用 分发脚本
来拷贝过去
scp(secure copy) 安全拷贝
定义:scp可以实现服务器与服务器之间的数据拷贝
基本语法:scp -r 本机文件夹路径 远程机用户@远程机IP:远程机文件夹路径
scp
:命令-r
:递归本机文件夹路径
:需要拷贝本地哪个路径下的哪个文件夹,写绝对路径指定远程机用户@远程机IP:远程机文件夹路径
:这里面的@
和:
符号不能省略。如果我需要将本机上的/opt/module
文件夹下的所有内容拷贝过去,那么远程文件夹路径就需要写/opt
(注意确保远程机有/opt
地址)
操作如下
# 可以这样写
scp -r /opt/module root@192.168.100.102:/opt
# 也可以这样写
scp -r /opt/module/* root@192.168.100.103:/opt/module
rsync 远程同步工具
相关博客:
- https://blog.csdn.net/zhangxueleishamo/article/details/80094875
- https://blog.csdn.net/Luckyyhr/article/details/116446239
定义:rsync
主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync 和 scp 区别:用 rsync
做文件的复制要比 scp
的速度快,rsync
只对差异文件做更新。scp
是把所有文件都复制过去
基本语法:rsync -av 本机文件夹路径 远程机用户@远程机IP:远程机文件夹路径
rsync
:命令-av
:选项参数。-a
代表归档拷贝,-v
代表显示复制过程
xsync 集群分发脚本
相关博客:https://blog.csdn.net/qq_43066945/article/details/119458718
配置环境变量
注意
同步之后不要忘记配置环境变量