HDFS

spark系列-2、Spark 核心数据结构:弹性分布式数据集 RDD

丶灬走出姿态 提交于 2020-05-03 18:15:17
一、RDD(弹性分布式数据集) RDD 是 Spark 最核心的数据结构,RDD(Resilient Distributed Dataset)全称为弹性分布式数据集,是 Spark 对数据的核心抽象,也是最关键的抽象,它实质上是一组分布式的 JVM 不可变对象集合,不可变决定了它是只读的,所以 RDD 在经过变换产生新的 RDD 时,原有 RDD 不会改变。 1.1、设计背景 在实际应用中,存在许多迭代式计算,这些应用场景的共同之处是,不同计算阶段之间会重用中间结果,即一个阶段的输出结果会作为下一个阶段的输入。但是,目前的MapReduce框架都是把中间结果写入到HDFS中,带来了大量的数据复制、磁盘IO和序列化开销。显然,如果能将结果保存在内存当中,就可以大量减少IO。RDD就是为了满足这种需求而出现的,它提供了一个抽象的数据架构,我们不必担心底层数据的分布式特性,只需将具体的应用逻辑表达为一系列转换处理,不同RDD之间的转换操作形成依赖关系,可以实现管道化,从而避免了中间结果的落地存储,大大降低了数据复制、磁盘IO和序列化开销。 1.2、RDD概念 一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合,每个RDD可以分成多个分区,每个分区就是一个数据集片段(HDFS上的块),并且一个RDD的不同分区可以被保存到集群中不同的节点上

如何为Spark应用程序分配--num-executors,--execuor-cores和--executor-memory

柔情痞子 提交于 2020-05-03 17:37:42
文章目录 前言 一些资源参数设置的基本知识 不同配置的优劣分析 第一种方法:使用较小的executors 第二种方法:使用较大的executors 第三种方法:使用优化的executors 前言 在我们提交spark程序时,应该如何为Spark集群配置–num-executors, - executor-memory和–execuor-cores 呢? 一些资源参数设置的基本知识 Hadoop / Yarn / OS Deamons 当我们使用像Yarn这样的集群管理器运行spark应用程序时,会有几个守护进程在后台运行,如NameNode,Secondary NameNode,DataNode,JobTracker和TaskTracker等。因此,在指定num-executors时,我们需要确保为这些守护进程留下足够的核心(至少每个节点约1 CPU核)以便顺利运行。 Yarn ApplicationMaster(AM) ApplicationMaster负责协调来自ResourceManager的资源,并与NodeManagers一起执行container并监控其资源消耗。如果我们在YARN上运行Spark,那么我们需要预估运行AM所需要的资源(至少1024MB和1 CPU核)。 HDFS吞吐量 HDFS客户端遇到大量并发线程会出现一些bug。一般来说

Spark 性能调优提高任务效率

丶灬走出姿态 提交于 2020-05-02 11:04:32
资源调优 ① 搭建Spark集群的时候要给Spark集群足够的资源(core,memory) 在spark安装包的conf下spark-env.sh SPARK_WORKER_CORES --worker节点的可用核数 SPARK_WORKER_MEMORY SPARK_WORKER_INSTANCE 在提交Application的时候给Application分配更多的资源。 提交命令选项:(在提交Application的时候使用选项) --executor-cores --executor-memory --total-executor-cores 配置信息:(在Application的代码中设置,在 Spark-default.conf 中设置) spark.executor.cores spark.executor.memory spark.max.cores 并行度调优 原则:一个core一般分配2~3个task,每一个task一般处理1G数据(task的复杂度类似wc) ① 提高并行度的方式: 1) .如果读取的数据在HDFS上,降低block块的大小 2) .sc.textFile(path,numPartitions) 3) sc.parallelize(list,numPartitions) 一般用于测试 4) coalesce

【Spark调优】提交job资源参数调优

谁都会走 提交于 2020-05-02 10:30:46
【场景】   Spark提交作业job的时候要指定该job可以使用的CPU、内存等资源参数,生产环境中,任务资源分配不足会导致该job执行中断、失败等问题,所以对Spark的job资源参数分配调优非常重要。   spark提交作业,yarn-cluster模式示例:   ./bin/spark-submit\   --class com.ww.rdd.wordcount \   --master yarn \   --deploy-mode cluster \   --executor-memory 4G \   --num-executors 50 \    --driver-memory 1G \   --conf spark.default.parallelism=1000 \    --conf spark.memory.fraction =0.75 \    --conf spark.memory.storageFraction =0.5 \   /home/spark/wordcount.jar \   1000 #入参 【参数】 num-executors    参数说明 :该参数用于设置每个Spark作业总共要用多少个Executor进程来执行。例如Driver向YARN集群管理器申请资源时

Hadoop-MR实现日志清洗(四)

▼魔方 西西 提交于 2020-05-02 02:53:36
Hadoop-MR实现日志清洗(四) 6.单机部署Hadoop(伪分布式) 在我们自己购买的阿里云Linux主机上部署单机hadoop,测试我们的mapreduce程序。也可以在windows上安装虚拟机部署。 6.1配置Java环境 下载jdk-8u171-linux-x64.tar.gz后上传到主机,解压缩: tar zxf jdk-8u171-linux-x64.tar.gz 得到文件夹:jdk1.8.0_171 我们把该文件夹放在/opt下 /opt/jdk1.8.0_171 在用户家目录下的配置文件.bash_profile或者.bashrc中新增: export JAVA_HOME=/opt/jdk1. 8 .0_171 export JRE_HOME =/opt/jdk1. 8 .0_171/ jre export CLASSPATH =.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/ lib:$CLASSPATH export PATH =$JAVA_HOME/bin:$PATH 6.2用户配置 我们只是想部署单机并试运行我们的程序,暂定用已有的用户账号,比如udp. 如后续遇到异常,再考虑新增hadoop用户。 6.3安装hadoop 官网下载hadoop-2.7.6.tar.gz,上传到目录

Hadoop生态圈-Ranger数据安全管理框架

…衆ロ難τιáo~ 提交于 2020-05-02 02:18:31
                 Hadoop生态圈-Ranger数据安全管理框架                                      作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。    一.Ranger简介   Apache Ranger是一款被设计成全面掌握Hadoop生态系统的数据安全管理框架。它为Hadoop生态系统中众多的组件提供了一个统一的数据授权和管理界面。使得系统管理员只需面对Ranger一个系统,就能对Hadoop整个生态体系进行数据授权,数据管理与审计。详情请参考官网: http://ranger.apache.org/index.html 。   Ranger从架构上看主要由三大部分组成: 1>.User sync:   Ranger系统有自己的内部用户,从门户系统的登陆到权限策略的分配都是基于这些内部用户进行的。Ranger是一个统一Hadoop生态系统的安全管理框架,所以它面对的是Hadoop生态的众多组件。而这些组件使用的是服务器上的Linux用户,所以我们需要映射一份linux用户数据成为Ranger的内部用户。用户同步服务就是专门来做这件事情的,Ranger 通过用户同步服务实时的从Linux服务器中同步用户数据。 2>.Admin Portol:   管理员门户是一个Web UI控制台

hadoop-mapreduce-架构概念

你。 提交于 2020-05-02 00:30:14
MapReduce: 是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在 分布式系统 上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。 MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义: 1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。 2)MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。 3)MapReduce是一个并行程序设计模型与方法(Programming

深入浅出MapReduce运行流程

China☆狼群 提交于 2020-05-01 22:57:31
开始聊mapreduce,mapreduce是hadoop的计算框架,我学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密。这个可能是我做技术研究的思路有关,我开始学习某一套技术总是想着这套技术到底能干什么,只有当我真正理解了这套技术解决了什么问题时候,我后续的学习就能逐步的加快,而学习hdfs时候我就发现,要理解hadoop框架的意义,hdfs和mapreduce是密不可分,所以当我写分布式文件系统时候,总是感觉自己的理解肤浅,今天我开始写mapreduce了,今天写文章时候比上周要进步多,不过到底能不能写好本文了,只有试试再说了。   Mapreduce 初析   Mapreduce是一个计算框架,既然是做计算的框架,那么表现形式就是有个输入(input),mapreduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(output),这个输出就是我们所需要的结果。   我们要学习的就是这个计算模型的运行规则。在运行一个mapreduce计算任务时候,任务过程被分为两个阶段:map阶段和reduce阶段,每个阶段都是用键值对(key/value)作为输入(input)和输出(output)。而程序员要做的就是定义好这两个阶段的函数:map函数和reduce函数。   Mapreduce

深入理解hadoop之mapreduce

微笑、不失礼 提交于 2020-05-01 22:57:08
本文系原创,若有转载需要,请注明出处。 https://www.cnblogs.com/bigdata-stone/ 1.mapReduce简介     MapReduce是面向大数据并行处理的计算模型、框架和平台。 映射(Mapping) :对集合里的每个目标应用同一个操作。即,如果你想把表单里每个单元格乘以二,那么把这个函数单独地应用在每个单元格上的操作就属于mapping(这里体现了移动计算而不是移动数据)。 化简(Reducing):遍历集合中的元素来返回一个综合的结果。即,输出表单里一列数字的和这个任务属于reducing。 MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce。简单来讲,map就是分,而reduce 就是合。 数据从map端进入(以key,value的形式),同样以(key,value)的形式传出mapper,进过shuffle过程,所有相同的key都会分配进入同一个reduce。而对于整个作业的map数目取决于split切片的个数,经过inputformat进行切割,切了多少块就有几个map,切完之后再在每个节点上并发执行,并行计算,所以可以有多个map,而reduce的个数是可以进行设置的,所以reduce的个数和map的个数是多对多的关系。 对于map端而言,产生的数据需要在map端进行分区