Hadoop3.x安装配置(集群)

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.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xmlworkers

注意修改的文件,格式要检查,另存为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

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值