大数据Hadoop平台下数据存储的实现.docx
- 文档编号:12867870
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:27
- 大小:3.50MB
大数据Hadoop平台下数据存储的实现.docx
《大数据Hadoop平台下数据存储的实现.docx》由会员分享,可在线阅读,更多相关《大数据Hadoop平台下数据存储的实现.docx(27页珍藏版)》请在冰点文库上搜索。
大数据Hadoop平台下数据存储的实现
大数据Hadoop平台下数据存储的实现
摘要
伴随着各种电子产品和网络的蓬勃发展,互联网上的数据正在以爆炸般的模式增长着,信息量逐渐从最小的字节增长成为TB乃至PB级的海量数据。
越来越多的信息量成为了一个难题,对于摒弃它们还是从中获取价值的这个选择题也逐渐有了显而易见的答案。
但是面对如此严峻的形势,我们该如何从大量的数据中获取有价值的信息,并且对这些数据进行高效、精准的处理呢。
就在此时,人们将目光移向了Hadoop,一个开源的能够对大量数据进行分布式处理的文件系统和并行计算编程模型。
本文将要介绍Hadoop的伪分布式集群具体的搭建过程和以HDFS为代表的分布式文件存储系统的数据存储平台的设计与实现。
并且对于HDFS本身仍面临的一些问题进行性能优化和解决。
首先Hadoop适宜在Linux系统上进行,所以先介绍centos系统的安装和配置过程;然后在centos系统下进行Hadoop伪分布式集群的搭建和基本配置;之后进行一系列的文件、数据的存储和读取应用;最后对于HDFS目前仍具有的一些问题进行分析和假定并对其进行性能优化。
关键字:
海量数据;Hadoop; Access; centos; HDFS
ABSTRACT
Alongwiththevigorousdevelopmentofvriouselectronicproductsandnetwork,thedataontheInternetisgrowinginanexplosivemode,informationgraduallyfromthesmallestbytegrowthbecometerabytesandpetabytesofhugeamountsofdata.Moreandmoreinformationhasbecomeadifficultproblem,thechoiceproblemtoeliminatethemorobtainthevalueofthemalsograduallyhadobviousanswer.Butfacedwithsuchserioussituation,howshoulewegetvaluableinformationfromalargeamountofdata,andhowtoprocessthemefficientlyandprecisely.Justthen,peoplealllookatHadoop,anopensourseandcanbedistributedprocessingoflargeamountsofdatafilesystemandparallelcomputingprogrammingmodel.
ThisarticlewillintroducetheHadoop’spseudodistributedclusterspecificbuildingprocessandrepresentedbyHDFSdatastorageplatformofdistributedfilestoragesystemdesignandimplementation.AndfortheHDFSitselfstillfacessomeproblemproblems,performanceoptimizationandtosolve.
HadoopisappropriateonLinuxsystemfirst,sofirstintroducecentossysteminstallationandconfigurationprocess;ThenunderthecentossystemHadooppseudostructures,andthebasicconfigurationofthedistributedclusters;Afteraseriesofdocuments,datastorageandreadingapplication;ThefinalanalysisforHDFSstillhassomeproblemsandassumptionsandperformanceoptimization.
Keywords:
hugeamountsofdata;Hadoop; Access; centos; HDFS
引言
21世纪网络迅猛发展着,随之而来的是信息量的超快速增长,如何正确、快速地处理海量数据并且得到所需要的信息已经成为了一个难点和热点,越来越多的企业开始关注海量数据。
本次毕业设计——大数据Hadoop平台下数据存储的研究与实现,是在Linux操作系统下,以Hadoop为大数据开发平台,利用其伪分布式集群形式,在以HDFS为代表的分布式文件存储系统下实现大量数据文件的存储和读取。
而HDFS的全称是分布式文件系统,设计目标是检测并快速处理硬件故障,数据流访问和简化一致性模型等。
本论文主要内容为Hadoop平台下的大数据存储问题。
第一章为绪论部分,包括大数据的简介、Hadoop的简介;第二章为虚拟机centOS的装载和配置;第三章为在装载好的虚拟机下Hadoop平台的搭建和基本配置;第四章为在搭建好的Hadoop平台下进行的一系列存储和读取操作以及方法演示和端口查看结果等;第五章为Hadoop的存储结构目前仍具有的问题以及一些改进方法和假设。
1 绪论
1.1 大数据简介
大数据(BigData)也被称为“海量数据(MassiveData)”,而目前在学术研究的领域与产业界中,对大数据并没有一个绝对的定义。
一般地说,只要是数据量超过一定范围的导致软件等无法在一个满意的时间内对其进行获取、管理和处理的数据量大小就可以被称为大数据。
现实生活中,大数据的实例有很多。
互联网上的网页信息、一些社交网站内的用户数据、电话网络中的话单数据、视频网页中的视频、Facebook中的各种图片文字信息等。
那么,从上面这段对大数据相对宽泛的描述来看,大数据并不是一个简单的有范围性的定义就可以描述的概念,所以,为了更加清晰地了解大数据,我们需要知道它的一些性质。
1.数据量大小——大容量
为了更加直观明了地认识大数据的信息量之大,我们将一分钟内的信息量做了统计:
全球的电子邮件用户在一分钟内发出了2.04亿封邮件;单Google搜索引擎一分钟内处理了200多万次的搜索请求;Facebook的所有用户一分钟内分享了68万多篇文章,而600多万页面被点击浏览过;Apple的软件应用商店一分钟内完成了4.7万次软件下载;单就在中国,一分钟内产生了时长500多万的移动通话时间;YouTube网站上的用户在一分钟内上传了总计时长50多小时的视频,130多万个视频被用户们点击观看……
根据IDC的一篇研究报告来看,自从人类学会记录历史以来,一直到2006年,人类全部的印刷文字的总和大约才50PB,而与之相对的,在Facebook这一个社交网站里,它的所有计算机集群的磁盘空间中,到目前为止已经存储了100PB多的数据,换句话说,单是Facebook这一个网站中的数据就已经是之前人类印刷数据量的2倍之多了。
据此,我们可以看出,在日常生活中我们所面临的信息量是如此巨大,并且与人们的生活如此息息相关。
2.数据类型——多类型
仅仅从“大数据”的字面上来看,似乎说的只是数据量的大小,然而,它并不只是如此,还关系到数据类型的多变性。
我们可以简单的把数据类型分为这两种:
结构化的数据(StructuredData)和非结构化的数据(UnstructuredData)。
其中,结构化的数据就是已经定义过的数据类型,例如平常的数字、银行的交易信息数据、航班的安排数据等,是可以在数据库中存储的数据。
而非结构化的数据就是没有办法提前定义好的数据,例如公司的文件、图片、视频音频等。
在早期的大数据形式中,大部分都是以结构化的形势出现的,此时只需要增加存储的节点或者提高计算的速度就可以解决大量数据。
然而,随着时间的推移,技术的飞速发展,如今人们面临的大数据一大部分都不再是可以提前定义的了,非结构化的数据量已经在大量地增长着。
根据IDC的统计,在整个企业中,非数据化的数据已经占到百分之八十,结构化的数据只有百分之二十,而在整个互联网中,非结构化数据也即将占领百分之七十多。
这给人们对大量数据的处理增加了前所未有的难度。
这就要求着目前的大数据处理领域必须要从算法到结构的各个层面进行新的突破。
3.数据时效性——高效性
在大数据的时代背景下,大量的数据信息不仅是目前的难题,还是目前的机遇。
只要数据存储并处理得当,便可以从中得到许许多多企业想要知道的信息。
然而面对如此大的数据量,要处理后得到所需信息则必须要求其处理速度要空前的迅捷,这样才能得到实时的准确的信息。
例如作为一个搜索引擎,前几分钟发生的事情如果没有及时加入搜索的内容中去,那么用户想要搜索的结果便不得而知,长久下去,必定会损失大量的用户数量,至此造成的损失可见一斑。
或者作为一个电子购物网站,则必须要分析用户当日的购买行为并且预测第二日的预计销售量,如果不能达到这样的计算速度,那么第二日的商品短缺将会给网站造成巨大的损失。
由此看来,高速的时效性也是大数据的一个重要性质。
同时也要求着更加高效准确的处理能力,才能使企业跻身于大数据时代。
1.2 Hadoop简介
Hadoop是一个可以对海量的数据做分布式处理的,由Apache基金会所研究出来的软件框架。
可以满足用户在没有充分地了解“分布式”的原理的情况下,来开发出分布式的程序。
能够把大块的程序逐渐分割为一些小工作单元,充分地利用起集群的能力来做出高速的储存或计算。
1.2.1 Hadoop的优点
Hadoop是可靠的,它本身已经设定过计算或存储有可能失败的这一前提,所以它在计算或存储时不单记录使用了一个数据,它还保留了这个数据的好几个副本,这样以来它就能对计算或存储失败了的节点进行重新的处理,避免了错误的发生,所以它的存储或处理数据的能力丝毫不会让人们怀疑。
Hadoop还是高效的,它以并行处理的工作方式,极大地加快了处理速度,节省了大量的成本和时间。
它还可以在成千上万个节点之间随意转移数据,并且时刻保证节点们的动态平衡,速度也由此得到了极大地保障。
Hadoop还是可以伸缩的,它不但能够处理容量大数量小的“大数据”,还可以处理容量小数量大的“大数据”,弹性的服务为我们带来了便捷。
除此以外,Hadoop主要依赖于社区服务而非私有的服务器,是开源的。
所以它的成本很低,并且任何人都有权限可以使用。
1.2.2 Hadoop的架构
Hadoop使用了主从(Master,Slaver)方式的架构。
在一个完整的集群下想要让Hadoop顺利地跑起来,那么一系列必要的后台程序是必不可少的。
如图1-1所示。
图1-1Hadoop主从节点架构图
下面对于各个角色进行逐一介绍:
(1)、NameNode
NameNode是Hadoop中HDFS的守护进程,通常在单独机器上运行。
它主要负责的是记录下存储或计算的文件是怎样分割成快速处理所需要的数据块的,并且这些数据块被分割存储到的节点的位置也是需要被记录的。
NameNode决定是否将文件映射到DataNode上的复制块上。
虽然说NameNode主要功能是负责管理内存和I/O模块,但是真正意义上的I/O处理却与NameNode无关,只有数据块存储到的节点位置的元数据与NameNode相关,这样处理是为了避免这些不必要的信息降低服务器的处理速度。
但是,NameNode本身是Hadoop集群的一个单一节点,只要NameNode服务出现问题,整个系统将面临危机。
(2)、DataNode
相对于NameNode的单一性来说,DataNode的个数就是十分巨大的了。
集群中的每一个从属服务器上都有运行着DataNode程序。
它负责把分割并分配给它的数据块读写到本地系统中去,即它就是用来存储数据块的地址,当用户需要用这一块的数据块时,NameNode找到相应的存储DataNode的位置,然后客户端直接与该DataNode上的后台程序进行沟通,对所需数据块进行相应的处理。
DataNode是以机架的方式出现,各个机架通过一个交换机即NameNode将所有数据连接起来供用户使用。
(3)、SecondaryNameNode
SecondaryNameNode根据它的名字就可以看出来,是一个备用的NameNode,存在方式类似于NameNode,但是平常不干NameNode的工作,只是用来定期保存元数据的状态,以便监视NameNode的工作状态,并在NameNode出现异常时,代替其完成所需要的功能,很大程度上地避免了错误的发生。
(4)、JobTracker
和NameNode一样,每个集群里只有一个JobTracker,其作用就是连接程序和Hadoop。
用户编写完代码后,提交至集群,此时将由JobTracker来决定被处理的文件。
在处理过程中会有不同的若干个task,此时的JobTracker的作用就是给这些task分配节点,如果有task运行出问题,由JobTracker监视出来,并且重新启动此task。
(5)、TaskTracker
TaskTracker和JobTracker的关系与负责存储数据的DataNode和NameNode的组成相似,也是主从结构。
JobTracker位于主节点,统一管理数据分析的工作,而TaskTracker则负责管理各个从节点的各自的task。
1.2.3 Hadoop的组成
Hadoop的最核心的两个组成就是:
HDFS和MapReduce。
其中HDFS作用是海量的数据的存储,而MapReduce的作用就是海量的数据的计算。
而数据存储仓库工具Hive和分布式的数据库系统Hbase也是Hadoop的两个重要组成部分。
HDFS全名是HadoopDistributedFileSystem(分布式文件存储系统),作用是存储Hadoop集群中的文件。
HDFS表面看起来就像是简单的分级文件系统,具有新建、消除、移动等这些简单的操作。
但是存储在HDFS中的文件其实是按照一定的需要被分割成数据块,然后将许多许多的数据块放到多个从节点中去。
这便是它与传统的存储架构大不相同的地方。
其中分割的数据块的大小和放置的数据块个数通常由用户决定。
HDFS的上一层是MapReduce,它由JobTrackers和TaskTrackers组成(上文已经叙述了它们的作用)。
除此之外,Hadoop还有许许多多的功能组成Hive、Pig、HCatalog等等,因该论文中未涉及,故不在此详细介绍。
2 虚拟机下centOS7.0的装载和配置
(1)、打开下载安装好的虚拟机软件,如图2-1:
图2-1虚拟机软件界面
(2)、选择“创建新的虚拟机”选项,如图2-2:
图2-2新建虚拟机向导
(3)、根据“新建虚拟机向导”,选择要创建虚拟机所需的各项属性:
兼容性、版本、命名、处理器、内存、网络、I/O控制器、磁盘属性等,如图2-3:
图2-3选择要创建虚拟机所需的各项属性
(4)、完成“新建虚拟机向导”,已经准备好创建虚拟机,如图2-4:
图2-4已经准备好创建虚拟机
(5)、在虚拟机软件主页中打开所添加的虚拟机,如图2-5:
图2-5打开所添加的虚拟机
(6)、系统进入检测所处环境,如图2-6:
图2-6进入检测
(7)、系统进入图形化安装界面,如图2-7:
图2-7图形化安装界面
(8)、在图形化安装界面中,选定系统自定义属性:
语言、输入法、键盘、安装源、软件包选择、安装位置、网络连接、手动分区等,最后进入安装,如图2-8:
图2-8进入安装
(9)、在安装过程中,增加root密码和用户及其属性,如图2-9:
图2-9增加root密码和用户
(10)、在安装过程完成后,重启并完成剩余设置选项,如图2-10:
图2-10完成剩余设置
(11)、在安装过程完成后,重启并完成剩余设置选项,如图2-11:
图2-11安装完成
(12)、在基本安装完成后,完善一下系统所需的项目:
网络连接、虚拟机工具、共享文件夹等。
至此,centOS7.0安装就完成了。
3 Hadoop平台的搭建和基本配置
3.1 安装JDK
(1)、在Windows系统下下载要安装的jdk文件,把它复制在/tmp文件夹里面。
如图3-1:
图3-1jdk文件包
(2)、对复制的jdk压缩文件执行复制安装解压命令:
图3-2解压缩jdk
(3)、在/etc/profile文档里配置jdk的环境变量:
图3-3配置jdk环境变量
写入如图图3-4中的五行代码:
图3-4vim编辑jdk环境变量
使用source命令使之配置生效:
图3-5source命令生效配置
(4)、使用“java-version”查看安装的jdk:
图3-6java版本查看
至此,jdk安装配置完成。
3.2 SSH免密码登陆
(1)、在root权限下利用命令生成公钥与私钥:
图3-7ssh生成公钥私钥
(2)、将刚刚生成的公钥加入到用于认证的公钥文件中:
图3-8将公钥加入认证
(3)、设置无需密码登陆形式:
图3-9设置无需密码登陆
至此,CentOS7.0免密码登陆,SSH配置完成。
3.2 安装配置Hadoop
(1)、在CentOS7.0复制安装解压Hadoop:
图3-10解压hadoop压缩包
(2)、配置/etc/profile文档里Hadoop的环境变量:
图3-11配置Hadoop环境变量
写入如图3-12中的代码:
图3-12vim编辑Hadoop环境变量
命令配置生效:
图3-13命令配置生效
(3)、配置hadoop-env.sh文件:
图3-14配置文件hadoop-env.sh
编辑写入如图3-15中的代码:
图3-15vim编辑文件hadoop-env.sh
(4)、配置下面mapred-site.xml、core-site.xml、hdfs-site.xml、yarn-site.xml这4个重要文件,写入如下图3-16、图3-17、图3-18、图3-19中的代码:
图3-16vim编辑文件mapred-site.xml
图3-17vim编辑文件core-site.xml
图3-18vim编辑文件hdfs-site.xml
图3-19vim编辑文件yarn-site.xml
(5)、对NameNode进行格式化:
图3-20格式化
(6)、启动Hadoop所有进程:
图3-21启动命令
启动后使用JPS命令查看开启进程:
图3-22启动结果和jps查看
可以看到全部进程已经开启。
至此,Hadoop-2.6.0的伪分布式就完全安装配置好了。
4 Hadoop平台下数据存储的分析和研究
本次毕业设计主要内容为Hadoop存储方面的分析和研究,故接下来将对Hadoop中文件存储和读取进行一些演示。
Hadoop的文件访问和控制又主要有两种方式,其中,第一种为直接使用命令行来进行的文件存储读取等功能;第二种则是以API的方式进行的文件操作。
4.1 用命令进行文件存储和读取
直接使用命令行来对Hadoop进行文件存储和读取工作,是一种较为简单直观且常用的方式。
用户可以直接输入所需要的管理行为对应的命令行,来进行文件操作,此时所需要的就是HDFS的命令行,其命令十分广泛,包括显示文件目录、更改文件的权限、上传文件、读取文件、复制文件、获取所需的文件信息等等。
下面将对常用文件操作做一演示。
4.1.1 创建目录
直接在HDFS的根目录下创建目录,可以使用如图4-1的命令,图中命令的作用就是在HDFS的根目录下创建一个名叫creat1的文件夹。
图4-1创建目录
4.1.2 显示目录以及网页图形化界面
a.命令行
使用命令行显示文件下的目录,可以使用如图4-2中的命令:
图4-2显示目录
可以看到,图中使用该命令行来显示HDFS的根目录,其中create1就是上一步创建的新文件。
b.网页端
这时打开Hadoop网页端的图形化操作界面,可以看到HDFS目录下刚刚创建的几个文件以及它们的属性,目前都为空。
图4-3网页端显示目录
4.1.3 本地文件存入目录以及网页图形化界面
a.命令行
首先在目录/usr/local下创建新建文件input1,在input1文件夹中新增两个txt文件text1.txt和text2.txt:
图4-4本地文件创建
分别在text1.txt和text2.txt输入以下数据:
图4-5text1.txt内容图4-6text2.txt内容
最后使用命令行将本地的文件存储进HDFS下的指定的目录,可以使用如图中的命令,即可将刚刚新建的input1文件夹及其中的所有内容全部存储进了create1目录下面。
图4-7本地文件录入HDFS
b.网页端
此时由http端口观察,即可看到,在create1目录下面的input1文件夹属性。
点击input1,便可以看到input1文件夹下的两个txt文件的属性。
图4-8网页端查看create1目录
图4-9网页端查看input1目录
4.1.4 显示HDFS下文件内容以及网页图形化界面
a.命令行
使用如下命令,则可在终端界面显示所选目录文件中的内容:
图4-10显示文件内容命令
显示结果:
图4-11显示的文件内容
b.网页端
此时在网页端点击text1.txt即可查看其内容如下,非常直观:
图4-12网页端显示的文件内容
4.1.5 显示HDFS下文件大小
利用如下命令,可以查看HDFS目录下的文件的大小:
图4-13查看文件大小
4.1.6 显示HDFS下文件的信息
利用如图图4-14的命令,可以查看HDFS目录下文件的具体信息,可以看出,显示的信息为:
文件夹数目、文件数目和文件的大小。
图4-14显示文件信息
4.1.7 在HDFS下复制文件
利用如图图4-15的命令,可以在HDFS目录下复制文件,使用图中的命令,即把create1目录下的input1复制到了create2中去。
图4-15复制文件
4.1.8 保存至本地文件
利用如图4-16的命令,可以将HDFS目录中的文件保存至本地路径中,得到结果图4-17,即把create1/input1目录下的creat1保存到了本地生成的一个新文件output1中去。
图4-16保存至本地
图4-17保存至本地的文件内容
4.1.9 从本地移动文件
利用如图4-18的命令,可以将中本地路径中的文件移动至HDFS目录中,图中命令即把usr/local/input1移动到了HDFS下的create3中去,与存储不同的地方是被移动的原始
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 Hadoop 平台 存储 实现