整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

9.8云端的Hadoop

hadoop 小红牛 14℃ 0评论

尽管许多机构自建集群来运行Hadoop,在租赁的硬件上所搭建的云端运行
Hadoop,或提供Hadoop服务仍然很流行。例如,Cloudera提供在公共(或 私有)云端运行Hadoop的工具(参见附录B);
Amazon提供Hadoop云服 务,名为 Elastic MapReduce。

本节讨论如何在Amazon EC2上运行Hadoop,这是一个优秀的构建低成 本、试验性的Hadoop系统的方法。

Apache Whirr

Amazon的EC2(Elastic Compute Cloud)是计算服务,允许客户租借计算机 (或称为实例)来运行特定应用。客户可以按需启动和终止实例,并按照所租 借实例的数量和工作时长支付租金。

Apache Whirr 项目(http://whirr.apache.org/)提供了一套 Java API 和一组脚 本,能方便地在EC2或其他云提供商上运行Hadoop。®这些脚本支持多项 操作,包括启动集群、终止集群、列举集群中正在运行的实例等。

在EC2上运行Hadoop对于某些工作流特别恰当。例如,如果用户将数据
存储在Amazon S3上,则可在EC2上搭建集群来运行MapReduce作业,这
些作业从S3上读取数据,并在集群停机前**写回到S3中。如果集群的工作 时间较长,还可将S3中的数据复制到EC2的HDFS之中,通过数据本地化
提高执行效率。相比之下,由于S3和EC2节点并非物理上邻近,直接使用 S3无法享受数据本地化所带来的性能提升。

1.安装

Whin•的安装过程非常方便。从官网下载一个最新发布的压缩包,执行以下 指令将其解压缩到拟使用集群中的一台机器上。

% tar xzf whirr-x.y.z.tar.gz

Whirr•使用SSH与云端的机器通信。因此,可以创建SSH密钥对,以单独 使用Whirr。下面的指令将基于一个空密码来创建一组RSA密钥对,存放 在当前用户的.ssh目录中的id_rsa_whirr文件中。

% ssh-keygen -t rsa -P " -f ^/.ssh/id_rsa_whirr

切莫将Whirr的SSH密钥对与用户的Amazon
Web服务账号的凭 证、私钥或者SSH密钥对相混淆。Whirr被设计成可与多个云提供
商一起工作,并且它必须已经访问本地文件系统中密钥对的SSH公
钥和私钥。实际上,该方法也是最简单的为Whirr创建新密钥对的方法,正如前面演示的那样。

 用户需要告诉Whirr相关的云提供商的证书。这些证书可以以环境变量的 方式输出(参见以下命令),也可以以命令行方式或者服务配置文件方式的方 ①在Hadoop发布包的方

式提供。

%export AWS_ACCESS_KEY_ID=’…’.
%export AWS_SECRET_ACCESS_KEY=’...'

2.启动集群

现在可以准备启动集群了。Whirr备有多个文件,以启用相应的通用服务配 置。以下命令使用了其中一个文件以在EC2上启动Hadoop:

% bin/whirr launch-cluster --config recipes/hadoop-ec2.properties \--private-key-file.ssh/id_rsa_whirr

其中,launch-cluster命令首先启动云实例以及运行在云上的服务,再将 控制权交还给用户。

3.配置

在开始使用集群之前,先关注一下Whirr配置的更多细节。配置参数可以
放置在配置文件之中,即可以–config选项批量传输给Whirr命令,或者
使用命令行参数的形式,类似于前面我们提到的–private-key-file参 数的方式来指定SSH私钥文件的位置。

Recipe文件实际上是Java属性文件,定义了若干Whirr属性。例如, hadoop-ec2.properties文件的前两个属性定义了集群和运行在集群上的 服务:

whirr.cluster-name=hadoop
whirr.instance-templates=l hadoop-namenode+hadoop-jobtracker^5 hadoop-datanode+ hadoop-tasktracker

每个集群都有名称,由whirr.cluster-name指定,这样用户就能在标识 的集群上执行操作,例如列举所有正在运行的实例、终止集群等。对于运 行该集群的云账号而言,集群名称必须是唯一的。

属性whirr.instance-templates指定了运行在集群上的服务。该属性以
“基数:服务”的形式描述在多少台机器上运行了哪些服务类型。在上例 中,一台机器运行 hadoop-namenode 和
hadoop-jobtracker,另外 5 台 机器上运行 hadoop-datanode 和 hadoop-tasktracker 。利用
whirr.instance-templates,用户可以精准地定义集群的组成部分。除 了
Hadoop之外,还有许多其他服务类型,用户可以运行来枚 举,该命令不需要参数。

下一组属性指定云证书。

whirr.provider=aws-ec2
whirr. identity=${env: AWS__ACCESS_KEY_ID}
whirr.credential=${env:AWS_SECRET_ACCESS_KEY>

属性whirr,
provider定义了云服务提供商,在此例中是EC2(Whirr文档 列举其他受支持的服务提供商)。属性whirr.identity和
whirp.credential是访问云服务的凭证。通俗地讲,它们分别对应用户名和密码信息(各个云服务提供商采用的术语可能不同)。

最后三个参数描述集群的硬件(机器性能,如内存、磁盘、CPU和网速 等)、机器映像(操作系统)和地理位置(数据中心)。这些信息均依赖于服务提 供商。如果忽略这些属性,Whirr会尝试挑选恰当的默认设置。

whirr.hardware-id=cl.xlarge whirr.image-id=us-east-1/ whirr.location-id=us-east-l

在属性文件中,各属性被冠以whirr
.作为前缀f但是如果把属性作为参数 传到命令行中,这个前缀就要被移除。例如,用户可以在命令行添加– cluster-name
hadoop以设置集群的名称。这种方法可以设置属性文件中 的任一属性值。相反,我们也可以在属性文件中添加如下一行以设置私钥 文件:

whirr, private-key-file=/user/tom/ . ssh/id__rsa_whirr

也有一些指令用于指定运行在集群上的Hadoop的版本号,并且用于跨集群 设置Hadoop配置属性(详细信息参阅recipe文件)。

4.运行代理

为了使用集群,从客户端来的网络通信需要集群主节点使用SSH通道充当 代理来实现,可以使用以下命令:

% .~/.whirr/hadoop/hadoop-proxy.sh

当集群运行时,代理也需要一直运行,当集群终止时,可以按组合键Ctrl-C终止 代理。

5.运行MapReduce作业

MapReduce作业可以从集群内部的机器上启动运行,也可以从集群外部的机器上启动运行。下面,我们演示如何从构建了集群的机器上运行一个作 业,前提是在本地机器上已经安装了和集群相同版本的Hadoop系统。

启动集群时,会在目录中创建一组Hadoop站点配置文件。 可以按照如下设置HADOOP_CONF_DIR环境变量,从而连接到集群中去:

% export HADOOP_CONF_DIR=~/.whirr/hadoop

此时,集群的文件系统还是空的,还需要在运行作业之前增加测试数据。 使用Hadoop的distcp工具并行地从S3(有关S3文件系统的更多信息,可以 参见3.4节)中将数据拷贝到HDFS中是一个有效的方法。

% hadoop distcp \
-Dfs.sBn.awsAccessKeyId='...' \
-Dfs.s3n.awsSecretAccessKey='...' \
 s3n://hadoopbook/ncdc/all input/ncdc/a11

在hadoopbook节点S3桶的所有文件仅被允许拷贝到EC2的美国东 部区域,因而仅能在该区域运行distcp指令。最简单的方式是以以 下命令登陆到主节点(其地址在集群启动时会输出到控制台);

% ssh -i ~/.ssh/id_rsa_whirr master_host

数据准备完毕之后,可以用常用方式运行作业:

% hadoop jar hadoop-examples.jar MaxTemperatureWithCombiner \ /user/$USER/input/ncdc/all /user/$USER/output

或者可以指定数据输出到S3:

% hadoop jar hadoop-examples.jar MaxTemperatureWithCombiner \ /user/$USER/input/ncdc/all sBn://mybucket/output

用户可以使用jobtracker的Web界面(http://master_host:50030/)来监控作业 运行的进度。为了访问在工作节点上的网页,需要在浏览器中建立一个代 理自动配置(PAC)文件。参见Whirr文档以了解操作细节。

6.终止集群

运行destroy-cluster对指定集群进行关机:

% bin/whirr destroy-cluster --config recipes/hadoop-ec2.properties

该指令将终止集群中所有正在运行的实例,并且删除存储在集群中的 数据。

转载请注明:全栈大数据 » 9.8云端的Hadoop

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址