玩转阿里云EMR三部曲-入门篇
作者:邓力,entobit技术总监,八年大数据从业经历,由一代hadoop入坑,深耕云计算应用领域,由从事AmazonEMR和阿里云EMR应用开发逐步转入大数据架构领域,对大数据生态及框架应用有深刻理解。
引言
笔者近几年工作以架构为主,本系列文章旨在从系统架构层面提供一定参考和帮助。
本文默认阅读文章的小伙伴们有MR/SPARK等基础,文中不再重复介绍相关知识
为什么选择阿里云EMR?
最近几年云计算行业发展迅猛,云计算服务商有诸如 阿里云,亚马逊,谷歌,微软,金山云,腾讯云,华为云。其中阿里云和亚马逊最亮眼。
亚马逊是云计算行业领头羊,文档全面,社区活跃,但是本地化做的很差,并且有跨时区交流障碍。
后起之秀阿里云在国内多城市拥有数据中心,优异的技术和快速的迭代能力能保证至少在大数据领域追上并反超亚马逊。
OSS和EMR
阿里云OSS全称是对象存储服务(object storage service),兼容hdfs存储服务,支持json,文本等类型。
详情可以查看官方文档
mapreduce是计算框架,hadoop自带的hdfs可以作为存储,但是hdfs是公有云存储方案的最优解吗?
传统hdfs缺点:
- 难以扩展
- 昂贵的SSD
- 受限的并发能力
- 需要自己维护
1/2/3可以用更多的投入解决,4需要更优秀的人才...,俨然HDFS并不是云计算服务下的最优解
OSS优点:
- 无限的扩展能力
- 按量付费和多种存储模式
- 原生高并发支持
- 不需要参与维护
基于以上优缺点,在公有云计算服务下,可以使用OSS替代HDFS作为文件存储服务
注: 可以使用osscmd/ossutil/restAPI/kafka等方式同步数据至OSS
阿里云EMR全称是阿里云elastic mapreduce,各位不要被字面疑惑只是和mapduce相关,实际阿里云EMR包含yarn,zk,spark等诸多组件,并且能融合flink,kafka等最新的开源框架,结合OSS服务可以产生1+1>2的效果
EMR优点:
- 托管集群
- 自动化运维
- 网页组件控制
(类cloudera) - 配套集群监控
- 完美兼容OSS
- 多样集群类别
EMR详细可以参考官方文档
EMR集群收费模式
简单来说分为两种模式:包月和按需
包月集群
集群按月/年付费,和传统自建集群类似。兼容OSS。
按需集群
按需集群,按照实际使用时长付费,目前收费单位为小时。
按需集群不再长时间持有造成空负载浪费,用户根据需要可以合理的启动按需集群执行mr/spark/hive等任务。易于用户节省开支。
EMR按需集群实战
1.创建集群模板
进入新版控制台,选择 数据开发->创建集群模板,提示如下页面
默认配置,进入下一步如图
选择北京C区-专有网络 并 设置 VPC和交换机(没有可以创建默尔值),安全组设置后继续机器配置选项,默认3台机器(masterx1,slavex2),进入下一步添加集群模板名,忽略高级配置,确认后成功创建集群模板
返回集群模板页面可以查看到刚才创建的集群
2.上传文件至OSS
本文以pi举例不用OSS文件。有需要(比如wordcount样例)可以借助与ossutil或者控制台上传
3.编写作业
本文以spark pi为例
进入 数据开发->新建项目 保存后 点击该项目名称进入 作业编辑页面
在左侧job栏内右键创建作业,作业类型为spark其他随意,作业内容为将要运行的spark命令参数
--class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 512m --num-executors 1 --executor-memory 1g --executor-cores 2 /usr/lib/spark-current/examples/jars/spark-examples_2.11-2.1.1.jar 10
点击保存作业为pi_test
4.创建并执行作业流
在左侧 选择 工作流设计->新建工作流,选择执行集群为创建的集群模板。
拖动spark并关联已保存的作业pi_test,拖动end,并按顺序链接start->pi_test->end节点。
保存并执行
5.查看集群和日志
在控制概览/集群管理可以查看启动中的集群,也可以查看 运行记录 中的作业日志
总结
优异的自动化创建集群让小伙伴可以专心于业务开发,不再纠结于hadoop版本,spark版本,甚至某些jar版本引发的各种奇怪问题,按需集群按小时计费模式替小伙伴们极大节省了开支,可以50个节点执行1小时,也可以3个节点执行5小时,非常灵活。可以保留更多精力和成本用于业务开发和维护,而把集群运维/存储(oss)问题托管给阿里云。
本文是一篇入门文章分享,后续还会有更多结合阿里云生态(不仅仅是EMR)的介绍和实践。
欢迎对EMR及相关技术感兴趣的同学进钉钉群一起讨论 :)