Apache Spark

CDH在yarn上运行程序乱码

▼魔方 西西 提交于 2020-07-24 02:32:37
参考文章: CDH在yarn上运行程序乱码 安装完成CDH后,在yarn上不管是使用hive运行mapreduce还是spark,中文全都会乱码。 1. linux的环境变量设置字符集 vi /etc/profile export LANG=zh_CN.UTF-8 2. 修改mapreduce的环境变量 hadoop-env.sh export HADOOP_OPTS="-server -Dfile.encoding=utf-8 -Duser.language=zh" CM界面yarn配置(mapred-site.xml)搜索 mapreduce.map.java.opts -Djava.net.preferIPv4Stack=true -Dfile.encoding=utf-8 -Duser.language=zh mapreduce.reduce.java.opts -Djava.net.preferIPv4Stack=true -Dfile.encoding=utf-8 -Duser.language=zh yarn.app.mapreduce.am.command-opts -Djava.net.preferIPv4Stack=true -Dfile.encoding=utf-8 -Duser.language=zh 3. 修改spark字符集

Java Scala 混合编程导致 编译失败 ,【找不到符号】问题解决

依然范特西╮ 提交于 2020-05-09 22:20:49
大致就是 工程里分了 java 代码 和 scala 代码。 然后在java代码中 引用了 scala 的代码。 运行不报错。 但是打包就是一直报错。 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile ( default -compile) on project spark- auth: Compilation failure [ERROR] /Users/hulb/project/dipper/spark-authorizer/spark-auth/src/main/java/org/apache/spark/sql/optimizer/BaseAuthorizeImpl.java:[4,47 ] 找不到符号 [ERROR] 符号: 类 Authorizer [ERROR] 位置: 程序包 org.apache.spark.sql.catalyst.optimizer 如果直接把java代码放在 scala 里面,编译时会直接忽略这个类,不参与编译。 在pom 里加了一个插件,解决了报错问题。 <plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin<

FastJSON的0day漏洞报告

你。 提交于 2020-05-09 22:14:15
一、问题背景 fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean,由于具有执行效率高的特点,应用范围很广 2019年6月22日,阿里云云盾应急响应中心监测到FastJSON存在0day漏洞,攻击者可以利用该漏洞绕过黑名单策略进行远程代码执行 关于fastjson javaweb框架的0day漏洞情报,由于fastjson在进行实例化对象时没有对输入数据进行严格限制,攻击者只要精心构造json数据,即可造成远程代码执行,截止到发稿日,关于该漏洞的利用方式暂未公开,请相关用户及时进行防护。 2019年6月22日,阿里云云盾应急响应中心监测到FastJSON存在0day漏洞,攻击者可以利用该漏洞绕过黑名单策略进行远程代码执行。 1.1、漏洞名称 FastJSON远程代码执行0day漏洞 1.2、漏洞描述 利用该0day漏洞,恶意攻击者可以构造攻击请求绕过FastJSON的黑名单策略。例如,攻击者通过精心构造的请求,远程让服务端执行指定命令(以下示例中成功运行计算器程序)。 1.3、影响范围 FastJSON 1.2.30及以下版本 FastJSON 1.2.41至1.2.45版本 1.4、官方解决方案 升级至FastJSON最新版本,建议升级至1.2.58版本。

Spark Sql读取txt文件

随声附和 提交于 2020-05-09 18:51:19
package spark.example.sql import org.apache.spark.sql.SparkSession import org.apache.spark.sql.types.StructType import org.apache.spark.sql.types.IntegerType import org.apache.spark.sql.types.StructField import org.apache.spark.sql.types.StringType object Example1 { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .appName("Spark SQL basic example") .master("local") .config("spark.some.config.option", "some-value") .getOrCreate() import spark.implicits._ val file = "file:///C:\\github\\data\\sparkdata.txt" val schema = StructType( List( StructField("name", StringType

大数据(七十四)Spark【Spark on Yarn的HA搭建】

梦想的初衷 提交于 2020-05-09 10:11:46
一、前言 我们在第七十节的时候,已经搭建起了Spark On Yarn,现在我们基于此再搭建Spark的HA。 二、步骤 2.1、修改每台服务器的配置文件/home/spark-1.3.1-bin-hadoop2.4/conf/spark-env.sh 新增如下配置: export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181" 注释掉如下配置 export SPARK_MASTER_IP=node1 2.2 启动Hadoop 我们之前已经大见过一个Hadoop的HA集群,现在执行下方步骤将其启动: 1、启动Zookeeper(在每一台服务器上执行下面命令) zkServer.sh start 2、在nameNode上执行start-all.sh,启动Hadoop集群 3、启动完成后我们查看http://node1:50070/和http://node2:50070/,如下说明Hadoop集群启动成功。 2.3 启动Spark 执行下方命令,启动Spark cd /home/spark-1.3.1-bin-hadoop2.4/ ./sbin/start-all.sh 会出现下图日志

spark为什么比hadoop的mr要快?

|▌冷眼眸甩不掉的悲伤 提交于 2020-05-08 19:58:36
1.前言 Spark是基于内存的计算,而Hadoop是基于磁盘的计算;Spark是一种内存计算技术。 但是事实上,不光Spark是内存计算,Hadoop其实也是内存计算。 Spark和Hadoop的根本差异是多个任务之间的数据通信问题:Spark多个任务之间数据通信是基于内存,而Hadoop是基于磁盘。 Spark SQL比Hadoop Hive快,是有一定条件的,而且不是Spark SQL的引擎一定比Hive的引擎快,相反,Hive的HQL引擎还比Spark SQL的引擎更快。 2.内存计算技术 内存计算技术是指将数据持久化至内存RAM中进行加工处理的技术。Spark并不支持将数据持久化至内存中,我们通常所说的是spark的数据缓存技术,如将RDD数据缓存至内存,但并没有实现持久化。缓存数据是可以擦除的,擦除后同样是需要我们重新计算的。Spark的数据处理是在内存中进行的,这话并没有错,其实当前的所有操作系统的数据处理都是在内存中进行的。所以,这内存计算并不是Spark的特性。 Spark是允许我们利用缓存技术和LRU算法缓存数据的。Spark的所有运算并不是全部都在内存中,当shuffle发生的时候,数据同样是需要写入磁盘的。所以,Spark并不是基于内存的技术,而是使用了缓存机制的技术。 3. 那Spark主要快在哪里呢? Spark最引以为豪的就是官网介绍的经典案例

MapReduce Shuffle 和 Spark Shuffle 原理概述

蓝咒 提交于 2020-05-08 19:57:34
##Shuffle简介 Shuffle的本意是洗牌、混洗的意思,把一组有规则的数据尽量打乱成无规则的数据。而在MapReduce中,Shuffle更像是洗牌的逆过程,指的是将map端的无规则输出按指定的规则“打乱”成具有一定规则的数据,以便reduce端接收处理。其在MapReduce中所处的工作阶段是map输出后到reduce接收前,具体可以分为map端和reduce端前后两个部分。 在shuffle之前,也就是在map阶段,MapReduce会对要处理的数据进行分片(split)操作,为每一个分片分配一个MapTask任务。接下来map会对每一个分片中的每一行数据进行处理得到键值对(key,value)此时得到的键值对又叫做“中间结果”。此后便进入reduce阶段,由此可以看出Shuffle阶段的作用是处理“中间结果”。 由于Shuffle涉及到了磁盘的读写和网络的传输,因此Shuffle性能的高低直接影响到了整个程序的运行效率。 ##MapReduce Shuffle Hadoop的核心思想是MapReduce,但shuffle又是MapReduce的核心。shuffle的主要工作是从Map结束到Reduce开始之间的过程。shuffle阶段又可以分为Map端的shuffle和Reduce端的shuffle。 ###Map端的shuffle 下图是MapReduce

大数据软件比较MapReduce和Spark

拥有回忆 提交于 2020-05-08 19:56:40
大数据软件比较 分布式的简单理解 在分布式系统出现之前,只有通过不断增加单个处理机的频率和性能来缩短数据的处理时间,分布式则将一个复杂的问题切割成很多的子任务,分布到多台机器上并行处理,在保证系统稳定性的同时,最大限度提高系统的运行速度。 MapReduce 模型整体分析 关于MapReduce的内容参照即将发布的博文MapReduce 将大规模数据处理作业拆分成多个可独立运行的Map任务,分布到多个处理机上进行运行,通过shuffle机制处理并产生一定的中间结果,在通过Reduce任务混洗合并产生最终的输出文件。 优势与不足分析 优势分析: MapReduce编程模型使得任务执行和任务通信之间变得简单且规范,实现任务并行化,扩展性良好; 每次Map操作之后,产生的中间结果会保存在磁盘上,不会永久的留在内存中,这样减少内存的消耗,避免了内存溢出带来的数据丢失,同时可以更好的容错; 但是这种设计会产生一定的缺点: 一些不适合使用Map和Reduce操作来完成的问题,如处理图或者网络问题时,这些数据结构包含着各种隐性的关系:图的边、子树、节点之间的父子关系、权重等,而这些关系很难被分解为键值对在一次计算中完全表示,同时各任务依赖关系比较复杂时,会产生为了适应该处理模型对任务分解造成效率降低的情况。 另外MapReduce的明显不足: 为了保证较好的扩展性

spark和 mapreduce的比较

北慕城南 提交于 2020-05-08 19:55:57
网上查阅一些资料,收集整理如下: 1、 通用性 spark更加通用,spark提供了transformation和action这两大类的多个功能api,另外还有流式处理sparkstreaming模块、图计算GraphX等等;mapreduce只提供了map和reduce两种操作,流计算以及其他模块的支持比较缺乏。 2、 内存利用和磁盘开销 MapReduce的设计:中间结果需要写磁盘,Reduce写HDFS,多个MR之间通过HDFS交换数据,,可以提高可靠性,减少内存占用,但是牺牲了性能。 Spark默认把结果写到内存, Spark的DAGScheduler相当于一个改进版的MapReduce,如果计算不涉及与其他节点进行数据交换,Spark可以在内存中一次性完成这些操作,也就是中间结果无须落盘,减少了磁盘IO的操作。(但是,如果计算过程中涉及数据交换,Spark也是会把shuffle的数据写磁盘的!!!),还有一方面就是对shuffle操作的优化,spark提供Cache机制来支持需要反复迭代计算或者多次数据共享,减少中间文件的生成,减少数据读取的IO开销。另外DAG相比MapReduce在大多数情况下可以减少shuffle次数。 3、 任务调度 mapreduce任务调度和启动开销大; spark线程池模型减少task启动开销 4、 排序 Spark 避免不必要的排序操作

mapReduce和spark的shuffle

假装没事ソ 提交于 2020-05-08 16:58:13
MapReduce的shuffle 1.input map shuffle reduce output 2.shuffle的实现的功能:分区 分组 排序(key字典序) 3.map端的shuffle context.write() 写入到环形缓冲区(内存区域),假设缓冲区设置的是100M,当达到缓冲区的80%的时候,就会溢写出一个小文件,溢出到磁盘之前做了二件事,分区 排序 两个reduce merge 将小文件进行合并 合并之后 分区内有序 merge之后 maptask结束 ,会通知appmaster我已经结束任务,am通知reduce拉取数据。 reduce shullfe: reduce启动线程通过网络到每台机器上拉取属于自己的数据 reduce1会拉取属于自己的数据: 将整体分区的数据进行排序 MapReduce shuffle 优化 1.合理设置partition 使用多个reduce处理输出结果 2.减少reducer从map拉取的数据量 (1)将map数据进行压缩(snappy 压缩质量不高 但是读取速度快,) 也可以在reduce输出的时候增加gzip 压缩实现 保证压缩率快速输出 (2)合理使用combiner(减少reducer输入数据量) spark 的shuffle ShuffleManager管理 HashShuffleManager