网站首页  词典首页

请输入您要查询的论文:

 

标题 基于Hadoop的企业级大数据平台的自动化部署
范文

    陈新华

    摘要:Hadoop系統是优秀的大数据处理系统,具有分布式存储和处理数据的能力,其应用环境的部署相对比较复杂,文章提出一种自动化部署Hadoop的解决方案。通过编写自动化部署Hadoop的shell脚本,可以快速部署Hadoop大数据平台,显著降低了Hadoop集群部署的复杂度及时间成本。

    关键词:自动化部署;大数据平台;Hadoop集群

    中图分类号:TP393 文献标识码:A

    文章编号:1009-3044(2019)08-0221-03

    1 概述

    随着信息技术的发展,越来越多的信息以数字形式在信息系统中传输、处理和存储。在信息技术快速发展的今天,人类以正在以前所未有的速度产生数据,除了信息系统的运行产生大量数据,现在每个人在每天的生活中都会产生很多的数据(例如工作中产生的数据、电话通信、交通导航、新闻阅览、消费记录、评论、留言、工作过程等),大数据就成为这个高科技时代的产物。大数据是云计算、智慧城市的基础,同时大数据也为人工智能提供数据基础。Hadoop作为开源的大数据处理系统,为数据的存储和处理提供了技术平台,为了解决Hadoop系统应用中配置管理的复杂性问题,本文通过shell编程,提供了一种自动化配置管理Hadoop的方法,减少了配置难度,提升了Hadoop平台的部署速度。

    2 HADOOP简介

    Hadoop是一套开源的软件平台,利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理。Hadoop的主要目标是对分布式环境下的“大数据”以一种可靠、高效、可伸缩的方式处理。

    Hadoop的MapReduce和HDFS的核心设计,使得整个框架能够自动处理节点故障。MapReduce提供了对数据的计算,HDFS提供了海量数据的存储。Hadoop能够轻松处理PB级的海量数据。

    HDFS(Hadoop Distributed File System)是为Hadoop项目开发的文件系统,它采用(master/slave)架构。HDFS由一个NameNode和众多DataNode组成。HDFS以文件格式为用户存储数据提供相应的文件名称空间。通常情况下,HDFS将这些文件分成几个文件块,这些文件块被存储在一组数据服务中。然后由NameNode提供基本功能,如打开、关闭和重命名文件和目录,同时负责将文件块映射到DataNode节点上。由DataNode负责响应客户端具体文件的读写操作,同时处理NameNode节点发来的建立、删除和备份数据块的请求。Hadoop平台架构如图1所示。

    Hadoop平台的部署形式可分为三类:独立模式,伪分布模式和完全分布模式(标准集群模式)。根据研究项目的要求,建立企业大数据Hadoop平台必须使用完全分布式模式。

    Hadoop的部署方式目前以手动部署居多。手动部署缺点较多,主要表现在部署耗时多、容易出现错误、对操作人员的技术水平要求高、部署过程既不可重复也不可靠、需要维护额外的文档。

    本文提出一种自动化部署Hadoop的解决方案。通过编写shell脚本,可以快速实现自动化部署Hadoop大数据平台,大大降低了Hadoop集群部署的复杂度、缩减了部署的时间成本。在一定程度上弥补了手动部署的缺点。

    3 自动化部署程序的设计与实现

    3.1 shell工具介绍

    Shell提供了用户和内核进行交互操作的一种接口。同时,Shell也是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由 shell 命令组成的程序。UNIX/Linux 操作系统下的Shell既是用户交互的界面,也是控制系统的脚本语言。

    本文利用shell编写自动化部署脚本。

    3.2 自动化部署shell脚本的实现

    自动化部署shell脚本的实现主要依据hadoop平台的部署步骤,将每一个步骤编写为shell脚本,最后形成一个shell脚本文件。下文以一个master节点,两个slave节点,共三个节点组成的hadoop集群为例进行展示。

    1) 配置SSH免密登录。脚本如下:

    [#修改hosts文件,配置主机名与ip的映射。

    echo "IP地址 master" >> /etc/hosts

    echo " IP地址slave1" >> /etc/hosts

    echo " IP地址slave2" >> /etc/hosts

    #下载安装expect。

    yum install expect –y

    #生成秘钥。

    echo |ssh-keygen -t rsa

    #需要配置的主机名。

    SERVERS="master slave1 slave2"

    #需要配置的主机登录密码。

    PASSWORD=123456

    #将本机生成的公钥复制到其他节点上。

    ssh_copy_id_to_all(){

    for SERVER in $SERVERS

    do

    auto_ssh_copy_id $SERVER $PASSWORD

    done

    } ]

    2) 配置每台服务器的hosts文件。脚本如下:

    [#在master上配置hosts文件,再将配置好的hosts文件发送给slave1,slave2。

    scp /etc/hosts slave1:/etc

    scp /etc/hosts slave2:/etc ]

    3) 创建目录并安装hadoop和jdk软件。脚本如下:

    [#为集群中节点的hdfs的NameNode、DataNode及临时文件在用户目录下创建目录。

    mkdir -p /home/data/hdfs/data /home/data/hdfs/tmp /home/data/hdfs/name

    #解压软件包并将解压后的包移动到相应的目录下。

    tar -zxvf jdk-8u171-linux-x64.tar.gz

    mv jdk1.8.0_171 /usr/local/

    tar -zxvf hadoop-2.7.6.tar.gz

    mv hadoop-2.7.6 /home/data/hdfs/data ]

    4) 配置环境变量。

    java环境变量配置脚本如下:

    [grep -q "export PATH=" /etc/profile

    if [ $? -ne 0 ]; then

    #末行插入

    echo 'export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/bin'>>/etc/profile

    else

    #行尾添加

    sed -i '/^export PATH=.*/s/$/:\$JAVA_HOME\/bin/' /etc/profile

    fi

    grep -q "export JAVA_HOME=" /etc/profile

    if [ $? -ne 0 ]; then

    #导入配置

    filename="$(ls /usr/local | grep '^jdk.*[^rpm | gz]$' | sed -n '1p')"

    sed -i "/^export PATH=.*/i\export JAVA_HOME=\/usr\/local\/jdk1.8.0_171$filename" /etc/profile

    sed -i '/^export PATH=.*/i\export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib' /etc/profile

    #echo "export JAVA_HOME=/usr/local/$filename">>/etc/profile

    #echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar'>>/etc/profile

    else

    #替換原有配置

    filename="$(ls /usr/local | grep '^jdk.*[^rpm | gz]$' | sed -n '1p')"

    sed -i "s/^export JAVA_HOME=.*/export JAVA_HOME=\/usr\/local\/$filename/" /etc/profile

    fi

    source /etc/profile

    echo"7"

    source /etc/profile

    echo"8" ]

    hadoop环境变量配置脚本如下:

    [grep -q "export HADOOP_HOME=" /etc/profile

    if [ $? -ne 0 ]; then

    #在PATH前面一行插入HADOOP_HOME

    sed -i '/^export PATH=.*/i\export HADOOP_HOME=\/home\/data\/hdfs\/data\/hadoop-2.7.6' /etc/profile

    else

    sed -i 's/^export HADOOP_HOME=.*/export HADOOP_HOME=\/home\/data\/hdfs\/data\/hadoop-2.7.6:' /etc/profile

    fi

    source /etc/profile

    echo"9"

    source /etc/profile ]

    加载,使slave的环境变量生效。

    [scp /etc/profile slave1:/etc

    scp /etc/profile slave2:/etc

    ssh slave1 source /etc/profile

    ssh slave2 source /etc/profile ]

    5) 共享Hadoop配置文件。

    hadoop-2.7的配置目录,依次修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml以及slaves文件。脚本如下:

    [#将整个hadoop-2.7.6文件夹及其子文件夹复制到slave1和slave2的相同目录中。

    scp –r /home/data/hdfs/data/hadoop-2.7.6/[email protected]:/home/data/hdfs/data

    scp –r /home/data/hdfs/data/hadoop-2.7.6/[email protected]:/home/data/hdfs/data ]

    6) 启动hadoop服务。脚本如下:

    [#格式化namenode

    /home/data/hdfs/data/hadoop-2.7.6/bin/hadoop namenode –format

    #启动hadoop进程

    /home/data/hdfs/data/hadoop-2.7.6/sbin/hadoop-daemon.sh start namenode

    /home/data/hdfs/data/hadoop-2.7.6/sbin/hadoop-daemon.sh start datanode

    /home/data/hdfs/data/hadoop-2.7.6/sbin/hadoop-daemon.sh start secondarynamenode

    /home/data/hdfs/data/hadoop-2.7.6/sbin/yarn-daemon.sh start resourcemanager

    #在slave节点上启动hadoop进程

    ssh slave1 /home/data/hdfs/data/hadoop-2.7.6/sbin/yarn-daemon.sh start nodemanager

    ssh slave2 /home/data/hdfs/data/hadoop-2.7.6/sbin/yarn-daemon.sh start nodemanager ]

    4 基于HADOOP的企业大数据平台自动化部署测试

    4.1 测试网络拓扑结构设计

    测试环境搭建的是hadoop三节点集群,包含一台master节点,两台slave节点。

    实验室环境中Hadoop集群的拓扑结构如图2所示。

    ip地址和主机名规划如表1所示。

    4.2 测试环境准备

    1)操作系统镜像选择的是rhel-server-7.0-x86_64-dvd.iso,也可以选择Ubuntu、CentOS等。

    2)软件选择Hadoop2.7.6和jdk1.8.0_171。

    4.3 基于HADOOP的企業大数据平台的自动化部署

    1) 执行hadoop.sh脚本文件。

    将以上脚本写入一个名为hadoop.sh的脚本文件,并在master节点上使用下列命令执行该脚本文件。

    [[email protected] ~]# . /hadoop.sh

    2) 运行jps查看服务启动情况。

    脚本文件运行结束后,即可用jps查看hadoop服务启动情况。

    [[email protected] ~]# jps

    3) 查看UI管理界面

    登录http://192.168.127.130:50070查看YARN管理界面,如图3所示。

    可以看出三节点集群的hadoop大数据平台自动化部署成功。

    5 总结

    Hadoop作为大数据分析平台被企业广泛应用,但其部署过程复杂、耗时长、技术要求高。本文以企业大数据平台的部署为研究对象,提出使用自动化部署来改善手动部署的缺点,编写了自动化部署文件,并在三节点的hadoop集群上进行了自动化部署测试。测试结果显示,自动化部署将部署时间从5~6小时缩减至5~10分钟,显著地降低了部署的时间成本,而且对部署人员的技术要求也不高。

    参考文献:

    [1] 孟源北.支持自动化Hadoop安装部署的研究[J].信息通信,2013(8):20.

    [2] 于金良,朱志祥,李聪颖.Hadoop平台的自动化部署与监控研究[J].计算机与数字工程,2016(12):2457-2461.

    [3] 刘萍.基于Hadoop与Spark的大数据处理平台的构建研究[J].通化师范学院学报,2018(30):83-88.

    [4] 孟永伟,黄建强,曹腾飞,王晓英.Hadoop集群部署实验的设计与实现[J].实验技术与管理,2015(1):145-149.

    【通联编辑:王力】

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/17 1:49:05