Hadoop3.x安装配置(集群)
一、虚拟机环境准备
(1)hadoop-01网段更改为7
编辑- 虚拟网络编辑器
(2)准备三台虚拟机
准备三台虚拟机:hadoop-01、hadoop-02、hadoop-03
对已安装的Hadoop-01虚拟机进行克隆第二台,第三台
右键- 管理- 克隆- 虚拟机中的当前状态- 完整克隆- 修改名称为Hadoop-02和存储位置- 完成
(3)修改三台虚拟机静态IP
#修改主机名
vi /etc/hostname
#修改网络端口
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#网络端口添加修改如下
BOOTPROTO="static"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.7.101
GATEWAY=192.168.7.2
DNS1=192.168.7.2
#重启网络服务
systemctl restart NetworkManager
#启动或重新激活名为ens33的网络连接
nmcli con up ens33
(4)使用MobaXterm连接
1.输入ip地址连接
2.hosts映射连接
如果要用hadoop01进行链接需要修改Windows系统etc文件夹下的hosts映射
C:\Windows\System32\drivers\etc
(5)三台虚拟机配置
MobaXterm的MultiExec可多窗口同时执行相同命令
#配置主机名称映射,打开/etc/hosts
vi /etc/hosts
#添加如下内容
192.168.7.101 hadoop01
192.168.7.102 hadoop02
192.168.7.103 hadoop03
#关闭并禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
#在/opt目录下创建module(放压缩包)、software(放解压文件)文件夹
mkdir /opt/module /opt/software
(6)编写集群分发脚本
三台虚拟机都要安装rsync,xsync是基于rsync封装的脚本
#把centos的源换成阿里云的
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#清理缓存
yum clean all
#安装rsync
sudo yum install rsync
#编辑自定义文件xsync
vi /home/xsync
xsync文件内容
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in hadoop01 hadoop02 hadoop03
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具有执行权限
#修改脚本xsync具有执行权限
cd /home/xsync
chmod 777 xsync
#测试脚本,bash xsync 后面接要分发的文件,这里是把她自己分发出去
cd /home
bash xsync xsync
(7) SSH免密登录
//三台虚拟机同时执行下面命令
ssh-keygen -t rsa //执行此命令,连续点三下回车生成SSH密匙对
ssh-copy-id hadoop01 //把密匙对分发给本机,让本机可以免密登录
ssh-copy-id hadoop02 //把密匙对分发给hadoop02,让本机可以免密登录hadoop02
ssh-copy-id hadoop03 //把密匙对分发给hadoop03,让本机可以免密登录hadoop03
二、jdk安装配置
Hadoop是一个基于Java开发的软件框架,它的核心部分是由Java编写的,用于在分布式计算环境中进行数据处理和存储。因此,为了编译和运行Hadoop程序,必须安装JDK。
0.检查Linux是否自带jdk
sudo rpm -qa | grep java //查询rpm是否有java包,有的话要删除,否则会冲突
-qa 打印出所有的rpm安装包
| grep 过滤Java
1.下载并解压JDK
oracle.com官网下载jdk:
https://www.oracle.com/java/technologies/downloads/#java8-linux
//上传,通过MobaXterm软件上传jdk安装包放到已创建目录software
cd /opt/software //切换目录
//解压,jdk压缩包修改成自己下载的
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
-zxvf 输出解压的详细信息
-C 后面接解压的位置
2.设置环境变量
//非登录shell ssh和登录的shell所加载的环境变量是不一样的,profile.d是两个都有的
cd /etc/profile.d/ //切换目录到profile.d
vi my_env.sh //创建并修改文件
//#复制粘贴下面Java_HOME内容,记得改成自己的jdk解压名称
#Java_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
#xsync
export PATH=$PATH:/home
source ./my_env.sh //立即生效
java -version //如果正确配置了环境变量,这个命令将显示安装的Java版本信息。
3.分发jdk
#分发jdk
bash xsync /opt/module/jdk1.8.0_212
#分发环境变量文件
xsync /etc/profile.d/my_env.sh
#三台机器source一下,不然没反应
source /etc/profile.d/my_env.sh
4. 集群所有进程查看脚本
//切换到bin目录全局调用
cd bin
vi xcall.sh
//在脚本中编写如下内容
#! /bin/bash
for i in hadoop01 hadoop02 hadoop03
do
echo --------- $i ----------
ssh $i "$*"
done
//修改脚本执行权限
chmod 777 xcall.sh
//启动脚本
xcall.sh jps
三、Hadoop3.x安装配置
1.下载并解压Hadoop
//上传,通过MobaXterm软件上传hadoop安装包放到已创建目录software
cd /opt/software //切换目录
//解压,hadoop压缩包修改成自己下载的
tar -zxvf hadoop-3.3.4.tar.gz -C /opt/module/
-zxvf 输出解压的详细信息
-C 后面接解压的位置
//安装完成版本确定,改个名字,改不改都行
cd /opt/module
mv hadoop-3.3.4/ hadoop
2.设置环境变量
编辑你的.bashrc
或.bash_profile
文件,添加以下内容:
vi /etc/profile.d/my_env.sh //创建并修改文件
//#复制粘贴Java_HOME内容
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
//分发环境变量文件
xsync /etc/profile.d/my_env.sh
#三台机器source一下,不然没反应
source /etc/profile.d/my_env.sh
3.编辑5个配置文件
core-site.xml
,hdfs-site.xml
,mapred-site.xml
,yarn-site.xml
,workers
注意修改的文件,格式要检查,另存为utf-8格式,否则格式化namenode会报错
cd /opt/module/hadoop/etc/hadoop //4个文件位置
xsync /opt/module/hadoop/etc/hadoop
(0.hadoop-env.sh
注意以下内容最好不要出现有空行空格
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
#改成你自己的JAVA_HOME地址
export JAVA_HOME=/opt/module/jdk1.8.0_212
(1.核心配置文件
core-site.xml,将下面内容粘贴到<configuration></configuration>标签内
<!-- 指定NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:8020</value>
</property>
<!-- 设置Hadoop本地保存数据路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/data/hadoop</value>
</property>
<!-- 设置HDFS web UI用户身份 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
<!-- 整合hive 用户代理设置 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
<!-- 文件系统垃圾桶保存时间 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
(2.HDFS配置文件
hdfs-site.xml
<!-- nn web端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop01:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop03:9868</value>
</property>
<!-- 测试环境指定HDFS副本的数量1 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
(3.YARN配置文件
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>hadoop02</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!--yarn单个容器允许分配的最大最小内存 -->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<!-- yarn容器允许管理的物理内存大小 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop01:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
(4.MapReduce配置文件
mapred-site.xml
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
(5.workers配置文件
workers
vi /opt/module/hadoop/etc/hadoop/workers
#内容如下,里面不能有空行,空格
hadoop01
hadoop02
hadoop03
3. 配置完成分发hadoop
xsync /opt/module/hadoop
4.格式化HDFS
在hadoop01执行下面命令(只第一次安装的时候初始化)
hdfs namenode -format
5.启动查看
hadoop01启动hdfs
#启动hdfs
start-dfs.sh
#网页查看输入
hadoop01:9870
hadoop02启动yarn
#启动yarn
start-yarn.sh
#网页查看输入
hadoop02:8088
启动脚本编写
//切换到bin目录全局调用
cd /bin
vi hdp.sh
//在脚本中编写如下内容
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop01 "/opt/module/hadoop/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop02 "/opt/module/hadoop/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop01 "/opt/module/hadoop/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh hadoop01 "/opt/module/hadoop/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop02 "/opt/module/hadoop/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop01 "/opt/module/hadoop/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac
//修改脚本执行权限
chmod 777 hdp.sh
//启动脚本
hdp.sh start