Python基于hadoop的大规模并行数据分析系统原型设计(5)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

Python基于hadoop的大规模并行数据分析系统原型设计(5)


 
图2-1 HDFS图示
Namenode和Datanode被设计成可以在普通的商用机器上运行。这些机器一般运行着GNU/Linux操作系统(OS)。HDFS采用Java语言开发,因此任何支持Java的机器都可以部署Namenode或Datanode。由于采用了可移植性极强的Java语言,使得HDFS可以部署到多种类型的机器上。一个典型的部署场景是一台机器上只运行一个Namenode实例,而集群中的其它机器分别运行一个Datanode实例。这种架构并不排斥在一台机器上运行多个Datanode,只不过这样的情况比较少见。
集群中单一Namenode的结构大大简化了系统的架构。Namenode是所有HDFS元数据的仲裁者和管理者,这样,用户数据永远不会流过Namenode。
Hive简介
行业内对SQL和NOSQL的辩论过程中,陆续推出了集成了SQL语言引擎和MapReduce的大规模并行系统,Hive便是Facebook的开源项目,Hive 在Hadoop 之上提供了类似于SQL 的查询语言(HQL),使不熟悉map/reduce 的用户很方便的利用SQL 语言查询,汇总,分析数据。而map/reduce开发人员可以把自己写的mapper 和reducer 作为插件来支持Hive 做更复杂的数据分析。
 
图2-2 Hive设计框架图
    Hive是基于Hadoop开发的数据仓库封装,将结构化的数据文件映射成一张数据库表,并提供完整的SQL查询功能,以数据库的方式去管理HDFS,十分适合数据仓库的统计分析
开发语言的技术背景
Hadoop提供了一个API来运行MapReduce,并允许用除Java以外的语言来编写自己的map和reduce函数。Hadoop流使用Unix标准流作为Hadoop和程序之间的接口,所以可以使用任何语言,只要编写的MapReduce程序能够读取标准输入,并写入到标准输出。
本课题将使用Python语言来编写MapReduce程序。
Python的技术背景
Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。使用Python时,无需考虑如何管理程序使用的内存这类底层细节,是一门高层语言,具有可移植性,只要避免使用依赖于系统的特性,那么Python程序不需要进行修改就可以在任何平台上运行。
Python语言写的程序不需要编译成二进制代码。可以直接从源代码运行程序。在计算机内部,解释器把源代码转换成字节码的中间行驶,然后再把它翻译成计算机使用的机器语言并运行。事实上,不需要担心如何编译程序、如何确保连接转载正确的库等问题,这一切让使用Python变得更加简单。
Python即支持面向过程的编程也支持面向对象的编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程,具有可扩展性:可以把你的部分程序用C或C++编写,然后在Python程序中使用它们;可嵌入性:把Python嵌入C/C++程序,从而向程序用户提供脚本功能;具有丰富的库:可以处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作
WxPython的技术背景
使用Python的GUI库——你需要使用这些库来用Python语言创建你自己的图形程序。使用GUI库和它们的Python绑定,可以创建IrfanView、Kuickshow软件或者任何别的类似的东西。能够使用Python语言编写程序,而使用的库本身是用C、C++或者别的语言编写的。有许多可供选择的使用Python的GUI,WxPython就是其中之一。其他的GUI有:PyQt、PyGTK、TkInter。 (责任编辑:qin)