美文网首页数据仓库建设玩转数据ETL
AWS EMR 搭建数据处理集群(一)

AWS EMR 搭建数据处理集群(一)

作者: 机械师Finch | 来源:发表于2018-11-22 06:42 被阅读62次

    AWS介绍

    AWS EMR 搭建数据处理集群-一-标题头

    官方:Amazon Web Services (AWS) 是一个安全的服务平台,提供计算能力、数据库存储、内容交付以及其他功能来帮助实现业务扩展和增长。

    其实AWS就是一个云服务平台,很多之前线下本地服务器上构建的通用服务环境,都可以在云端找到对应的AWS服务,对中小企业快速构建服务提供支撑;

    AWS-EMR服务介绍

    AWS的EMR服务为云端托管的集群平台,个人/企业构建的大数据集群可以由该平台进行管理,集群服务可以通过配置选择目标服务,也可以通过自定义引导方式安装其他服务,构建集群过程和使用过程非常方便,较早在做大数据项目时是使用移动机房N台物理服务器进行的集群构建,采用AMBARI+HDP的方式进行日常管理,包括操作,监控,告警等,每次安装第三方服务时也是非常麻烦,还有重启amb server,数据量较低,长期费用运行的情况下还是使用云端服务较为方便;

    在引用一段官方描述:

    Amazon EMR 是一个托管集群平台,可简化在 AWS 上运行大数据框架 (如 Apache HadoopApache Spark ) 以处理和分析海量数据的操作。借助这些框架和相关的开源项目 (如 Apache Hive 和 Apache Pig)。您可以处理用于分析目的的数据和商业智能工作负载。此外,您可以使用 Amazon EMR 转换大量数据和将大量数据移入和移出其他 AWS 数据存储和数据库,如 Amazon Simple Storage Service (Amazon S3) 和 Amazon DynamoDB。

    文档目标

    这里通过在EMR-HADOOP集群上处理一个CSV文本文件,对集群操作进行宏观了解;
    操作大致分为如下几层:

    • 前期准备工作
    • 集群构建的配置工作
    • 集群启动与监控

    前期准备工作

    干活脚本

    HIVE外部表参考如下:

    #region table
    CREATE EXTERNAL TABLE IF NOT EXISTS RPT_REGION(
      REGION_ID     STRING,
      REGION_NAME   STRING,
      REGION_TYPE   INT,
      COUNTY_ID     STRING,
      CITY_ID       STRING,
      REGION_DESC   STRING,
      CREATE_TIME   STRING
    )ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE
    LOCATION '${INPUT}/data/region';
    
    #region_event table
    CREATE EXTERNAL TABLE IF NOT EXISTS RPT_REGION_EVNET(
      REIGON_ID   STRING
      RULE_ID     STRING,
      RULE_NAME   STRING,
      REGION_TYPE   INT,
      ACTIVE_TYPE   INT,
      ENABLE        INT,
      STAY_TIME     STRING,
      STORE_TYPE    STRING,
      CREATE_TIME   STRING
    )ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE
    LOCATION '${INPUT}/data/region_event';
    

    数据处理逻辑参考如下:

    INSERT OVERWRITE DIRECTORY '${OUTPUT}/' ROW FORMAT DELIMITED FIELDS TERMINATED BY  ','
    SELECT a.REGION_ID,
           a.REGION_NAME, 
           COUNT(b.RULE_ID) count 
    FROM 
         RPT_REGION a, RPT_REGION_EVENT b  
    WHERE 
         a.REGION_ID = b.REGION_ID
    GROUP BY 
         a.REGION_ID,
         a.REGION_NAME;
    

    以上部分可以写在一个脚本内region-hive.sql

    输入数据

    集群通过与S3进行交互读取原始csv文件信息,事件规则数据如下:
    区域信息数据文件: region.csv

    10000001,TESTREG01,5,city001,county001,20180518123400
    10000002,TESTREG02,7,city001,county001,20180518123400
    10000003,TESTREG01,5,city001,county002,20180518123400
    10000004,TESTREG02,7,city001,county003,20180518123400
    

    区域事件信息数据文件: region_event.csv

    10000001,88000001,1,0,1,300,local_kafka,20180518123400
    10000001,88000002,1,1,1,300,local_kafka,20180518123400
    10000001,88000003,1,0,1,300,local_kafka,20180518123400
    10000002,88000001,1,1,1,400,local_kafka,20180518123400
    10000002,88000002,1,0,1,400,local_kafka,20180518123400
    10000003,88000001,1,1,1,300,local_kafka,20180518123400
    10000004,88000001,1,1,1,600,local_kafka,20180518123400
    10000004,88000002,1,0,1,600,local_kafka,20180518123400
    10000004,88000003,1,0,1,600,local_kafka,20180518123400
    10000004,88000004,1,0,1,600,local_kafka,20180518123400
    

    输出数据

    通过汇总计算,统计出10000001区域下定义的事件数量,并对计算结果进行存储
    (以上统计结果输出到S3存储单元内,文件进行保存)

    S3资源设置

    存储桶
    在S3上创建存储桶,创建存储桶时注意选择与集群创建选择同一地理区域,测试过程全程使用宁夏区域,下图可以看到我创建了一个region_emr_test的存储桶(S3的实践在做单独的博文,这里使用默认的权限等参数即可)

    AWS-EMR-1-S3资源设置

    输入输出
    在region-emr-test存储桶内创建3个目录,分别为script/datainput/dataoutput/log

    AWS-EMR-1-输入输出

    进入datainput目录,创建如下子目录:
    datainput/data/rpt_region -> 区域数据目录
    datainput/data/rpt_region_event -> 区域事件数据目录

    数据上传
    将准备好的文件上传至对应的目录:
    region-hive.sql 上传至 region-emr-test/script目录
    region.csv 上传至 region-emr-test/datainput/data/rpt_region目录
    region_event.csv 上传至 region-emr-test/datainput/data/rpt_region_event目录

    登录秘钥

    创建ssh秘钥对,方便后续登录集群节点;
    选择目标区域,这里选用了宁夏区的相关服务,EC2->网络与安全->秘钥对,点击‘创建秘钥对’


    AWS-EMR-1-登录秘钥

    成功创建秘钥对后,会下载一个emr-scr-ssh.pem.text的秘钥文件,要保存好,后续再AWS CLI登录的时候会携带使用作为认证依据;

    通过HIVE服务对该样本数据进行处理,然后将结果数据通过EMRFS写入AWS的S3对象存储单元进行保存;

    集群构建的配置工作

    目标

    通过使用EMR配置模板规划出我们预使用的集群服务所具备的资源与数据处理流;服务人口参考如下,里面有之前使用的临时集群;


    AWS-EMR-1-配置工作

    集群配置 - 步骤模式配置

    基础设置

    1. 设置S3日志的输出目录,方便后续观察日志,这里选择目录可以直接选择S3上面已经创建的s3://region-emr-test/log/
    2. 启动模式选择步骤执行,可以定制数据处理步骤;
    3. 步骤类型选择-> Hive程序,表示为该集群添加HIVE处理步骤,这里也是数据的处理流程;
      通过以上设置后如图所示:


      AWS-EMR-1-基础设置

    HIVE详细配置
    HIVE的详细配置主要涉及输入,输出,逻辑脚本文件

    1. 脚本S3位置 -> s3://region-emr-test/script/region-hive.sh
    2. 输入S3位置 -> s3://region-emr-test/datainput/
    3. 输出S3位置 -> s3://region-emr-test/dataoutput/
      自变量,主要是针对HIVE逻辑执行过程中相关变量的设置,如打开分区模型,修改锁机制,调整相关限制等等;
      出现故障时这里选择继续 - 具体问题可以通过日志进行查看;
      AWS-EMR-1-详细配置

    软硬件配置

    1. 软硬件配置直接使用最新发行版本即可,每个EMR发行版本对应的hadoop套装组件版本各不相同;
    2. 硬件配置使用也同样使用默认,m4.large在宁夏区域性价比很高,实例数量这里采用1个主管理节点,2个核心节点,共3个;


      AWS-EMR-1-软硬件配置

    访问安全配置
    这里目前采用默认配置即可,定制化配置需要结合实际使用才有意义,后续再开文聊;

    AWS-EMR-1-安全配置

    通过以上配置,就完成了步骤模式的集群配置模板创建工作,点击‘创建集群’,EMR即可通过该配置实例进行集群的相关初始化操作;


    AWS-EMR-1-集群初始化

    待执行的步骤


    AWS-EMR-1-集群步骤

    集群配置 - 集群模式配置(停止保护)

    待补充

    网络VPC配置

    待补充

    结果观察

    异常类日志查看
    通过任务步骤的日志文件选项观察stderr/stdout相关日志

    AWS-EMR-1-日志查看

    处理后的步骤状态会转换为已完成


    AWS-EMR-1-步骤完成

    (期间出现了脚本问题,集群会终止,这种情况下可以修正脚本问题并同步脚本至S3,并克隆一个新的集群进行数据处理)
    处理结束后可以看到S3的输出目录上面出现了结果文件,点击文件,并在属性中点击‘选择范围’
    可以预览结果文件


    AWS-EMR-1-结果检查

    相关文章

      网友评论

        本文标题:AWS EMR 搭建数据处理集群(一)

        本文链接:https://www.haomeiwen.com/subject/rxccqqtx.html