65.9K
CodeProject 正在变化。 阅读更多。
Home

使用Terraform分析AWS大数据

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2018年10月9日

CPOL

2分钟阅读

viewsIcon

9136

遵循“基础设施即代码”规则,我们从头开始构建了一个真实的示例项目,该项目描述了EMR集群的部署和在那里运行Hive脚本。 它描述了AWS“学习构建”部分的大数据分析与Hadoop项目。

引言

使用代码描述您的基础设施非常重要。 Terraform可以帮助我们实现这一点。

身份验证

不要忘记在您的项目根目录中创建 variables.tf 文件,您应该在那里设置 3 个变量

  • region - 您的所有基础设施都将部署在哪里
  • access_keysecret_key,适用于可以通过AWS IAM生成的您的用户(下面是示例)
variable "region" {
    default = "us-east-2"
}
variable "access_key" {
    default = "JFSKLGD8...UFDJKGJS"
}
variable "secret_key" {
    default = "sdfs8d9fgEG33VE...343rVFDV3vdfevr"
}

分步脚本

通过AWS解决方案架构师副业考试后,为了不忘记这些东西,我发现了AWS在其入门部分建议逐个实施的项目。我选择了使用Hadoop分析大数据作为第一步。 为了好玩,我决定通过Terraform脚本来描述这个项目。

我想分享这个经验,因为我遇到了一些不简单的问题。

  1. 首先,我们需要设置Terraform提供商,请参阅provider.tf
    provider "aws" {
        access_key = "${var.access_key}"
        secret_key = "${var.secret_key}"
        region = "${var.region}"
    }
  2. 在这里,我们应该创建S3 Bucket和EC2 Key Pair。这两个步骤都非常简单,在s3_bucket.tfkey_pair.tf中进行了相应的描述。
    resource "aws_s3_bucket" "s3_bucket" {
        bucket = "tf-big-data"
    }
    resource "aws_key_pair" "emr_key_pair" {
        key_name = "tf-big-data"
        public_key = "ssh-rsa A...w== rsa-key-20180822"
    }
  3. 通过控制台创建EMR集群需要点击5-7次,选择几个选项,其余选项可以保留默认值。 它看起来像一个苹果派,但实际上有很多动作发生在幕后。 因此,我们必须关注EMR及其EC2实例的角色和策略。 对于每一个,我们都必须创建2个数据对象(aws_iam_policyaws_iam_policy_document)和2个资源(aws_iam_role_policy_attachmentaws_iam_role)。 这些角色位于roles.tf模块中。
  4. 另一个重要的部分是关于网络和安全(vpc.tf)。 在这里,我们创建了6个资源
    • aws_vpc;
    • aws_subnetaws_internet_gateway在这个vpc中;
    • 这个vpc中的aws_route_table,它通过创建的互联网网关路由;
    • aws_main_route_table_association,它将我们的vpc和路由表连接起来;
    • 我们vpc中的aws_security_group,它依赖于创建的子网。
  5. 我们还需要一个aws_iam_instance_profile,它保存在emr_cluster.tf模块的末尾。
  6. 最后,我们可以创建EMR集群本身 emr_cluster.tf。 我们应该在这里描述所有必需的属性,例如:name, release_label, applications, service_role (来自步骤 3), log_uri (来自步骤 2), ec2_attributes (来自步骤 2, 4, 5), 一个或多个实例组。 我还在那里添加了“step”部分,我在其中放置了 Hive 脚本来执行。

项目的完整代码 在这里

我很乐意收到关于如何简化此脚本的任何评论或建议。

关注点

当您单击按钮在AWS控制台中创建EMR集群时,幕后真正创建了多少资源是不明显的。 但了解正在发生的事情很有用。

© . All rights reserved.