聚合数据

好程序员分享大数据的架构体系

不问归期 提交于 2019-11-27 05:24:58
flume 采集数据 MapReduce HBse (HDFS) Yarn 资源调度系统 展示平台 数据平台 1 ,提交任务 2 ,展示结果数据 spark 分析引擎 S3 可以进行各种的数据分析 , 可可以和 hive 进行整合 , spark 任务可以运行在 Yarn 提交任务到集群的入口类 SC 为什么用 spark : 速度快,易用,通用,兼容性高 hadoop scala jdk spark 如果结果为定长的 toBuffer 编程变长的 启动流程 spark 集群启动流程 和任务提交 主节点 master 子节点 work 多台 start-all 。 sh 脚本 先启动 master 服务 启动 work master 提交注册信息 work 响应 work 会定时发送心跳信息 集群启动流程 1 、调用 start-all 脚本 ,开始启动 Master 2 、 master 启动以后, preStart 方法调用了一个定时器,定时的检查超时的 worker 3 、启动脚本会解析 slaves 配置文件,找到启动 work 的相应节点,开始启动 worker 4 、 worker 服务启动后开始调用 prestart 方法(生命周期方法)开始向所有的 master 注册 5 、 master 接收到 work 发送过来的注册信息, master

spark shuffle写操作三部曲之SortShuffleWriter

牧云@^-^@ 提交于 2019-11-26 17:39:54
提出问题 1. shuffle过程的数据是如何传输过来的,是按文件来传输,还是只传输该reduce对应在文件中的那部分数据? 2. shuffle读过程是否有溢出操作?是如何处理的? 3. shuffle读过程是否可以排序、聚合?是如何做的? 。。。。。。 概述 在 spark shuffle的写操作之准备工作 中的 ResultTask 和 ShuffleMapTask 看到了,rdd读取数据是调用了其 iterator 方法。 计算或者读取RDD org.apache.spark.rdd.RDD#iterator源码如下,它是一个final方法,只在此有实现,子类不允许重实现这个方法: 思路:如果是已经缓存下来了,则调用 org.apache.spark.rdd.RDD#getOrCompute 方法,通过底层的存储系统或者重新计算来获取父RDD的map数据。否则调用 org.apache.spark.rdd.RDD#computeOrReadCheckpoint ,从checkpoint中读取或者是通过计算来来获取父RDD的map数据。 我们逐一来看其依赖方法: org.apache.spark.rdd.RDD#getOrCompute 源码如下: 首先先通过Spark底层的存储系统获取 block。如果底层存储没有则调用 org.apache.spark.rdd.RDD

SQL语句书写技巧

我与影子孤独终老i 提交于 2019-11-26 11:28:40
SQL结构化查询字符串的改写,是实现数据库查询性能提升的最现实.最有效的手段,有时甚至是唯一的手段, 比如在不允许大幅度修改现有数据库结构的情况下。 通过优化SQL语句提高查询性能的关键是: ? 根据实际需求情况,建立合适的索引; ? 使用一切可能的方式去利用好索引,避免全表扫描; ? 尽量减少内存及数据I/O方面的开销 一. 建立索引 (一)建立"适当"的索引,是快速查询的基础。 索引( index )是除表之外另一重要的.用户定义的存储在物理介质上的数据结构。当根据索引码的值搜索数据 时,索引提供了对数据的快速访问。事实上,没有索引,数据库也能根据SELECT语句成功地检索到结果,但随 着表变得越来越大,使用"适当"的索引的效果就越来越明显。注意,在这句话中,我们用了"适当"这个词, 这是因为,如果使用索引时不认真考虑其实现过程,索引既可以提高也会破坏数据库的工作性能。 索引实际上是一种特殊的目录,SQL SERVER提供了两种索引: ? 聚集索引( clustered index ,也称聚类索引.簇集索引) 我们把这种正文内容本身就是一种按照一定规则排列的目录称为"聚集索引"。 例如: 汉语字典中按拼音查某一个字,就是使用"聚集索引",实际上,你根本用不着查目录,直接在字典正文里找, 就能很快找到需要的汉字(假设你知道发音)。 ? 非聚集索引(non clustered