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

2019-05-23 10:44陈新华
电脑知识与技术 2019年8期
关键词:大数据平台

陈新华

摘要: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/root@slave1:/home/data/hdfs/data

scp –r /home/data/hdfs/data/hadoop-2.7.6/root@slave2:/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节点上使用下列命令执行该脚本文件。

[root@master ~]# . /hadoop.sh

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

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

[root@master ~]# 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.

【通联编辑:王力】

猜你喜欢
大数据平台
全国耕地质量大数据平台设计
高校思想政治教育大数据平台运行机制探析