《Hadoop入门之"集群搭建"》
1、VMware下载
- 官方:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
-
下载到桌面,打开安装即可
-
VMware永久注册码:
vmware10永久激活密钥
------------------------------------------
MA491-6NL5Q-AZAM0-ZH0N2-AAJ5A
5A6F6-88247-XZH59-HL0Q6-8CD2V
HF6QX-20187-2Z391-522NH-9AELT
5F29M-48312-8ZDF9-A8A5K-2AM0Z
VMware 12 Pro 永久许可证激活密钥
------------------------------------------
5A02H-AU243-TZJ49-GTC7K-3C61N
VF5XA-FNDDJ-085GZ-4NXZ9-N20E6
UC5MR-8NE16-H81WY-R7QGV-QG2D8
ZG1WH-ATY96-H80QP-X7PEX-Y30V4
AA3E0-0VDE1-0893Z-KGZ59-QGAVF
VMware Workstation Pro 15 激活许可证
------------------------------------------
UY758-0RXEQ-M81WP-8ZM7Z-Y3HDA
VF750-4MX5Q-488DQ-9WZE9-ZY2D6
UU54R-FVD91-488PP-7NNGC-ZFAX6
YC74H-FGF92-081VZ-R5QNG-P6RY4
YC34H-6WWDK-085MQ-JYPNX-NZRA2
VMware Workstation Pro 16 激活许可证
------------------------------------------
ZF3R0-FHED2-M80TY-8QYGC-NPKYF
YF390-0HF8P-M81RQ-2DXQE-M2UT6
ZF71R-DMX85-08DQY-8YMNC-PPHV8
2、Linux镜像文件下载
- 镜像下载地址:https://mirrors.aliyun.com/centos/7/isos/x86_64/?spm=a2c6h.25603864.0.0.1acc4511OXJ0aO
3、VMware安装Linux
-
安装参考地址:
https://blog.csdn.net/weixin_52799373/article/details/124324077?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166149693716780366587745%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166149693716780366587745&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-124324077-null-null.142^v42^pc_ran_alice,185^v2^control&utm_term=VMware%E5%AE%89%E8%A3%85linux&spm=1018.2226.3001.4187
4、虚拟机模板
4.1、ip配置
虚拟机外部
虚拟机内部
vim /etc/sysconfig/network-scripts/ifcfg-ens33
添加:
IPADDR=192.168.20.128
GATEWAY=192.168.20.2
DNS1=192.168.20.2
4.2、修改主机名
vim /etc/hostname
4.3、添加主机映射
vim /etc/hosts
添加:
192.168.20.128 LuckySix-master
192.168.20.129 LuckySix-slave1
192.168.20.130 LuckySix-slave2
Windows修改主机映射文件:
- 进入 C:\Windows\System32\drivers\etc 路径
添加:
192.168.20.128 LuckySix-master
192.168.20.129 LuckySix-slave1
192.168.20.130 LuckySix-slave2
4.4、JDK、Hadoop环境
JDK镜像下载地址:https://repo.huaweicloud.com/java/jdk/11.0.1+13/
Hadoop镜像下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/
- Xshell、xftp学生版:https://www.xshell.com/zh/free-for-home-school/
-
有了JDK、Hadoop,开始上传Linux.
-
xshell连接===>LuckySix-master
-
点进去上传
-
上传完成
-
解压JDK、Hadoop
解压命令:
tar -zxvf jdk-11.0.2_linux-x64_bin.tar.gz
tar -zxvf hadoop-3.3.4.tar.gz
- 解压完成
- 配置JDK、Hadoop环境
vim /etc/profile
文件末尾添加:
#JAVA_HOME
export JAVA_HOME=/opt/hadoop3/jdk-11.0.2
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/hadoop3/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
添加完成,输入以下命令、重新加载配置文件.
source /etc/profile
- 配置完成看效果
java -version
hadoop version
4.5、安装 epel-release
注:Extra Packages for Enterprise Linux 是为“红帽系”的操作系统提供额外的软件包,适用于 RHEL、CentOS 和 Scientific Linux。(相当于是一个软件仓库,大多数 rpm 包在官方 repository 中是找不到的)
yum install -y epel-release
4.6、永久关闭Linux防火墙
查看防火墙状态:
systemctl status firewalld
关闭防火墙:
systemctl stop firewalld
永久关闭防火墙(重启后扔处于关闭状态):
systemctl disable firewalld.service
5、搭建"一主双从"(集群搭建)
- LuckySix-master
- LuckySix-slave1
- LuckySix-slave2
-
完整克隆(链接克隆应该也可以)
- 从机名字
-
克隆完毕
-
修改从机LuckySix-slave1、LuckySix-slave2的ip、主机名
#修改ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#修改主机名
vim /etc/hostname
修改完成重启看效果====>重启命令:reboot
6、集群分发脚本 xsync
-
在LuckySix-master的bin目录下,创建xsync脚本文件
-
添加以下内容:
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in LuckySix-master LuckySix-slave1 LuckySix-slave2
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
- 授权xsync脚本文件
6.1、xsync脚本有啥用?
小案例:
LuckySix-master主机~目录下,创建demo.txt
demo.txt
再通过xsync脚本,分发demo.txt文件到LuckySix-slave1 LuckySix-slave2
- 查看两台从机上有没有该文件
7、SSH 无密登录配置
注:三台主机,全部都要配置.这里先拿第一台:LuckySix-master做案例
- .ssh 文件夹下(~/.ssh)的文件功能解释
来到ssh目录
cd /root/.ssh
生成rsa秘钥
ssh-keygen -t rsa (输入命令后三次回车即可)
-
成功生成rsa秘钥对
-
将公钥拷贝到要免密登录的目标机器上,也就是集群种的所有机器
执行以下三条命令:
ssh-copy-id LuckySix-master
ssh-copy-id LuckySix-slave1
ssh-copy-id LuckySix-slave2
- 还要再另外两台机器重复执行以上所有操作!!!!!!!!
- 操作完毕后,每一台机器上查看都是这个效果、表明免密配置成功!!!!!
8、集群配置
- LuckySix-master做案例!!!!所有操作都在LuckySix-master主机上,待会再同步到另外两台从机.
回顾Hadoop三大核心:
- HDFS(分布式文件存储系统)
- YARN(资源管理器)
- MapReduce(分布式计算程序/框架)
一、HDFS组成部分
1. Client客户端
2. NameNode主节点
3. SecondaryNameNode 理解为:(NameNode 的备份,属于冷备份)
二、YARN组成部分
ResourceManager、ApplicationMaster、nodeManager、container组成
三、MapReduce组成部分
略…(进阶再学)
- 集群部署规划
LuckySix-master | LuckySix-slave1 | LuckySix-slave2 | |
---|---|---|---|
HDFS | NameNode、DataNode | DataNode | SecondaryNameNode、DataNode |
YARN | NodeManager | ResourceManager、NodeManager | NodeManager |
- 修改五个核心配置文件
- core-site.xml
- hdfs-site.xml
- yarn-site.xml
- mapred-site.xml
- worckers
切换到hadoop的子目录下(配置文件在这里)
cd /opt/hadoop3/hadoop-3.3.4/etc/hadoop
8.1、core-site.xml配置文件
vim core-site.xml
- 在标签中添加如下配置
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://LuckySix-master:8020</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop3/hadoop-3.3.4/data</value>
</property>
8.2、hdfs-site.xml配置文件
vim hdfs-site.xml
- 在标签中添加如下配置
<!-- NameNode web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>LuckySix-master:9870</value>
</property>
<!-- SecondaryNameNode web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>LuckySix-slave2:9868</value>
</property>
8.3、yarn-site.xml配置文件
vim yarn-site.xml
- 在标签中添加如下配置
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>LuckySix-slave1</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
8.4、mapred-site.xml配置文件
vim mapred-site.xml
- 在标签中添加如下配置
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
8.5、worckers配置文件
vim worckers
文件中添加:
LuckySix-master
LuckySix-slave1
LuckySix-slave2
8.6、同步所有节点配置文件
解释:将主机的5个配置文件,同步到两台从机、避免了重复配置。
xsync hadoop/
8.7、所有主机拍摄"快照"
解释:拍快照是为了防止后面出错,又得重新来一遍所有操作。快照可以恢复当前状态.
9、集群部署
(1)如果集群是第一次启动,需要在主机 (LuckySix-master)节点格式化 NameNode.
hdfs namenode -format
- 看到上面这张图,说明hdfs初始化成功.
(LuckySix-master)主机启动hdfs:
sbin/start-dfs.sh
第一台从机(LuckySix-slave1)启动yarn:
sbin/start-yarn.sh
跟上面部署计划一致,则说明集群部署成功!!!!!!
访问hdfs可视化界面===>http://luckysix-master:9870/
访问yarn可视化界面===>http://luckysix-slave1:8088/
看到以上两个画面,说明!!!!!!!!
你完成了Hadoop入门的"集群部署"!!!
你完成了Hadoop入门的"集群部署"!!!
你完成了Hadoop入门的"集群部署"!!!
你完成了Hadoop入门的"集群部署"!!!
你完成了Hadoop入门的"集群部署"!!!
9.1、报错解决
①安装运行Hadoop出现:ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
②启动hadoop:JAVA_HOME is not set and could not be found.
(解决这个问题时,把export JAVA_HOME=放在文件末尾)
10、实战案例
- 文件上传到hdfs
[root@LuckySix-slave1 hadoop-3.3.4]# hadoop fs -mkdir /input
#创建Hello.txt文本
[root@LuckySix-slave1 hadoop-3.3.4]# vim Hello.txt
#上传
[root@LuckySix-slave1 hadoop-3.3.4]# hadoop fs -put Hello.txt /input
- 可以尝试删除集群中某台主机,测试集群的高可用性
2022/8/26 Making in LuckySix
有疑问,留言呀!!!知无不言