泰为基于EMR的考量与实践

本文涉及的产品
对象存储 OSS,20GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 阿里云EMR是基于 Hadoop 的生态环境来搭建,同时可以跟阿里云的对象存储服务OSS等云服务进行无缝数据交换,方便用户将数据在存储平台和计算平台之间进行输入输出,以满足不同业务类型的需要,所以对阿里云EMR充满期待。

关于作者:武基鹏,主要从事大数据平台产品的技术工作;负责设计、构建和优化基于HDFS/HBase的存储平台架构;负责整体提升Hadoop/Hbase等集群的高可用性、高性能、高扩展特性;负责对公司的Apache Hadoop1.2、CDH4及CDH5集群的部署、监控、调优和运维;此外,还精通Java、Shell、Python编程和管理SQL数据库及熟悉NOSQL的经验。

1.58元/小时起快速体验 Hadoop & Spark ,为你助力大数据计算

阿里云EMR是基于 Hadoop 的生态环境来搭建,同时可以跟阿里云的对象存储服务OSS等云服务进行无缝数据交换,方便用户将数据在存储平台和计算平台之间进行输入输出,以满足不同业务类型的需要,所以对阿里云EMR充满期待。

screenshot

在登录和打开阿里云 EMR的console web界面时,被阿里这种简约扁平化设计风格深深吸引着。
其中阿里云EMR的”概览、集群、作业、执行计划、报警、帮助”六大模块,操作起来简单易上手,但其底层实现的架构设计必定很复杂。其中阿里云EMR的各种文档很齐全,很方便我们能够快速了解和迅速部署我们自己的EMR集群。

screenshot

深究ETL业务逻辑

在计划迁移Rundeck上的Product Job到阿里云EMR上,一定要先充分地了解现有业务的处理逻辑、Job脚本代码以及集群组件Hadoop、Hive环境等。为了不影响现有产品环境的稳定性,所以一般要先选择Stage的Job进行迁移,调试。其ETL业务在ETL Cluster的基本架构如图所示:

screenshot

调研阿里云EMR产品

在接下来的工作中,仔细调研阿里云EMR产品,发现有这么四点优势吧。

  • 有易用性 ;
  • 有和OSS、RDS等产品深度结合;
  • 有较高的安全性,主要整合了阿里云 RAM 资源权限管理系统,通过主子账号对服务权限进行隔离;
  • 其实还有更重要一点,在 [2016云栖大会] 上,其价格再次降低,更加受企业青睐。

由于我们的Product Job是每天凌晨run,所以阿里云EMR的按需创建方案很适合我们当前的ETL 业务,而且当Job run结束时,无论执行计划是否成功,都会释放集群资源,降低企业的cost。

定制化所属自己的集群环境

当前我们的业务是Log ETL 离线处理,当前集群环境是CDH5.4.8(Hadoop2.6 + Hive1.1.0),其中在阿里云EMR集群中,只提供Apache Hadoop2.7.2+Hive2.0.0组合,由于业务环境的jar包和hive sql的某些特性是Hive低版本特有的,高版本现在处于bug中,所以与阿里云EMR的Hive2.0.0兼容效果不是很好。
所以这里要感谢@阿里封神提供一个非常赞的idea给我,是将EMR集群自带Hive2.0.0给替换成我们特定hive-1.2.1-emr版本。需将该版本打包存放在OSS存储上,因为OSS到EMR集群,下载速度无带宽限制,非常迅速,最终我们选择Apache Hive版本为1.2.1,接下来就是调试踩坑和打补丁编译版本。所以这块时间花费整个迁移项目时间的1/2。

screenshot

迁移Stage Job至阿里云EMR的流程

EMR集群的机器配置:

  • 4 核 16GB / SSD云盘 / 40G X 1 / series II 1台(Master)
  • 4 核 16GB / SSD云盘 / 40G X 4 / series II 3台(Core)

其具体流程:

  • 在作业tab页,创建4组共16个job;
  • 在执行计划tab页,创建执行计划,其中需要配置如下
    •调度策略为每天凌晨运行

•关联集群为按需创建集群
•作业配置为按顺序绑定16个job
•启动报警模块,推送消息给Administrator
screenshot

在迁移过程,有几点建议:

  • 先选择按量付费创建好集群,切不可在执行计划中按需创建集群;
  • 开启 运行日志,方便跟踪查看log;
  • 在创建作业时,注意oss与ossref功能上区别;
  • 在shell脚本,每行是要加”;”作为结尾;
  • 在shell脚本,假如最后一行假如有 chown/chmod命令,虽然log日志显示错误和该作业状态为失败,但其实 该命令是执行成功的。所以我们一般在最后一行添加”echo “end script.”;”;
  • 在创建执行计划时,按照作业的功能,分组来配置作业计划,便于更加好的调试;
  • 可以直接ssh登录header(master)主机上,手工执行脚本或者命令来调试。

screenshot

screenshot

验证阿里云EMR Job Run数据的准确性
当迁移好Stage job,那么接下来要验证rundeck job跑的数据结果和阿里云EMR 的job跑的结果,一般我们的开发人员或者Owner采取两种方法来验证。

  • 对比结果文件的数据行数;
  • 使用Beyond Compare 4工具,将结果文件的数据内容对比;
    (一般抽检第一行和最后一行数据)

迁移Product Job 至阿里云EMR和验证结果数据准确性
接下来迁移Rundeck Product Job至阿里云EMR上,其实主要修改两点:

  • 将脚本的传入参数由stage改为prod;
  • 修改作业的名称、参数路径由stage改为prod。
    然后每个项目的job run一次和rundeck的job数据进行严格的验证准确性。

停止前身Rundeck Job,正式调度阿里云EMR的执行计划
将Rundeck的Product Job暂停调度,停止集群服务,释放CPU和Memory资源。
然后正式配置、调度阿里云EMR的ETL Product的 执行计划XXX_Product-EMR_ETL。
screenshot

其ETL业务在EMR的基本架构如图所示:
screenshot

未来规划
目前,泰为信息科技(上海)有限公司的中国区项目资源基本都使用了阿里云的ECS机器资源,OSS存储资源,负载均衡,专有网路VPC等;在未来,我司会根据项目的需求和管理性等,会继续调研迁移项目,上云数据库RDS、Redis和数加等产品。

小小总结
从公司方面来说:

  • 减少运维人员的维护成本,更加易用;
  • 每天调度EMR的Product执行计划,每月共只需约295元,而之前搭建ETL集群环境的5台ECS机器资源,每月共需3625元,大大降低地公司的项目费用;
  • 释放集群机器资源,降低成本;
  • 可以弹性调整集群规模;
  • 可靠性和可用性得到了保证(SLA为99.999%);
  • 加强用户作业信息的安全性;
  • 提高管理控制,并建立战略继续提高生产力;

从个人方面来说:

  • 对业务逻辑有着深刻了解;
  • Hive手工打补丁和编译版本;
  • 对大数据这块有着更深刻的理解;

从我们对阿里云EMR希望方面来说:

  • 我们的作业由于数据依赖关系,应该为并行配置,但当前配置只为串行配置;
  • 作业失败,能够有retry机制;
  • 作业数量太多,能够时间点备份(导出)和恢复;
  • 作业列表提供 project来分组,毕竟数量太多,现在只能在作业名称上加stage,product来区别;
  • 能够提供邮件预警通知;
  • 增加对EMR不同版本的选择;

最后总结一下,阿里云EMR从2015年11月发布EMR-1.0.0版本以来,至今才1年不到,已经升级为EMR-2.1.0版本,增加了许多的功能,如用户作业信息加密、与OSS存储无私接缝等等。无论是在开发者社区还是在微信阿里云大数据群组里,EMR的开发者们积极与我们沟通,及时认真回答我们提出的每一个问题,及时听取我们用户的需求。所以我们有理由地相信,阿里云EMR在未来,会越走越远,越做越好!

参考文档

ossref:// 同样是指向一个 OSS 的路径,不同的是它会将对应的代码资源下载到本地,然后将命令行 中的路径替换为本地路径。它是用于更方便地运行一些本地代码,而不需要登录到机器上去上传代码和依赖的资源包。
注意: ossref 不可以用来下载过大的数据资源,否则会导致集群作业的失败。

泰为公司成立于1999年,总部坐落于美国硅谷所在地加利福尼亚的桑尼维尔市。泰为公司是全球无线位置领域的领跑者之一,其手机导航产品曾服务于无线运营商AT&T, Sprint, CMCC等。Telenav自有品牌Scout产品,是当今能与Google map和Apple map竞争的为数不多的产品。也是全球车载导航产品的供应商,目前其导航产品正在Ford等世界顶级车厂中进行商用服务。

screenshot

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
10天前
|
分布式计算 Java Serverless
EMR Serverless Spark 实践教程 | 通过 spark-submit 命令行工具提交 Spark 任务
本文以 ECS 连接 EMR Serverless Spark 为例,介绍如何通过 EMR Serverless spark-submit 命令行工具进行 Spark 任务开发。
168 0
EMR Serverless Spark 实践教程 | 通过 spark-submit 命令行工具提交 Spark 任务
|
24天前
|
分布式计算 Hadoop Serverless
数据处理的艺术:EMR Serverless Spark实践及应用体验
阿里云EMR Serverless Spark是基于Spark的全托管大数据处理平台,融合云原生弹性与自动化,提供任务全生命周期管理,让数据工程师专注数据分析。它内置高性能Fusion Engine,性能比开源Spark提升200%,并有成本优化的Celeborn服务。支持计算存储分离、OSS-HDFS兼容、DLF元数据管理,实现一站式的开发体验和Serverless资源管理。适用于数据报表、科学项目等场景,简化开发与运维流程。用户可通过阿里云控制台快速配置和体验EMR Serverless Spark服务。
|
2月前
|
存储 人工智能 运维
轻喜到家基于 EMR-StarRocks 构建实时湖仓分析平台实践
本文从轻喜到家的历史技术架构与痛点问题、架构升级需求与 OLAP 选型过程、最新技术架构及落地场景应用等方面,详细介绍了轻喜到家基于 EMR-StarRocks 构建实时湖仓分析平台实践经验。
1119 0
轻喜到家基于 EMR-StarRocks 构建实时湖仓分析平台实践
|
11月前
|
存储 分布式计算 大数据
CommunityOverCode Asia 精彩回顾|阿里云开源大数据 EMR 技术实践分享
阿里云开源大数据 EMR 在 CommunityOverCode Asia 的精彩分享。
612 0
|
SQL 分布式计算 监控
阿里云EMR自定义日志投递与使用实践分享
EMR目前支持了日志管理,即日志客户SLS投递的功能,基于此功能,客户可以将需要的各种大数据组件日志收集到自身SLS中,做查询和分析。基于此功能,客户可以自定义日志路径、规则,对集群设备上的日志自行接收和消费。本文以采集指标文件为例,帮助您快速上手自定义日志投递与使用。
404 1
阿里云EMR自定义日志投递与使用实践分享
|
SQL 消息中间件 分布式计算
基于阿里云 CloudMonitor云监控自定义监控大盘对 EMR 自定义监控实践
本文旨在分享 EMR 平台大数据服务基于阿里云 CloudMonitor 的监控实践,给客户提供除了 EMR 平台默认监控以外,自建监控方式,适用于统一多个阿里云服务的监控监控场景。
771 2
基于阿里云 CloudMonitor云监控自定义监控大盘对 EMR 自定义监控实践
|
存储 分布式计算 Cloud Native
阿里云 EMR 基于 Apache DolphinScheduler 产品技术实践和社区贡献
本文整理自阿里云 EMR 数据开发团队负责人孙一凡(Evans 忆梵),在 Apache Spark & DS Meetup 的分享
阿里云 EMR 基于 Apache DolphinScheduler 产品技术实践和社区贡献
|
存储 分布式计算 资源调度
Spark on k8s 在阿里云 EMR 的优化实践
本文整理自阿里云技术专家范佚伦在7月17日阿里云数据湖技术专场交流会的分享。
Spark on k8s 在阿里云 EMR 的优化实践
|
存储 SQL 缓存
阿里云EMR Remote Shuffle Service在小米的实践,以及开源
阿里云EMR自2020年推出Remote Shuffle Service(RSS)以来,帮助了诸多客户解决Spark作业的性能、稳定性问题,并使得存算分离架构得以实施,与此同时RSS也在跟合作方小米的共建下不断演进。本文将介绍RSS的最新架构,在小米的实践,以及开源。
3115 0
|
存储 SQL 缓存
阿里云EMR Remote Shuffle Service在小米的实践
阿里云EMR自2020年推出Remote Shuffle Service(RSS)以来,帮助了诸多客户解决Spark作业的性能、稳定性问题,并使得存算分离架构得以实施,与此同时RSS也在跟合作方小米的共建下不断演进。本文将介绍RSS的最新架构,在小米的实践,以及开源。
阿里云EMR Remote Shuffle Service在小米的实践