玩转阿里云EMR三部曲-中级篇 集成自有服务

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 玩转阿里云EMR三部曲-中级篇 集成自有服务作者:邓力,entobit技术总监,八年大数据从业经历,由一代hadoop入坑,深耕云计算应用领域,由从事亚马逊EMR和阿里云EMR应用开发逐步转入大数据架构领域,对大数据生态及框架应用有深刻理解。

玩转阿里云EMR三部曲-中级篇 集成自有服务

作者:邓力,entobit技术总监,八年大数据从业经历,由一代hadoop入坑,深耕云计算应用领域,由从事亚马逊EMR和阿里云EMR应用开发逐步转入大数据架构领域,对大数据生态及框架应用有深刻理解。

引言

笔者近几年工作以架构为主,本系列文章旨在从系统架构层面提供一定参考和帮助。
本文默认阅读文章的小伙伴们有MR/SPARK等基础,文中不再重复介绍相关知识。
本文为玩转阿里云EMR系列第二篇,第一篇文章为基础介绍和样例实战,可以查看玩转阿里云EMR三部曲-入门篇

集成自有服务与EMR

从2016公测到最新的EMR版本,成本控制与集成服务一直是我们需要解决的难题。成本可以通过按量集群控制,按照需求启动合理规模的集群并按小时付费。于是自有服务集成是关键问题

自有服务

各公司或者组织内部提供API接口/调度响应及其他类型的服务

集成场景
  • 资源隔离
  • 弹性扩展
  • 高并发
  • 低成本

资源隔离:离线计算使用的自有服务不能和产品线公用,否则导致高并发情况下生产线体验下降
弹性扩展:随着离线计算的规模对应伸缩
高并发:提供高并发访问支持
低成本:成本可以按小时计费,并且没有额外费用

架构分析

平台下自有solr集群,离线计算任务需要利用solr集群查询获取文本相似的内容,直接使用生产线集群会降低用户访问体验甚至导致生产环境不可用。

那么是否可以利用EMR集成自有solr集群?

EMR引导操作

在启动EMR集群前可以初始化用户自定义脚本,创建用户自有服务或者环境。详细参考引导操作

引导操作分为两种类型:

  • 自定义操作
    用户完全自定义脚本类型,任意服务或者环境都可以指定安装
  • 运行条件
    基于EMR官方提供的run-if.py按条件执行

技巧:

  • 自定义操作下可以基于节点类型并安装指定的应用和服务
  • 自定义脚本内文件可以使用OSS存放
集成方案
  1. 利用引导操作在EMR集群MASTER服务器安装solr服务
  2. 利用引导操作在EMR集群所有节点安装solr服务

其中1只对于MASTER节点有高配置需求,2对于所有节点有高配置要求。1成本更低,2并发更高。根据实际按需选择。
这里选择方案2
注:使用方案1时需要判断节点类型

实现细节

基于方案2,利用EMR按量需求操作如下:

  1. 修改集群模板配置,选择高配机型,建议使用16C64G实例。在集群模板高级设置中,添加引导操作并保存
    1
  2. 编写installSolr.sh并上传OSS

    #! /bin/bash
    downloadJar() {
      mkdir  /mnt/work
      osscmd --id=xxxx --key=yyyy -H oss-cn-beijing-internal.aliyuncs.com --replace=true downloadallobject oss://zzz/jar/ /mnt/work/
    }
    
    installENV() {
      cd /mnt/work/lib/
      tar -xzf solr.tar.gz
      cd solr/bin
      ./solr start -p 8983
    }
    
    main() {
      downloadJar
      installENV
    }
    
    main
  3. 复制solr服务打包为tar.gz文件并上传至对应步骤2中的OSS://zzz/jar/路径

    cp -r solr targetDir/
    cd targetDir/
    tar -czf solr.tar.gz solr
    osscmd put solr.tar.gz oss://zzz/jar/
  4. 编写spark任务调用solr接口数据并验证返回值
    由于采用的方案2,每个集群节点都有solr服务,此时可以利用本机的节点查询, 核心代码部分

      #! /usr/bin/python
      import requst, sys
      from pyspark import SparkContext
      from pyspark import SparkConf
      from pyspark.sql import SQLContext
      ...
      def solrCaller(item):
        keyword=item['keyword']
        r=request.post('http://127.0.0.1:8983?q='+keyword)
        return r.text
    
      if __name__ == "__main__":
          reload(sys)
          sys.setdefaultencoding('utf-8')
          conf = SparkConf().setAppName("solr spark with oss")
          conf = conf.set("spark.hadoop.fs.oss.impl", "com.aliyun.emr.fs.oss.OssFileSystem")
          sc = SparkContext(conf=conf)
          sqlContext = SQLContext(sc)
          indexRDD = sc.textFile("oss://xxx:yyy@zzz/data/")
          indexSQL = sqlContext.read.json(indexRDD)
          indexDF = sqlContext.sql("select keyword, id from indexSQL")
          indexDF.map(solrCaller).collect()
      ...
  5. 选用solr集成模板并执行作业流

更多思考

以上是使用过程中遇到的问题及解决方案,该方案还有提升空间,比如利用节点随机请求数据,可以进一步优化资源。

除次之外还可以利用引导操作安装各种环境,比如python依赖的分词包,mysql驱动等等。
如果集群无法满足并发需求,可以继续增加节点。包月集群可以使用弹性伸缩功能

总结:

利用EMR引导操作可以使用自定义脚本安装任意自有服务和环境,隔离计算和生产资源,并在极致成本控制下最大化并发和可扩展性。完整的自定义设计可以满足任意自有服务构建的集成需要。

欢迎对EMR及相关技术感兴趣的同学进钉钉群一起讨论 :)

4

相关实践学习
基于EMR Serverless StarRocks一键玩转世界杯
基于StarRocks构建极速统一OLAP平台
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
相关文章
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
Voice-Pro:开源AI音频处理工具,集成转录、翻译、TTS等一站式服务
Voice-Pro是一款开源的多功能音频处理工具,集成了语音转文字、文本转语音、实时翻译、YouTube视频下载和人声分离等多种功能。它支持超过100种语言,适用于教育、娱乐和商业等多个领域,为用户提供一站式的音频处理解决方案,极大地提高工作效率和音频处理的便捷性。
97 10
Voice-Pro:开源AI音频处理工具,集成转录、翻译、TTS等一站式服务
|
1月前
|
安全 Java API
【三方服务集成】最新版 | 阿里云短信服务SMS使用教程(包含支持单双参数模板的工具类,拿来即用!)
阿里云短信服务提供API/SDK和控制台调用方式,支持验证码、通知、推广等短信类型。需先注册阿里云账号并实名认证,然后在短信服务控制台申请资质、签名和模板,并创建AccessKey。最后通过Maven引入依赖,使用工具类发送短信验证码。
【三方服务集成】最新版 | 阿里云短信服务SMS使用教程(包含支持单双参数模板的工具类,拿来即用!)
|
1月前
|
存储 Prometheus 运维
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案。该集成结合了ARMS的基础设施监控能力和Prometheus的灵活配置及社区支持,实现了全面、精准的系统状态、性能和错误监控,提升了应用的稳定性和管理效率。通过统一的数据视图和高级查询功能,帮助企业有效应对云原生挑战,促进业务的持续发展。
39 3
|
2月前
|
SQL 存储 缓存
阿里云EMR StarRocks X Paimon创建 Streaming Lakehouse
本文介绍了阿里云EMR StarRocks在数据湖分析领域的应用,涵盖StarRocks的数据湖能力、如何构建基于Paimon的实时湖仓、StarRocks与Paimon的最新进展及未来规划。文章强调了StarRocks在极速统一、简单易用方面的优势,以及在数据湖分析加速、湖仓分层建模、冷热融合及全链路ETL等场景的应用。
326 8
阿里云EMR StarRocks X Paimon创建 Streaming Lakehouse
|
2月前
|
IDE API 开发工具
沉浸式集成阿里云 OpenAPI|Alibaba Cloud API Toolkit for VS Code
Alibaba Cloud API Toolkit for VSCode 是集成了 OpenAPI 开发者门户多项功能的 VSCode 插件,开发者可以通过这个插件方便地查找API文档、进行API调试、插入SDK代码,并配置基础环境设置。我们的目标是缩短开发者在门户和IDE之间的频繁切换,实现API信息和开发流程的无缝结合,让开发者的工作变得更加高效和紧密。
沉浸式集成阿里云 OpenAPI|Alibaba Cloud API Toolkit for VS Code
|
1月前
|
安全 测试技术 数据安全/隐私保护
原生鸿蒙应用市场开发者服务的技术解析:从集成到应用发布的完整体验
原生鸿蒙应用市场开发者服务的技术解析:从集成到应用发布的完整体验
|
2月前
|
SQL 存储 缓存
降本60% ,阿里云 EMR StarRocks 全新发布存算分离版本
阿里云 EMR Serverless StarRocks 现已推出全新存算分离版本,该版本不仅基于开源 StarRocks 进行了全面优化,实现了存储与计算解耦架构,还在性能、弹性伸缩以及多计算组隔离能力方面取得了显著进展。
405 6
|
2月前
|
SQL 存储 缓存
阿里云EMR StarRocks X Paimon创建 Streaming Lakehouse
讲师焦明烨介绍了StarRocks的数据湖能力,如何使用阿里云EMR StarRocks构建基于Paimon的极速实时湖仓,StarRocks与Paimon的最新进展及未来规划。
144 3
|
2月前
|
安全 Java 测试技术
ToB项目身份认证AD集成(二):快速搞定window server 2003部署AD域服务并支持ssl
本文详细介绍了如何搭建本地AD域控测试环境,包括安装AD域服务、测试LDAP接口及配置LDAPS的过程。通过运行自签名证书生成脚本和手动部署证书,实现安全的SSL连接,适用于ToB项目的身份认证集成。文中还提供了相关系列文章链接,便于读者深入了解AD和LDAP的基础知识。
|
2月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用