E-MapReduce支持计算与存储分离,成本下降1倍

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

Hadoop一出生就是存储与计算在一起的,前几年面试题中都问,Hadoop怎么保证高性能呢?其中一个原因是存储不动,计算(code)动,不同于传统的集中式的存储模式。那我们为什么还要谈存储计算分离呢?众观历史,分久必合、合久必分,在计算机历史中也很类似,如今,也许到了计算与存储分离的阶段。后面我们以实际的case说明,分离的好处与劣势。

为什么呢?

先说一个笔者的,也应该是大家的经历:笔者家里的带宽是100mpbs,现在从来不保存电影,要看直接下载,基本几分钟就好了。这在几年前不可想象。
笔者也在《云上Hadoop之挑战》中分析了其中的挑战,其中有本地化的挑战:

screenshot
带宽的速度,特别是机房内带宽的速度,已经从1000mps、2000mps、10000mps,甚至100000mpbs。但是磁盘的速度基本没有太大的变化。
因为硬件的变化,带来了软件架构的变化。

基本架构

screenshot
架构其实比较简单,OSS作为默认的存储,Hadoop、Spark可以作为计算引擎直接分析OSS存储的数据。

screenshot
以上比较了计算与存储分离的优缺点。

  • 灵活性:在《E-MapReduce(Hadoop)10大类问题之集群规划》 一文中分析了集群规划问题,关键是匹配计算量与存储量,如果把计算与存储分离后,则 集群规划则变得简单很多,基本不需要估算未来业务的规模了,真正做到按需使用。
  • 成本:存储与计算分离后。按照 1 master 8cpu32g 6 slave 8cpu32g 10T数据量 估算大致为,成本下降一倍。在ecs自建的磁盘选择 高效云盘。
screenshot
  • 性能:大约下降10%以内,对于一般的应用是可以接受的。后续详细说明。

场景测试及数据

  • 测试的代码为:https://github.com/fengshenwu/spark-terasort/tree/master/src/main/scala/com/github/ehiggs/spark/terasort
  • 集群规模:1 master 4cpu 16g 、8 Slave 4cpu 16g、每个slave节点250G*4 高效云盘
  • 测试spark脚本
     /opt/apps/spark-1.6.1-bin-hadoop2.7/bin/spark-submit  --master yarn --deploy-mode cluster --executor-memory 3G --num-executors 30    --conf spark.default.parallelism=800   --class  com.github.ehiggs.spark.terasort.TeraSort  spark-terasort-1.0-jar-with-dependencies.jar /data/teragen_100g /data/terasort_out_100g
  • 测试的性能图
    screenshot
  • 时间对比
    screenshot

分析

我们可以看到,emr+oss后,成本节约了一半,但是性能下降基本可以忽略不计。从性能图上看,emr+oss对比ecs自建hadoop对比:

  • 整体的负载更低
  • 内存利用率基本一样
  • cpu使用低一些,特别是iowait与sys低很多,这是因为ecs自建有datanode及磁盘操作,需要占一些资源,增加cpu的开销。
  • 从网络看,因为sortbenchmark有两次读取数据,第一次是采样、第二次是真正的读取数据,开始网络比较高,随后shuffle+输出结果阶段,网络比ecs自建hadoop低一半左右,从网络来看,整体使用量基本持平。

也就是整体来讲,emr+oss比自建使用更少的资源,如果提高emr+oss的并发度,则时间上有可能超过ecs自建hadoop集群的。

哪些场景不适合

并不是所有的场景都适合使用emapreduce+oss,对于以下场景目前不适合:

  • 过多的 小的文件,比如小于10m,请合并小文件,当数据量在128m以上,使用emr+oss的性能最佳。
  • 频繁操作OSS元数据的操作,此块emr+oss正在优化,目前并不太适合。
HBase技术交流社区 - 阿里官方“HBase生态+Spark社区大群”点击加入:https://dwz.cn/Fvqv066s
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
100 3
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
52 1
|
4月前
|
存储 分布式计算 算法
"揭秘!MapReduce如何玩转压缩文件,让大数据处理秒变‘瘦身达人’,效率飙升,存储不再是烦恼!"
【8月更文挑战第17天】MapReduce作为Hadoop的核心组件,在处理大规模数据集时展现出卓越效能。通过压缩技术减少I/O操作和网络传输的数据量,不仅提升数据处理速度,还节省存储空间。支持Gzip等多种压缩算法,可根据需求选择。示例代码展示了如何配置Map输出压缩,并使用GzipCodec进行压缩。尽管压缩带来CPU负担,但在多数情况下收益大于成本,特别是Hadoop能够自动处理压缩文件,简化开发流程。
70 0
|
6月前
|
分布式计算 资源调度 数据处理
YARN支持哪些非基于MapReduce的计算模型?
【6月更文挑战第19天】YARN支持哪些非基于MapReduce的计算模型?
72 11
|
6月前
|
机器学习/深度学习 分布式计算 并行计算
MapReduce是一种用于并行计算的编程模型和处理大规模数据集的实现
MapReduce是一种用于并行计算的编程模型和处理大规模数据集的实现
88 0
|
7月前
|
分布式计算 并行计算 搜索推荐
Hadoop MapReduce计算框架
【5月更文挑战第10天】HadoopMapReduce计算框架
56 3
|
6月前
|
分布式计算 Java Hadoop
简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行
简单的java Hadoop MapReduce程序(计算平均成绩)从打包到提交及运行
61 0
|
7月前
|
存储 分布式计算 数据中心
MapReduce计算广州2022年每月最高温度
MapReduce计算广州2022年每月最高温度
|
分布式计算
使用MapReduce计算用户流量使用情况
使用MapReduce计算用户流量使用情况
使用MapReduce计算用户流量使用情况
|
存储 缓存 分布式计算
大数据计算的基石——MapReduce
MapReduce Google File System提供了大数据存储的方案,这也为后来HDFS提供了理论依据,但是在大数据存储之上的大数据计算则不得不提到MapReduce。 虽然现在通过框架的不断发展,MapReduce已经渐渐的淡出人们的视野,越来越多的框架提供了简单的SQL语法来进行大数据计算。但是,MapReduce所提供的编程模型为这一切奠定了基础,所以Google的这篇MapReduce 论文值得我们去认真的研读。
280 0
大数据计算的基石——MapReduce