加载中…
个人资料
ZyZhu
ZyZhu
  • 博客等级:
  • 博客积分:0
  • 博客访问:9,289
  • 关注人气:2
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
个人简介
致力于大数据开发和数据研发工作,对大数据领域前沿技术有研究热情,对 Hadoop,Spark 等大数据平台系统架构有深入研究,擅长大数据平台上的数据分析与处理和性能优化,包括离线计算,流式计算等
访客
加载中…
好友
加载中…
评论
加载中…
留言
加载中…
分类
博文
标签:

spark

日志

输出

今天小编帮同学解决了一个小难题,感觉特别的开心。主要是关于println的输出问题。

​对于一些Scala程序,可能存在若干个println语句,将所得的结果输出到控制台终端上,但是当程序运行时,相应的日志会在控制台大量输出,影响对输出结果的观看。这是可能会想到修改源码将输出结果保存到文件中,但是还有另一种更简便的方法就是重定向。

通过spark-submit提交作业时,可以在后面添加“> 日志文件名” ,比如

bin/spark-submit --master spark://url:7077 pagerank.jar input.txt 100 > log.txt

按照上述方法提交作业的话,println打印出来的输出结果会重定向输出到在spark目录下生成的log.txt文件中,可以很方便对输出的结果进行查看。​

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2016-12-15 16:16)
标签:

spark

memory

jvm

a.      Spark静态内存管理

Spark 1.5版本及以前,Spark采用静态内存管理模型。对于一个Executor,对应的JVM Heap内存主要由三个独立的区块组成,如图所示。

静态内存管理

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

数据挖掘

算法

由于小编对数据分析和处理比较感兴趣,所以数据挖掘算法是必要的知识储备,有了扎实的数学基础,才有助于解决实际场景中的各类问题,所谓KDD(knowledge discovery in databases)正是如此,通过网上的资料分享一些比较经典的数据挖掘算法,希望能对数据分析和数据挖掘感兴趣的人士有所帮助。​

1. C4.5算法。C4.5算法与ID3算法一样,都是数学分类算法,C4.5算法是ID3算法的一个改进。ID3算法采用信息增益进行决策判断,而C4.5采用的是增益率。

详细介绍链接:http://blog.csdn.net/androidlushangderen/article/details/42395865

2. CART算法。CART算法的全称是分类回归树算法,他是一个二元分类,采用的是类似于熵的基尼指数作为分类决策,形成决策树后之后还要进行剪枝,我自己在实现整个算法的时候采用的是代价复杂度算法,

详细介绍链接:http://blog.csdn.net/androidlushangderen/article/details/42558235

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

spark

内存

前言

很多初学者其实对Spark的编程模式还是RDD这个概念理解不到位,就会产生一些误解。

比如,很多时候我们常常以为一个文件是会被完整读入到内存,然后做各种变换,这很可能是受两个概念的误导:

RDD的定义,RDD是一个分布式的不可变数据集合

Spark 是一个内存处理引擎

如果你没有主动对RDDCache/Persist,它不过是一个概念上存在的虚拟数据集,你实际上是看不到这个RDD的数据的全集的(他不会真的都放到内存里)。

RDD的本质是什么

一个RDD 本质上是一个函数,而RDD的变换不过是函数的嵌套。RDD我认为有两类:

输入RDD,典型如KafkaRDD,JdbcRDD

转换RDD,如MapPartitionsRDD

我们以下面的代码为例做分析:

sc.textFile('abc.log').map().saveAsTextFile('')

textFile 会构建出一个NewHadoopRDD,

map函数运行后会构建出一个MapPartitionsRDD

saveAsTextFile触发

阅读  ┆ 评论  ┆ 禁止转载 ┆ 收藏 
标签:

spark

性能

在这篇文章中,首先完成在 Part I 中提到的一些东西。作者将尽量覆盖到影响 Spark 程序性能的方方面面,你们将会了解到资源调优,或者如何配置 Spark 以压榨出集群每一分资源。然后我们将讲述调试并发度,这是job性能中最难也是最重要的参数。最后,你将了解到数据本身的表达形式,Spark 读取在磁盘的上的形式(主要是Apache Avro和 Apache Parquet)以及当数据需要缓存或者移动的时候内存中的数据形式。​

调试资源分配

Spark 的用户邮件邮件列表中经常会出现 “我有一个500个节点的集群,为什么但是我的应用一次只有两个 task 在执行”,鉴于 Spark 控制资源使用的参数的数量,这些问题不应该出现。但是在本章中,你将学会压榨出你集群的每一分资源。推荐的配置将根据不同的集群管理系统( YARN、Mesos、Spark Standalone)而有所不同,我们将主要集中在 YARN 上,因为这个 Cloudera 推荐的方式。

我们先看一下在 YARN 上运行 Spark 的一些背景。查看之前的博文:点击这里查看

Spark(以及YARN) 需要

阅读  ┆ 评论  ┆ 禁止转载 ┆ 收藏 
标签:

spark

性能

Spark 是如何执行程序的

一个 Spark 应用包括一个 driver 进程和若干个分布在集群的各个节点上的 executor 进程。driver 主要负责调度一些高层次的任务流(flow of work)。exectuor 负责执行这些任务,这些任务以 task 的形式存在, 同时存储用户设置需要caching的数据。 task 和所有的 executor 的生命周期为整个程序的运行过程(如果使用了dynamic resource allocation 时可能不是这样的)。如何调度这些进程是通过集群管理应用完成的(比如YARN,Mesos,Spark Standalone),但是任何一个 Spark 程序都会包含一个 driver 和多个 executor 进程。​​

阅读  ┆ 评论  ┆ 禁止转载 ┆ 收藏 
(2016-01-25 15:10)
标签:

spark

rdd

RDD的概念

    RDD,全称为Resilient Distributed Datasets,是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD还提供了一组丰富的操作来操作这些数据。在这些操作中,诸如map、flatMap、filter等转换操作实现了monad模式,很好地契合了Scala的集合操作。除此之外,RDD还提供了诸如join、groupBy、reduceByKey等更为方便的操作(注意,reduceByKey是action,而非transformation),以支持常见的数据运算。

    通常来讲,针对数据处理有几种常见模型,包括:Iterative Algorithms,Relational Queries,MapReduce,Stream Processing。例如Hadoop MapReduce采用了MapReduces模型,Storm则采用了Stream Processing模型。RDD混合了这四种模型,使得Spark可以应用于各种大数据处理场景。

    RDD作为数据结构,本质上是一个只读的分区记录集合。一个RDD可以包含多个分区,每个分区就是一个dataset片段。RDD可以相互依赖。如果RDD的每个分区最多只能被一个Child R

阅读  ┆ 评论  ┆ 禁止转载 ┆ 收藏 
标签:

sparkstreaming

receiver

数据接收流程​

    启动Spark Streaming(后续缩写为SS)后,SS 会选择一台Executor 启动ReceiverSupervisor,并且标记为Active状态。接着按如下步骤处理:​

    1. ReceiverSupervisor会启动对应的Receiver(这里是KafkaReceiver)​。

    2. KafkaReceiver 会根据配置启动新的线程接受数据,在该线程中调用。

    3. ReceiverSupervisor会调用 BlockGenerator.addData 进行数据填充。

    到目前为止,整个过程不会有太多内存消耗,正常的一个线性调用。所有复杂的数据结构都隐含在BlockGenerator中。​

BlockGenerator 存储结构​

    BlockGenerator 会复杂些,这里有几个点,

    1. 维护了一个缓存 currentBuffer ,就是一个无限长度的ArrayBuffer。currentBuffer 并不会被复用,而是

阅读  ┆ 评论  ┆ 禁止转载 ┆ 收藏 
(2016-01-21 16:14)
标签:

spark

属性

    随着Spark项目的逐渐成熟, 越来越多的可配置参数被添加到Spark中来。在Spark中提供了三个地方用于配置:

​    1、Spark properties:这个可以控制应用程序的绝大部分属性。并且可以通过SparkConf对象或者Java系统属性进行设置;

​    2、环境变量(Environment variables):这个可以分别对每台机器进行相应的设置,比如IP。这个可以在每台机器的$SPARK_HOME/conf/spark-env.sh脚本中进行设置; 

    3、

阅读  ┆ 评论  ┆ 禁止转载 ┆ 收藏 
标签:

spark

大数据

内存

    作为内存计算模型,我们的内存很难达到T级别,而需要使用的日志数据很容易就到达这个量级,Spark如何处理这种情况?

    Spark被称为“内存计算引擎”是因为它可以做内存计算,而不是它只能做内存计算。早年因为在使用内存cache的情况下ML算法效率提升特别明显(1-2数量级),因此造成了一些误传,使得很多初学者都认为Spark只能做内存计算,数据集放不进内存就没辙了。实际上,内存cache对于Spark来说仅仅只是一个优化,即便完全关闭,效率仍然比MapReduce要来得高。对于Spark这类内存计算系统,并不是说要处理多大规模的数据就需要多大规模的内存。Spark相对Hadoop MR有大幅性能提升的一个前提就是大量大数据作业同一时刻需要加载进内存的数据只是整体数据的一个子集,且大部分情况下可以完全放入内存,正如Shark(Spark上的Hive兼容的data warehouse)论文1.1节所述:

In fact, one study [1] analyzed the access patterns in the Hive warehouses at Facebook and discovered that

阅读  ┆ 评论  ┆ 禁止转载 ┆ 收藏 
  

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有