标题 | 基于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下载服务。