随着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),在后台留言咨询。
技术债不能欠,健康债更不能欠, 求道之路,与君同行。
分享到:
相关推荐
此外,他还探讨了Spark与ElasticSearch结合的实践,以及在实时监控和跨屏分析等方面的案例。 首先,卢亿雷介绍了AdMaster作为一家数据公司,使用了包括Hadoop、HBase、MapReduce、Pig、Hive、Spark、Storm、Elastic...
7.Spark on YARN 8.应用部署模式DeployMode 第二章、SparkCore 模块 1.RDD 概念及特性 2.RDD 创建 3.RDD 函数及使用 4.RDD 持久化 5.案例:SogouQ日志分析 6.RDD Checkpoint 7.外部数据源(HBase和MySQL) 8.广播...
- **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 ...
Elastic曾勇-Elasticsearch & Bigdata Databricks范文臣-Dataset in Spark 聚效广告刘忆智-Beyond MLLibScale up Advanced Machine Learning on Spark 王栋-利用ELK监控Hadoop集群负载性能 梁堰波-Build Generalized...
5. **监控与日志**:集成如Prometheus、Grafana等工具进行性能监控,以及使用ELK(Elasticsearch, Logstash, Kibana)堆栈进行日志收集和分析。 总的来说,"Sparkzxl-cloud-learning"项目涵盖了从大数据处理到...
6. **停止ElasticSearch**:通过`bin/elasticsearch-plugin stop`命令停止ElasticSearch服务。 通过上述步骤,您可以成功地部署一个完整的Hadoop生态系统,并具备基本的大数据分析能力。这不仅有助于您更好地理解和...
18. **ESSQL**:ESSQL是大快科技开发的Elasticsearch的SQL接口,提供SQL查询Elasticsearch的能力。 19. **DK-NLP**:DK-NLP是大快科技的自然语言处理组件,用于文本分析和理解。 20. **DK-SPIDER**:DK-SPIDER是大...
9. ESSQL是基于Elasticsearch的SQL工具,提供对搜索数据的SQL查询支持。 10. DK系列组件如DK-NLP、DK-SPIDER、DKM等是星环科技提供的特有服务,分别涉及自然语言处理、分布式爬虫和集群管理。 11. Apache Falcon、...
【Transwarp】是中国星环科技开发的一系列组件,如DK-ESSQL(基于Elasticsearch的SQL工具)、DK-NLP(自然语言处理组件)、DK-SPIDER(分布式爬虫)、DKM(集群安装管理工具)等,这些组件构建了一个全面的大数据...
16. ESSQL:大快科技开发的Elasticsearch SQL工具,提供SQL接口查询Elasticsearch。 17. DK-NLP:大快的自然语言处理组件,用于文本分析和理解。 18. DK-SPIDER:大快的分布式爬虫工具,用于网络数据采集。 19. ...
此外,批处理框架如MapReduce和Tez,高性能处理框架Spark,以及分布式文件系统HDFS和搜索引擎Elastic Search等,共同构建了大数据处理的基础。同时,大数据分析也涉及到实时数据库、数据挖掘、机器学习算法库和可视...
18. **ESSQL**:大快科技开发的基于Elasticsearch的SQL查询工具,方便用户使用SQL查询Elasticsearch。 19. **DK-NLP**:大快科技提供的自然语言处理组件,用于文本分析和理解。 20. **DK-SPIDER**:大快科技的...
3. **技术架构**:大数据平台通常基于分布式计算框架,例如MapReduce、Hive、YARN、Ambari等,以及各种数据处理工具如Sqoop、Flume、Kafka、HBase、Elasticsearch、Impala和Spark。这些工具涵盖了数据集成、存储、流...
12. **Logstash**: 数据收集、处理和转发工具,通常与Elasticsearch和Kibana一起构建ELK日志分析栈。 13. **Kibana**: 数据可视化工具,用于探索和展示Elasticsearch中的数据。 14. **Ranger**: 集中式安全管理...
- 选择合适的数据存储方式,如Elasticsearch。 - **数据计算** - 实现实时数据处理和分析逻辑。 - **告警触发** - 设计告警逻辑,当满足特定条件时触发告警。 **3.6 Storm的框架** - Storm提供了一套完整的实时...