云计算-Hadoop-2.7.7 最小化集群的搭建(3台)
上面我们虽然使用克隆的方式简化了对虚拟机的操作,但是,每个虚拟机都配置相同的的hadoop文件是不是过于麻烦了呢,答案是有的,所以我们这里采用shell,脚本的方式可以实现仅配置一台虚拟的的情况下对其它的2台虚拟机也同时进行配置。(下面进行的所有操作均可以在每台虚拟机独立执行,模板机仅为了方便后续配置。使用3台虚拟机进行集群的搭建,分别命名为hadoop101,hadoop102,hadoop10
云计算-Hadoop-2.7.7 最小化集群的搭建(3台)
文章目录
一、环境依赖下载
VMware16.2.4 https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html
Centos7.9 https://mirror.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/
Xshell7&Xftp7 https://www.xshell.com/zh/free-for-home-school/
hadoop-2.7.7 https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
hadoop 其它版本 https://archive.apache.org/dist/hadoop/common/
JDK 1.8 https://www.java.com/zh-CN/download/manual.jsp
FinalShell http://www.hostbuf.com/t/988.html (可选远程终端,对多端服务器同时发送命令)
二、部署概要
使用3台虚拟机进行集群的搭建,分别命名为hadoop101,hadoop102,hadoop103
节点 | HDFS主节点 | HDFS从节点 | HDFS辅助节点 | YARN主节点 | YARN从节点 |
---|---|---|---|---|---|
hadoop101 | NameNode | DataNode | ResourceManager | NodeManager | |
hadoop102 | DataNode | SecondaryNameNode | NodeManager | ||
hadoop103 | DataNode | NodeManager |
从表格中可以知道,我们以hadoop101为主节点,在其上部署NameNode和ResourceManager,在hadoop102上部署SecondaryNameNode作为HDFS辅助节点。
为了方便,3台虚拟机的hadoop均在 /root
路径下进行操作,即默认为 root用户登录
的目录
为了方便,3台虚拟机的hadoop均在 /root
路径下进行操作,即默认为 root用户登录
的目录
为了方便,3台虚拟机的hadoop均在 /root
路径下进行操作,即默认为 root用户登录
的目录
⭐远程连接推荐使用 FinalShell,一个终端搞定文件传输和命令操作 点我下载windows版本
我的3台虚拟机IP统一如下:
名称 | IPv4地址 |
---|---|
hadoop103 | 192.168.242.201 |
hadoop102 | 192.168.242.202 |
hadoop103 | 192.168.242.203 |
三、hadoop101模板机配置
这里我们将hadoop101作为模板机,hadoop102和hadoop103均从其进行克隆比较方便,当然你也可以三台分别进行配置。(下面进行的所有操作均可以在每台虚拟机独立执行,模板机仅为了方便后续配置。)
1. 更新 & 升级
可能会比较慢,可以先配置阿里云的镜像源, 配置方法见 👉 CentOS7设置阿里源
chmod 777 ./* # 提升用户目录权限
yum update -y && yum upgrade -y
如需删除多余内核(默认可跳过该步骤,不影响后续执行)
reboot # 重启
yum remove $(rpm -qa | grep kernel | grep -v $(uname -r)) -y # 删除多余的内核
2. 安装好用的vim VimForCpp
cd #然后回车
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
#安装完成后如不可使用执行下面命令或者重启终端
source ~/.bashrc
#如需卸载
bash ~/.VimForCpp/uninstall.sh
3. 安装必要依赖
yum install openssh-server -y # ssh服务
yum install net-tools.x86_64 -y # ifconfig服务
yum install java-1.8.0-openjdk-devel.x86_64 -y # jps服务
yum install xorg-x11-xauth -y # 解决xshell连接警告
4. 关闭防火墙
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 禁止防火墙开机启动
firewall-cmd --state # 查看防火墙状态
5. SSH 配置
小提示:下面开始会进行一些文件操作,如果安装了图形化界面的版本,可以使用gedit
文件编辑工具替换vim
编辑器,即下面使用vim打开的地方都可以用gedit替换vim.当然,命令行操作才是Linux的灵魂所在
如果你的xshell等软件能连接上虚拟机,那么说明你的ssh是正常的,不需要进行额外的配置了,也就是说可以忽略这一步,否则可以参考如下进行简单配置:
# 1.查看是否安装ssh
yum list installed | grep openssh-server
# 或者
rpm -qa | grep ssh
# 2.安装ssh(未安装情况)
yum install openssh-server
# 3.编辑ssh配置文件,你的文件名有可能是ssh_config
vim /etc/ssh/sshd_config
# 一般来说只要关闭了防火墙不用配置这步,否则如下设置
Port 22 # 打开22监听端口
ListenAddress 0.0.0.0 # 开发监听所有地址
ListenAddress ::
PermitEmptyPasswords no #开启root用户登录
PasswordAuthentication yes #开启密码登录
# wq 保存退出
# 4.启动ssh服务及查看(查看方式等价)
service sshd start # 启动ssh服务
ps -e | grep sshd # 查看ssh是否开启
netstat -an | grep 22 # 查看端口状态
systemctl status sshd.service # 查看服务运行状态
# 5.设置开机自启动
systemctl enable sshd.service
systemctl list-unit-files | grep sshd # 查看开机自启列表是否加入成功
6. 设置ntp时间同步服务
yum install ntp ntpdate -y
ntpdate -u 210.72.145.44 # -u参数可以越过防火墙与主机同步 中国国家授时中心
date # 查看当前时间,不对的话稍后reboot重启虚拟机就行了
7. 安装JDK和Hadoop
先把jdk和hadoop的源码压缩包下载到本地在传到虚拟机
# 从命令行下载hadoop-2.7.7可使用以下命令
# wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
# scp上传可以参考以下命令
scp "./hadoop-2.7.7.tar.gz" "./jre-8u341-linux-x64.tar.gz" root@192.168.242.132:/root/
当你的两个文件都已经存在虚拟机中再执行下面的操作
# 1.===解压到当前文件夹 /root下面===
tar -zxvf hadoop-2.7.7.tar.gz
tar -zxvf jre-8u341-linux-x64.tar.gz
mv jre1.8.0_341 jdk1.8 # 重命名为jdk1.8方便下面配置
rm hadoop-2.7.7.tar.gz jre-8u341-linux-x64.tar.gz # 删除多余的文件,按两次y
# 2.===配置环境变量===
vim /etc/profile #用vim编辑器打开配置文件
# 3.在末尾添加以下内容
#HADOOP
export HADOOP_HOME=/root/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# java
export JAVA_HOME=/root/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
export CLASS_PATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export JRE_HOME=$JAVA_HOME/jre
# :wq 保存退出
# 4.===刷新环境变量===
source /etc/profile
# 5.查看java是否安装成功
java -version
# 6.查看hadoop是否安装成功
hadoop version
配置成功如下图所示:
8. 模板网络配置
1.查看VMware网络配置
2.打开网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
如果这里打开是空白的,那么可能你的网卡配置文件名称和我的不一样,可以先使用以下命令进行查看,一般来说第一个就是你的网卡名称:
cd /etc/sysconfig/network-scripts
ls
3.添加或修改以下内容
# 修改
BOOTPROTO="static" #设为静态IP
ONBOOT="yes" #设置开机自启动
# 添加
IPADDR="192.168.242.201" #子网IP,注意你的和我的不相同,后面3位自定义
GATEWAY="192.168.242.2" #默认网关,一定和vmware的网关ip一样
NETMASK="255.255.255.0" #子网掩码,看第一步
DNS1="114.114.114.114" #腾讯114
DNS2="1.2.4.8" #中国互联网络中心
DNS3="8.8.8.8" #Google
示例如下:
4.重启刷新
service network restart #重启网卡
systemctl restart network # 重启网络服务
注意:重启网卡后ip地址是你新设置的ip地址,远程终端需要重新进行连接.
9. 配置映射关系
vim /etc/hosts #打开配置文件
删除原有内容后添加以下内容
192.168.242.201 hadoop101
192.168.242.202 hadoop102
192.168.242.203 hadoop103
# wq保存退出
/etc/init.d/network restart # 刷新使其生效
10. 配置集群核心文件
以下我们采取最简化配置,关于详细配置说明,欢迎查看官方文档 : https://hadoop.apache.org/docs/r2.7.7/
先切换到配置文件目录:
mkdir -p ~/hadoop-2.7.7/tmp # 创建hadoop临时目录
cd ~/hadoop-2.7.7/etc/hadoop
ls
hadoop-env.sh (Hadoop环境配置)
vim hadoop-env.sh
# 在第25行更改为以下内容
export JAVA_HOME=/root/jdk1.8
# :wq保存退出
core-site.xml (Hadoop核心全局配置文件)
vim core-site.xml # 打开文件后在<configuration></configuration>插入以下内容
<configuration>
<!-- 设置默认使用的文件系统的名称
指定HDFS集群中NameNode的url地址(包括协议、主机名称、端口号) 默认为 file:/// -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<!-- 其他临时目录的基础。 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop-2.7.7/tmp</value>
</property>
</configuration>
hdfs-site.xml (hdfs配置文件)
vim hdfs-site.xml # 打开文件后在<configuration></configuration>插入以下内容
<configuration>
<!-- 配置主节点http服务器地址和端口 -->
<property>
<name>dfs.http.address</name>
<value>hadoop101:50070</value>
</property>
<!-- 配置辅助节点http服务器地址和端口 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop102:50090</value>
</property>
</configuration>
yarn-env.sh (YARN环境配置)
vim yarn-env.sh
# 在第23行去掉注释并更改为以下内容
export JAVA_HOME=/root/jdk1.8
# :wq保存退出
yarn-site.xml (YARN 框架配置文件)
vim yarn-site.xml # 打开文件后在<configuration></configuration>插入以下内容
<configuration>
<!-- 配置ResourceManager在哪个机器启动 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop101</value>
</property>
<!-- NodeManager上运行的附属服务,也可以理解为 reduce 获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
mapred-site.xml(MapReduce配置文件)
cp mapred-site.xml.template map-site.xml # 先copy模板生成文件
vim map-site.xml # 打开文件后在<configuration></configuration>插入以下内容
<configuration>
<!-- 用于执行MapReduce作业的运行时框架 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
slaves (DateNode进程节点)
vim slaves # 打开文件后在slaves中添加DateNode节点
hadoop101
hadoop102
hadoop103
至此我们的模板机已经配置好了,下面
-克隆模板机得到节点hadoop101和hadoop102
安装如下步骤操作:
选择你的储存位置,等克隆好之后开机就行了…
下面进行各台虚拟机的ip地址和名称配置,这里先别着急用远程工具,现在虚拟机里面之间操作
四、hadoop101私有配置
1. 主机名设置
hostnamectl set-hostname hadoop101 # 修改主机名
exec bash # 使其生效
2. IP设置
这里和模板机配置一样,无需进行更改
五、hadoop102配置
1. 主机名设置
hostnamectl set-hostname hadoop102 # 修改主机名
exec bash # 使其生效
2. IP设置
打开配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
更改以下内容(ip自己设置)
IPADDR="192.168.242.202" #子网IP
重启刷新
service network restart # 重启网卡
systemctl restart network # 重启网络服务
六、hadoop103配置
1. 主机名设置
hostnamectl set-hostname hadoop103 # 修改主机名
exec bash # 使其生效
2. IP设置
打开配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
更改以下内容(ip自己设置)
IPADDR="192.168.242.203" # 子网IP
重启刷新
service network restart #重启网卡
systemctl restart network # 重启网络服务
-配置ssh免密登录
上述配置完成之后开启3台虚拟机,并在每台虚拟机上都执行以下操作
# 产生公钥和私钥:
ssh-keygen -t rsa # (回车四次)
# 分发公钥
ssh-copy-id hadoop101
ssh-copy-id hadoop102
ssh-copy-id hadoop103
# 按照提示输入yes和密码
# 赋予文件权限 (不然可能无法使用免密登录)
chmod 700 ~
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
完成上述配置就实现了3台虚拟机之间的ssh网络互联
ssh-keygen -t rsa
生成密钥时大概内容如下图所示: id_rsa(私钥)、id_rsa.pub(公钥)
此处详细内容可参考 SSH设置无密码连接
配置好之后可以使用 ssh hadoop101
进行测试,如果不需要输入密码则说明免密登录配置成功,否则参考 解决Linux root用户设置ssh免密登陆后仍然需要输入密码的问题
七、启动集群
集群初始化
在hadoop101执行,仅开始运行一次,后面无须在执行(不要总格式化)
hdfs namenode -format
方式一: 主节点一键启动集群 (推荐)
start-all.sh # 目前经测试推荐使用该方法,根据提示输入yes或密码
启动成功如下:
到此集群搭建完成!!!
一键关闭
start-stop.sh
方式二: 单节点启动/关闭
每个节点执行
# 启动
start-dfs.sh
start-yarn.sh
# 关闭
stop-dfs.sh
stop-yarn.sh
如某个模块未启动成功可采用下面的方法单独启动
# ~/hadoop-2.7.7 hadoop根目录
#1.在主节点上执行指令启动/关闭HDFS NameNode进程;
hadoop-daemon.sh start namenode # 启动
hadoop-daemon.sh stop namenode # 关闭
#2.在每个从节点上执行指令启动/关闭HDFS DataNode进程;
hadoop-daemon.sh start datanode # 启动
hadoop-daemon.sh stop datanode # 关闭
#3.在主节点上执行指令启动/关闭YARN ResourceManager进程;
hadoop-daemon.sh start resourcemanager # 启动
hadoop-daemon.sh stop resourcemanager # 关闭
#4.在每个从节点上执行指令启动/关闭YARN nodemanager进程;
hadoop-daemon.sh start nodemanager # 启动
hadoop-daemon.sh stop nodemanager # 关闭
#5.在节点hadoop102执行指令启动/关闭SecondaryNameNode进程
hadoop-daemon.sh start secondarynamenode # 启动
hadoop-daemon.sh stop secondarynamenode # 关闭
hadoop集群逐节点 一键启动/关闭脚本 (在主节点运行即可)
#!/bin/bash
if [ $# -lt 1 ]
then
echo ">>>>>>无额外参数输入<<<<<<"
echo "USE eg: 'sh myhadoop.sh satrt/stop' "
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop101 "/root/hadoop-2.7.7/sbin/start-dfs.sh"
ssh hadoop102 "/root/hadoop-2.7.7/sbin/start-dfs.sh"
ssh hadoop103 "/root/hadoop-2.7.7/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop101 "/root/hadoop-2.7.7/sbin/start-yarn.sh"
ssh hadoop102 "/root/hadoop-2.7.7/sbin/start-yarn.sh"
ssh hadoop103 "/root/hadoop-2.7.7/sbin/start-yarn.sh"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 yarn ---------------"
ssh hadoop101 "/root/hadoop-2.7.7/sbin/stop-yarn.sh"
ssh hadoop102 "/root/hadoop-2.7.7/sbin/stop-yarn.sh"
ssh hadoop103 "/root/hadoop-2.7.7/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop101 "/root/hadoop-2.7.7/sbin/stop-dfs.sh"
ssh hadoop102 "/root/hadoop-2.7.7/sbin/stop-dfs.sh"
ssh hadoop103 "/root/hadoop-2.7.7/sbin/stop-dfs.sh"
;;
*)
echo "!!!输入的参数有误!!!"
;;
esac
echo "执行指令 jps "
jps
exit
通过自带的列子检测是否启动成功
~/hadoop-2.7.7/bin/hadoop jar ~/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 1 2
浏览器打开相关网页如下:
http://192.168.242.201:50070/
http://192.168.242.201:8088/
集群搭建到这里就成功了…
八、补充:使用Shell脚本进行快速配置
上面我们虽然使用克隆的方式简化了对虚拟机的操作,但是,每个虚拟机都配置相同的的hadoop文件是不是过于麻烦了呢,答案是有的,所以我们这里采用shell,脚本的方式可以实现仅配置一台虚拟的的情况下对其它的2台虚拟机也同时进行配置。
前提:3台虚拟机已经配置了网络互访,即ssh免密连接。
下面是参考的shell脚本:
有空更新....
九、java连接集群进行操作
见后续blog文章...
更多推荐
所有评论(0)