众所周知,大数据浪潮正在渐渐的席卷全球的各个角落。而Hadoop正是这股风暴的动力之源。关于Hadoop的讨论声不绝于耳,利用Hadoop来处理大数据集的兴趣似乎与日俱增。 如今,Microsoft已经将Hadoop作为自身大数据战略的核心。 Microsoft此举的理由就是看中了Hadoop的潜力,在大数据领域Hadoop已经成为分布式数据处理的标准。通过集成Hadoop技 术,Microsoft允许客户访问快速增长的Hadoop生态系统。同时随着越来越多善于在Hadoop平台进行开发的人才涌出,这对Hadoop发展 极其有利。 主要挑战
Hadoop是什么Hadoop是基于HDFS(Hadoop distributed file system)的分布式密集数据处理和数据分析的软件框架。Hadoop在很大程度上是受Google在2004年白皮书中阐述的MapReduce的技 术启发。MapReduce工作原理是将任务分解为成百上千块的小任务,然后发送到计算机集群中。每台计算机再传送会自己那部分信息,MapReduce 则迅速整合这些反馈并形成答案。 MapReduce作为Hadoop的核心是一种处理大型及超大型数据集(TB级别的数据。包括网络点击产生的流数据、日志文件、社交网络等所带来的数据)并生成相关的执行的编程模型。其主要思想是从函数式编程语言借鉴而来的,同时也包含了从矢量编程语言借鉴的特性。 Windows Azure Hadoop实战下文详细介绍基于Microsoft Azure之上Hadoop的。如果您也想尝试,请访问hadoopazure.com获取邀请。Microsoft在Azure上使用Apache Hadoop(0.20.203) 设立集群一旦用户应邀参加公测,便可以设置您的Hadoop集群。访问hadoopazure并使用Windows Live ID登录。登录后还需填写相关信息:
所有信息填写完成后单击请求集群。之后将会为用户分配并创建集群。(大约需要5-30分钟)对于集群分配,用户将会看到许多的任务节点和一个被称之为NameNode的头节点。 集群建立好后用户便可以尝试点击Metro风格的图标,用户可以看到可以执行哪些类型的数据处理以及管理任务。此外可试用Web方式与集群进行数据交换,在使用FTP和ODBC的模式时需要先打开端口(默认为关闭)。 在集群管理页面用户可执行基本的管理任务,如配置集群访问,导入数据,并通过 交互式控制台管理集群。交互控制台支持JavaScript或Hive。当用户访问“任务”部分时,用户可运行MapReduce作业,并可以看到正在运 行以及那些最近完成的MapReduce任务状态。 连接数据用户有多种途径上传或访问位于Windows Azure上的Hadoop集群的数据。包括直接上传到集群或者访问存储在其他位置上的数据。 虽然FTP允许上传理论上任何大小的文件,但较好将文件大小控制在GB级别。 另外如果用户想批处理作业存储在Hadoop之外的数据,首先需要执行几个配置:设置外部连接,单击主页面上的集群管理并配置所使用的存储位置。如位于 Windows Azure Blob的存储Windows Azure Data Market的查询结果或者Amazon Web Services (AWS) S3上的存储。
运行MapReduce作业建立和验证Hadoop集群并确认数据可用后便可以运行一个或多个MapReduce作业。 如果用户对Hadoop并不熟悉可查看运行主页面上的Samples按钮,以便更好了解整个流程。如果用户熟悉Hadoop,并想运行MapReduce 作业,有以下几种选择。用户选择方式的取决于对Hadoop工具的熟悉程度,如Hadoop命令提示符以及语言。用户可使用Java、Pig、 JavaScript或C#来执行Windows Azure Hadoop MapReduce任务。 点击Samples,然后打开WordCount配置页面(如图2),页面包 括功能和数据源。源数据不仅需要输入文件名称和文件路径。当文件路径选择本地时意味着文件存储在Windows Azure Hadoop集群,同时源数据也可以选择AWS S3、Windows Azure Blob storage、Windows Azure Data Market或直接从HDFS检索。 配置好参数后,点击执行工作。当运行任务示例时请阅读详细说明,有些可从主页面创建任务,有些则需要RDP连接集群。 在任务执行的过程以及任务完成后可监视工作状态。在任务历史记录页管理账户,可查看任务的详细信息。包括脚本、工作状态、日期、时间信息等。 使用C#处理Hadoop任务用户还可通过C# Streaming处理Windows Azure Hadoop MapReduce任务。主页面会有相关的示例。用户需要上传所需的文件(davinci.txt, cat.exe和wc.exe)到存储位置,如HDFS、ASV或Amazon S3。同时需要Hadoop HEADNODE的IP地址。然后运行如下命令
填写任务运行参数
在示例中mapper和reduce从stdin读取可执行文件并输出到stdout。产生的Map/Reduce任务提交给集群执行并映射文件。如图3 工作流程如下:首先mapper文件启动进程被添加到mapper task initialization(如果有多个mapper,每个任务将推出单独的初始化过程),在执行任务时,mapper任务将代码和附加代码转换并作为 MapReduce任务标准输入的一部分,然后mapper从标准输出中收集,并转换代码为key/value pair。换句话说就是当reduce任务接收到来自各个mapper输出时会按照键值对中的键对输入数据进行排序,并将相同的键归类。然后调用 reduce()函数,并通过迭代处理与制定键相关联的值,之后生成一个列表(可能为空)。 使用HiveQL查询Hive Table使用交互式的Web控制台,用户可对位于用户定义Hadoop集群上的Hive Table进行查询。但在查询之前需要创建Hive Table。使用WordCount MapReduce时需执行以下命令创建和验证Hive Table
Hive语法类似于SQL语法,HiveQL提供了类似的查询。在默认情况下,Hadoop是区分大小写的。 其他连接集群的方式在主页面中还可以通过RDP协议连接集群。并通过远程桌面的方式连接到集群的NameNode节点服务器。要通过RDP连接用户需要点击管理首页的“远程 桌面”按钮,然后点击下载RDP连接文件,然后输入用户名和密码,如果出现提示还需要打开客户端机器上的防火墙端口。建立连接后,用户可以向管理本地机器 那样使用Windows资源管理器管理集群。 例如本文作者所用的实例,NameNode节点服务器上部署两个处理器和 14GB内存,并部署Windows Server 2008 R2 企业版(集成SP1),采用Apache Hadoo 0.20.203.1。本集群包括NameNode和一些WorkerNode,共部署8枚处理器。 实例包含标准的Hadoop工具,如Hadoop Command Shell或Command-line interface,以及Hadoop MapReduce tracker(http://[namenode]:50030)和Hadoop NameNode HDFS(http://[namenode]:50070)。使用Hadoop Command shell可运行MapReduce任务或使用RDP协议执行其他管理任务。 Sqoop则为Hadoop和SQL Server(SQL Server 2008 R2或更高本的SQL Server并行数据库)数据传输提供了桥梁。需要下载JDBC驱动并安装在Sqoop节点上。Sqoop基于SQL Server连接器设计,用户可在Hadoop(基于Linux)和SQL Server传输数据。同时Sqoop还支持通过FTP的方式在SQL Azure和HDFS之间导入导出数据。 通过Hive的ODBC驱动(端口号:10000),允许任何Windows应用程序访问并对Hive数据仓库进行查询。同时还允许Excel对Hive的访问,使数据直接从Hive移动到Excel和PowerPivot。 Windows Azure Hadoop优势Windows Azure Hadoop的有趣优势 ●安装容易,并使用Metro风格的管理界面 ●在MapReduce作业或数据查询时语言的选择是多样的,MapReduce作业支持Java、C#、Pig、JavaScript,而查询时可试用Hive(HiveQL)。 ●可使用现有的技能(Hadoop技术),符合Apache Hadoop 0.203以上版本 ●有多种连接选项,包括ODBC驱动(SQL Server/Excel)RDP和其他客户端。以及连接其他云存储的能力(Windows Azure Blobs、Windows Azure Data Market、Amazon Web Services S3) 当Windows Azure Hadoop正式公布时,还会公布许多未知的功能 ●当前只是私人测试版,相对功能较少。 ●定价尚未公布 ●公测期间,对上传文件大小有限制,目前还不清楚正式版发布的版本具备的特性 |