Python基于hadoop的大规模并行数据分析系统原型设计(4)
时间:2017-02-08 13:00 来源:毕业论文 作者:毕业论文 点击:次
Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。一个Map/Reduce 作业(job) 通常会把输入的数据集切分为若干独立的数据块,由 map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序, 然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。 整个框架负责任务的调度和监控,以及重新执行已经失败的任务。通常,Map/Reduce框架和分布式文件系统是运行在一组相同的节点上的,也就是说,计算节点和存储节点通常在一起。这种配置允许框架在那些已经存好数据的节点上高效地调度任务,这可以使整个集群的网络带宽被非常高效地利用。Map/Reduce框架由一个单独的master JobTracker 和每个集群节点一个slave TaskTracker共同组成。master负责调度构成一个作业的所有任务,这些任务分布在不同的slave上,master监控它们的执行,重新执行已经失败的任务。而slave仅负责执行由master指派的任务。应用程序至少应该指明输入/输出的位置(路径),并通过实现合适的接口或抽象类提供map和reduce函数。再加上其他作业的参数,就构成了作业配置(job configuration)。然后,Hadoop的 job client提交作业(jar包/可执行程序等)和配置信息给JobTracker,后者负责分发这些软件和配置信息给slave、调度任务并监控它们的执行,同时提供状态和诊断信息给job-client。 Hbase简介 HBase是Hadoop的一个子项目,HBase采用了Google BigTable的稀疏的,面向列的数据库实现方式的理论,建立在hadoop的hdfs上,一方面里用了hdfs的高可靠性和可伸缩行,另外一方面里用了BigTable的高效数据组织形式.可以说HBase为海量数据的real-time相应提供了很好的一个开源解决方案.据说在某运营商中使用类似于BigTable的技术可以在两秒时间内从2TB数据中查找到某条话费记录.而这是原来该运营商使用Oracle数据库所无法解决的问题 HBase是一种构建在HDFS之上的分布式、面向列的存储系统。可以实时读写并随机访问超大数据集。尽管已经有许多数据存储和访问的策略和实现方法,但事实上大多数解决方案,特别是一些关系型的,在构建时并没有考虑到超级大规模和分布式的特点。许多商家通过复制和分区的方法来扩充数据库使其突破单个节点的限制,但这些功能通常都是事后增加的,安装和文护都很复杂。同时也会影响RDBMS的特定功能,例如联接、复杂的查询、触发器、视图、和外键约束这些操作在大型RDBMS上代价相当高,甚至根本无法实现。HBase从另外一个角度来处理伸缩性的问题。它通过线性的方式从下到上增加节点来进行扩展。HBase不是关系型数据库,也不支持SQL,但是它有自己的特长,这是RDBMS不能处理的,HBase巧妙地将大而稀疏的表放到了商用服务器集群上 HBase提供了一个类似于mysql等关系型数据库的shell.通过该shell我们可以对HBase的内的相关表以及列族进行控制和处理.HBase shell的help命令比较详细的列出了HBase所支持的命令。 HBase公认的用例是webtable,这种表存储爬取网页及其属性,以网页的URL作为键。Webtable有数以亿计的行。MapReduce作业在webtable上不断地执行,得到统计数据,增加新的MIME类型列,并为之后的搜索引擎简历索引而进行文本内容解析。当用户随机点击网址的缓存页面属性时,随即网页实时显示,同时,不同速率的爬行器随之更新该表。 HDFS简介 HDFS支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动或重命名文件。当前,HDFS不支持用户磁盘配额和访问权限控制,也不支持硬链接和软链接。但是HDFS架构并不妨碍实现这些特性。 (责任编辑:qin) |