【大数据数仓项目集群配置 二】

本文用于记录我的第一次内网大数据集群配置过程。
本篇主要实现JDK安装、Hadoop集群配置。
配置使用的软件版本和脚本参考自尚硅谷,链接如下:
链接: https://www.bilibili.com/video/BV1rL411E7uz?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click


传输工具

使用xshelll进行远程连接,使用xftp进行数据传输。
官网链接:
https://www.xshell.com/zh/xshell/
https://www.xshell.com/zh/xftp/

集群进程查看脚本

命名为jpsall,保存在/home/hadoop/bin。

[hadoop@hadoop1 ~]$ cd /home/hadoop/bin
[hadoop@hadoop1 bin]$ vim jpsall

脚本内容如下:

#!/bin/bash

for host in hadoop1 xcmg3 xcmg4
do
        echo =============== $host ===============
        ssh $host jps 
done

保存后,修改脚本执行权限,并分发到集群内所有服务器。

[hadoop@hadoop1 bin]$ chmod +x jpsall
[hadoop@hadoop1 ~]$ xsync /home/hadoop/bin/

一、JDK安装

(1)使用xshell和xftp将JDK软件包导入到 /opt/software/jdk
(2)解压文件到 /opt/module

[hadoop@hadoop1 jdk]tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

(3)配置JDK环境变量
3.1 新建/etc/profile.d/my_env.sh文件

[hadoop@hadoop1 ~]$ sudo vim /etc/profile.d/my_env.sh

添加如下内容

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

3.2 重置环境变量

[hadoop@hadoop1 ~]$ source /etc/profile

3.3 测试是否安装成功

[hadoop@hadoop1 ~]$ java -version
#如果能看到以下结果,则代表Java安装成功。
java version "1.8.0_212"

如果没有显示上述代码,就重启服务器。


二、Hadoop集群搭建

1.文件解压安装

hadoop压缩包为 hadoop-3.1.3.tar.gz
将压缩包传输到 /opt/software/ 中。
(1)解压文件

[hadoop@hadoop1 ~]$ cd /opt/software/
[hadoop@hadoop1 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

(2)添加环境变量
获取hadoop安装路径

[hadoop@hadoop1 hadoop-3.1.3]$ pwd
/opt/module/hadoop-3.1.3

修改/etc/profille.d/myenv.sh

[hadoop@hadoop1 hadoop-3.1.3]$ sudo vim /etc/profile.d/my_env.sh

在my_env.sh文件末尾添加如下内容

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

重置环境变量

[hadoop@hadoop1 hadoop-3.1.3]$ source /etc/profile

测试是否安装成功

[hadoop@hadoop1 hadoop-3.1.3]$ hadoop version
Hadoop 3.1.3

2.配置hadoop集群

2.1 集群部署规划

NameNode和SecondaryNameNode不要安装在同一台服务器。
ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

hadoop1hadoop2hadoop3
HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNode
YARNNodeManagerResourceManager、NodeManagerNodeManager

2.2 配置集群文件

对core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml这四个配置文件进行修改。
文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。

2.2.1 配置core-site.xml
[hadoop@hadoop1 ~]$ cd $HADOOP_HOME/etc/hadoop
[hadoop@hadoop1 hadoop]$ vim core-site.xml

文件内容如下

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:8020</value>
    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为hadoop -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>hadoop</value>
    </property>
</configuration>

2.2.2 配置hdfs-site.xml
[hadoop@hadoop1 hadoop]$ vim hdfs-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop1:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop3:9868</value>
    </property>
</configuration>
2.2.3 配置yarn-site.xml
[hadoop@hadoop1 hadoop]$ vim yarn-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop2</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>
</configuration>
2.2.4 配置mapred-site.xml
[hadoop@hadoop1 hadoop]$ vim mapred-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
2.2.5 分发配置文件

分发配置文件到集群内所有客户机

[hadoop@hadoop1 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/
#在另外两台服务器上查看分发情况
[hadoop@hadoop2 ~]$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
[hadoop@hadoop3 ~]$ cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml

2.3 群起集群

2.3.1 配置workers文件
[hadoop@hadoop1 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

在该文件中增加如下内容

hadoop1
hadoop2
hadoop3

文件结尾不能出现空行,否则会出现错误。
同步所有节点配置文件

[hadoop@hadoop1 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc
2.3.2 格式化Namenode
如果集群是第一次启动,需要在hadoop1节点(主节点)格式化namenode。

格式化namenode,会产生新的集群id,导致namenode和datanode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。

[hadoop@hadoop1 hadoop-3.1.3]$ hdfs namenode -format
2.3.3 启动集群

启动HDFS,web端口号9870

[hadoop@hadoop1 hadoop-3.1.3]$ sbin/start-dfs.sh

启动yarn,web端口号8088
启动yarn的节点是配置了resourcemanager的节点。

[hadoop@hadoop2 hadoop-3.1.3]$ sbin/start-yarn.sh

2.4 配置历史服务器

2.4.1 配置mapred-site.xml
[hadoop@hadoop1 hadoop]$ vim mapred-site.xml

在该文件里面增加如下配置。

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop1:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address
</name>
    <value>hadoop1:19888</value>
</property>
2.4.2 分发配置到集群
[hadoop@hadoop1 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
2.4.3 启动历史服务器
[hadoop@hadoop1 hadoop]$ mapred --daemon start historyserver
[hadoop@hadoop1 hadoop]$ jps

web端口
http://hadoop1:19888/jobhistory

2.5 配置日志聚集

2.5.1 日志聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。

2.5.2 配置yarn-site.xml
[hadoop@hadoop1 hadoop]$ vim yarn-site.xml

在该文件里面增加如下配置。

<!-- 开启日志聚集功能 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://hadoop1:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
2.5.3 分发配置
[hadoop@hadoop1 hadoop]$ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml

之后重启NodeManager 、ResourceManager和HistoryServer

[hadoop@hadoop2 hadoop-3.1.3]$ sbin/stop-yarn.sh
[hadoop@hadoop2 hadoop-3.1.3]$ mapred --daemon stop historyserver
[hadoop@hadoop2 ~]$ start-yarn.sh
[hadoop@hadoop1 ~]$ mapred --daemon start historyserver

2.6 集群启停脚本

脚本命名为myhadoop.sh,保存在/home/hadoop/bin

[hadoop@hadoop1 ~]$ cd /home/hadoop/bin
[hadoop@hadoop1 bin]$ vim myhadoop.sh

脚本内容如下

#!/bin/bash

if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi

case $1 in
"start")
        echo " =================== 启动 hadoop集群 ==================="

        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop1 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop2 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop1 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="

        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop1 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop2 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop1 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac

保存后,修改脚本执行权限。

[hadoop@hadoop1 bin]$ chmod +x myhadoop.sh

启动集群

[hadoop@hadoop1 bin]$ myhadoop.sh start

关闭集群

[hadoop@hadoop1 bin]$ myhadoop.sh stop

3.集群分发脚本

编写xsync脚本,实现对差异文件的更新。
在/home/hadoop/bin目录下创建xsync文件

[hadoop@hadoop1 opt]$ cd /home/hadoop
[hadoop@hadoop1 ~]$ mkdir bin
[hadoop@hadoop1 ~]$ cd bin
[hadoop@hadoop1 bin]$ vim xsync

在该文件中编写如下代码

#!/bin/bash

#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
for host in hadoop1 hadoop2 hadoop3
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的执行权限
[hadoop@hadoop1 bin]$ chmod +x xsync
#测试脚本
[hadoop@hadoop1 ~]$ xsync /home/hadoop/bin
#将脚本复制到/bin中,以便全局调用
[hadoop@hadoop1 bin]$ sudo cp xsync /bin/
#同步环境变量配置(root所有者)
[hadoop@hadoop1 ~]$ sudo ./bin/xsync /etc/profile.d/my_env.sh
#让环境变量生效
[hadoop@hadoop2 bin]$ source /etc/profile
[hadoop@hadoop3 opt]$ source /etc/profile

参考文章

尚硅谷数仓4.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值