`
qindongliang1922
  • 浏览: 2188927 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117671
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126076
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:60034
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71403
社区版块
存档分类
最新评论

spark on yarn 如何集成elasticsearch

阅读更多

随着spark越来越流行,我们的很多组件都有可能和spark集成,比如说spark处理完的数据写入mysql,redis,或者hbase,elasticsearch,spark本身不包含db的依赖的,这就需要自己解决依赖的jar包,这里大致有两种处理思路处理依赖问题:

(1)使用maven将整个依赖打成一个fat的jar,这样所有的依赖都会在一个jar包,这样的好处就是一个jar包包含所有依赖,不需要额外考虑依赖的问题,但是弊端也非常明显如果依赖多的话jar包的体积会非常大超过100M都很正常,每次代码有小的变更都需要重新编译上传linux测试,如果你们win环境跟服务器中间是通过vpn连接的,每次只允许上传几kb的数据,那么你就完蛋了,等你上传100M的jar包完了,1个小时也过去了,而且中间如果vpn不稳定断了,那么恭喜你,你需要重新再来一次。一天的上班时间也就够你调试8次代码.....


(2)第二种方式是使用maven将核心代码打成一个jar,依赖的不打进去,但是需要自己把依赖的jar包在服务器上做成一份共享的,每次程序运行时都可以加载到,这样的工作只需要做一次即可,以后代码变更,只会提交核心代码,共享的依赖用在变化,这样的好处就是动静分离,核心代码体积非常小,只有只kb,每次编译重新打包上传linux运行速度非常快,依赖的jar虽然体积比较大,数量多但是我们只需要第一次将其全部收集到一个公共目录即可,程序运行时加载这个目录即可。这样的缺点就是如果框架对依赖由特殊要求,那么就需要了解这个框架如何加载jar包,才能正确。




在使用spark集成es时候,我使用的是上面的第二种方法,下面看下如何使用,集成es的jar包如下:

jackson-dataformat-smile-2.6.6.jar
hppc-0.7.1.jar
t-digest-3.0.jar
jsr166e-1.1.0.jar
lucene-core-5.5.0.jar
elasticsearch-2.3.4.jar


这里需要解释一下依赖jar包如何在spark中提交,大多数时候我们直接使用spark-submit提交命令加上--jars libs/*jar即可,少数时候会出现另外一种情况,明明libs目录下有这个jar包,但是在运行spark任务的时候一直报这个jar的类
找不到,如果出现这种情况,就需要在每台hadoop或者spark的机器上创建一个本地的jar目录,然后把那个出现问题的jar,放在这里面,最后在使用下面的几个参数配置此jar,这样以来这种问题基本就能解决。
 --driver-class-path $spark_jars \
 --driver-library-path $spark_jars \
 --conf spark.executor.extraClassPath=$spark_jars \
 --conf spark.executor.extraLibraryPath=$spark_jars \


在使用spark和es集成的时候guava的包就出现了上述的第二种情况,所以我在下面使用了第二种加载方式,最后调试通过。

最后需要注意的是,如果跟hive集成的时候,还用到了yarn-cluster模式,那么提交任务的时候,必须把hive-site.xml也提交上去,否则会报找不到hive的表异常。

最终提交spark任务到yarn集群上的命令如下:


jars=`echo /home/spark/x_spark_job/libs/*jar | sed 's/ /,/g'`

spark_jars=/opt/bigdata/jars/spark/guava-18.0.jar

/opt/bigdata/spark/bin/spark-submit  --class BuildIndexHistoryErrorQuest   --master yarn  --deploy-mode cluster   \
--executor-cores 1   --driver-memory 1g  --executor-memory 1g  --num-executors 6  \
--files /etc/hive/conf/hive-site.xml   --jars  $jars \
 --driver-class-path $spark_jars \
 --driver-library-path $spark_jars \
 --conf spark.executor.extraClassPath=$spark_jars \
 --conf spark.executor.extraLibraryPath=$spark_jars \
   /home/spark/x_spark_job/kp_diag-1.*jar 



spark这个集成相关依赖时,还是比较简单的,大部分时候我们使用--jars都能非常轻松的解决依赖问题,少数时候需要在每一台spark机器上上传jar包,除此之外在使用maven打包的时候散仙推荐使用第二种,不要把依赖和核心代码耦合在一个jar里,最好能分离,这样核心代码的体积会非常小方便调试。



有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。




0
0
分享到:
评论

相关推荐

    CCTC 2016 AdMaster卢亿雷:Spark的大数据应用实践

    此外,他还探讨了Spark与ElasticSearch结合的实践,以及在实时监控和跨屏分析等方面的案例。 首先,卢亿雷介绍了AdMaster作为一家数据公司,使用了包括Hadoop、HBase、MapReduce、Pig、Hive、Spark、Storm、Elastic...

    Spark分布式内存计算框架视频教程

    7.Spark on YARN 8.应用部署模式DeployMode 第二章、SparkCore 模块 1.RDD 概念及特性 2.RDD 创建 3.RDD 函数及使用 4.RDD 持久化 5.案例:SogouQ日志分析 6.RDD Checkpoint 7.外部数据源(HBase和MySQL) 8.广播...

    Structured Spark Streaming-as-a-Service with Hopsworks

    - **YARN (Yet Another Resource Negotiator):** A resource management layer that schedules resources for various Spark jobs and other applications running on the cluster. - **Kafka:** A distributed ...

    云计算大会演示PPT资料.zip

    Elastic曾勇-Elasticsearch & Bigdata Databricks范文臣-Dataset in Spark 聚效广告刘忆智-Beyond MLLibScale up Advanced Machine Learning on Spark 王栋-利用ELK监控Hadoop集群负载性能 梁堰波-Build Generalized...

    sparkzxl-cloud-learning:春云学习

    5. **监控与日志**:集成如Prometheus、Grafana等工具进行性能监控,以及使用ELK(Elasticsearch, Logstash, Kibana)堆栈进行日志收集和分析。 总的来说,"Sparkzxl-cloud-learning"项目涵盖了从大数据处理到...

    Hadoop实战培训教程(部署篇)_V3

    6. **停止ElasticSearch**:通过`bin/elasticsearch-plugin stop`命令停止ElasticSearch服务。 通过上述步骤,您可以成功地部署一个完整的Hadoop生态系统,并具备基本的大数据分析能力。这不仅有助于您更好地理解和...

    CDHHDPMAPRDKH星环组件比较.pdf

    18. **ESSQL**:ESSQL是大快科技开发的Elasticsearch的SQL接口,提供SQL查询Elasticsearch的能力。 19. **DK-NLP**:DK-NLP是大快科技的自然语言处理组件,用于文本分析和理解。 20. **DK-SPIDER**:DK-SPIDER是大...

    CDH-HDP-MAPR-DKH-星环组件比较.docx

    9. ESSQL是基于Elasticsearch的SQL工具,提供对搜索数据的SQL查询支持。 10. DK系列组件如DK-NLP、DK-SPIDER、DKM等是星环科技提供的特有服务,分别涉及自然语言处理、分布式爬虫和集群管理。 11. Apache Falcon、...

    CDHHDPMAPRDKH星环组件比较.docx

    【Transwarp】是中国星环科技开发的一系列组件,如DK-ESSQL(基于Elasticsearch的SQL工具)、DK-NLP(自然语言处理组件)、DK-SPIDER(分布式爬虫)、DKM(集群安装管理工具)等,这些组件构建了一个全面的大数据...

    CDHHDPMAPR-DKH-星环组件比较.pdf

    16. ESSQL:大快科技开发的Elasticsearch SQL工具,提供SQL接口查询Elasticsearch。 17. DK-NLP:大快的自然语言处理组件,用于文本分析和理解。 18. DK-SPIDER:大快的分布式爬虫工具,用于网络数据采集。 19. ...

    联想大数据平台.ppt

    此外,批处理框架如MapReduce和Tez,高性能处理框架Spark,以及分布式文件系统HDFS和搜索引擎Elastic Search等,共同构建了大数据处理的基础。同时,大数据分析也涉及到实时数据库、数据挖掘、机器学习算法库和可视...

    CDH-HDP-MAPR-DKH-星环组件比较.pdf

    18. **ESSQL**:大快科技开发的基于Elasticsearch的SQL查询工具,方便用户使用SQL查询Elasticsearch。 19. **DK-NLP**:大快科技提供的自然语言处理组件,用于文本分析和理解。 20. **DK-SPIDER**:大快科技的...

    企业大数据平台方案.pptx

    3. **技术架构**:大数据平台通常基于分布式计算框架,例如MapReduce、Hive、YARN、Ambari等,以及各种数据处理工具如Sqoop、Flume、Kafka、HBase、Elasticsearch、Impala和Spark。这些工具涵盖了数据集成、存储、流...

    大数据图标大全.docx

    12. **Logstash**: 数据收集、处理和转发工具,通常与Elasticsearch和Kibana一起构建ELK日志分析栈。 13. **Kibana**: 数据可视化工具,用于探索和展示Elasticsearch中的数据。 14. **Ranger**: 集中式安全管理...

    hmyjsmst.docx

    - 选择合适的数据存储方式,如Elasticsearch。 - **数据计算** - 实现实时数据处理和分析逻辑。 - **告警触发** - 设计告警逻辑,当满足特定条件时触发告警。 **3.6 Storm的框架** - Storm提供了一套完整的实时...

Global site tag (gtag.js) - Google Analytics