摘要: 一、分区的概念 分区是RDD内部并行计算的一个计算单元,RDD的数据集在逻辑上被划分为多个分片,每一个分片称为分区,分区的格式决定了并行计算的粒度,而每个分区的数值计算都是在一个任务中进行的,因此任务的个数,也是由RDD(准确来说是作业最后一个RDD)的分区数决定。 二、为什么要进行分区 数据分区, 阅读全文
posted @ 2019-09-08 23:40 花未全开*月未圆 阅读(277) 评论(0) 推荐(0)
摘要: 一、RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执 阅读全文
posted @ 2019-09-08 23:25 花未全开*月未圆 阅读(295) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2019-09-08 23:06 花未全开*月未圆 阅读(4756) 评论(0) 推荐(0)
摘要: object BasicSQLTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .appName("BasicSQLTest") .getOrCreate() val sessionDf = spark.read.parqu... 阅读全文
posted @ 2019-09-08 23:05 花未全开*月未圆 阅读(258) 评论(0) 推荐(0)
摘要: object CatalogApiTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .appName("CatalogApiTest") .getOrCreate() //查看spark sql应用用的是哪一种catalog... 阅读全文
posted @ 2019-09-08 23:04 花未全开*月未圆 阅读(1055) 评论(0) 推荐(0)
摘要: object ParquetFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .appName("ParquetFileTest") .getOrCreate() //1: 将json文件数据转化成parquet文件数据 val df = spark.read.json(s" 阅读全文
posted @ 2019-09-08 23:03 花未全开*月未圆 阅读(557) 评论(0) 推荐(0)
摘要: import com.twq.dataset.Utils._ import org.apache.spark.sql.{SaveMode, SparkSession} object FilePartitionTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .appName("Fil 阅读全文
posted @ 2019-09-08 23:02 花未全开*月未圆 阅读(1320) 评论(0) 推荐(0)
摘要: object JdbcDatasourceTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .appName("JdbcDatasourceTest") .master("local") .getOrCreate() ... 阅读全文
posted @ 2019-09-08 23:01 花未全开*月未圆 阅读(869) 评论(0) 推荐(0)
摘要: object CSVFileTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builder() .appName("CSVFileTest") .master("local") .getOrCreate() import spar... 阅读全文
posted @ 2019-09-08 23:00 花未全开*月未圆 阅读(4856) 评论(0) 推荐(1)
摘要: 阅读全文
posted @ 2019-09-08 22:59 花未全开*月未圆 阅读(1331) 评论(0) 推荐(0)
摘要: 数据源-基本操作load和save 阅读全文
posted @ 2019-09-08 22:58 花未全开*月未圆 阅读(2244) 评论(0) 推荐(0)
摘要: Dataset创建 DataFrame创建 RDD&Dataset&DataFrame的转换 schema的定义以及复杂数据类型的用法 阅读全文
posted @ 2019-09-08 22:54 花未全开*月未圆 阅读(388) 评论(0) 推荐(0)
摘要: 一、Flume简介 flume 作为 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用。Flume 初始的发行版本目前被统称为 Flume OG(original generation),属于 cloudera。 但随着 FLume 功能的扩展,Flume OG 代码工程臃肿、核 阅读全文
posted @ 2019-09-08 21:52 花未全开*月未圆 阅读(265) 评论(0) 推荐(0)
摘要: Spark Streaming通过push模式和pull模式两种模式来集成Flume push模式:Spark Streaming端会启动一个基于Avro Socket Server的Receiver来接收Flume中的avro sink发来的数据,这个时候Flume avro sink就是作为客户 阅读全文
posted @ 2019-09-08 21:42 花未全开*月未圆 阅读(472) 评论(0) 推荐(0)
摘要: Kafka是一个分布式的Streaming处理平台,Kafka可以用于数据库中数据的导入导出,也可以用于实时流的处理,但是Kafka最核心的功能就是作为分布式的消息中间件。 Kafka集群是由多个Broker Server组成的,消息的发送者称为Producer,消息的消费者称为Consumer,t 阅读全文
posted @ 2019-09-08 21:39 花未全开*月未圆 阅读(1556) 评论(0) 推荐(0)
摘要: 将数据保存到MySQL中 import java.sql.DriverManager import org.apache.spark.storage.StorageLevel import org.apache.spark.streaming.{Seconds, StreamingContext} import org.apache.spark.{SparkConf, SparkContext} 阅读全文
posted @ 2019-09-08 20:45 花未全开*月未圆 阅读(179) 评论(0) 推荐(0)
摘要: 创建多个接收器 多个端口启动多个receiver在其他Executor,接收多个端口数据,在吞吐量上提高其性能。代码上: Receiver数据块的数量 数据一条一条接收,以一个块一个块的方式存储在内存中,多少条记录组成一个block块: batchInterval : 触发批处理的时间间隔 bloc 阅读全文
posted @ 2019-09-08 20:44 花未全开*月未圆 阅读(260) 评论(0) 推荐(0)
摘要: 数据处理的并行度 1、BlockRDD的分区数 (1)通过Receiver接受数据的特点决定 (2)也可以自己通过repartition设置 2、ShuffleRDD的分区数 (1)默认的分区数为spark.default.parallelism(core的大小) (2)通过我们自己设置决定 val 阅读全文
posted @ 2019-09-08 20:43 花未全开*月未圆 阅读(271) 评论(0) 推荐(0)
摘要: Spark Streaming 官网参考:http://spark.apache.org/docs/latest/streaming-programming-guide.html 一、Spark Streaming的原理 Spark Streaming应用也是Spark应用,Spark Stream 阅读全文
posted @ 2019-09-08 20:41 花未全开*月未圆 阅读(310) 评论(0) 推荐(0)
摘要: spark.streaming从不稳定到稳定状态,解决数据量接收数据时突然变大,使得无法及时处理数据,稳定性得到保证 开启方式: spark.streaming.backpressure.enabled = true Elastic Scaling(资源动态分配) Spark Batch Appli 阅读全文
posted @ 2019-09-08 20:39 花未全开*月未圆 阅读(219) 评论(0) 推荐(0)
摘要: 流计算语义(Semantics)的定义 每一条记录被流计算系统处理了几次 有三种语义: 1、At most once 一条记录要么被处理一次,要么没有被处理 2、At least once 一条记录可能被处理一次或者多次,可能会重复处理 3、Exactly once 一条记录只被处理一次 Zero 阅读全文
posted @ 2019-09-08 20:36 花未全开*月未圆 阅读(1257) 评论(0) 推荐(0)
摘要: Spark Streaming的容错包括了三个地方的容错: 1、Executor失败容错:Executor的失败会重新启动一个新的Executor,这个是Spark自身的特性。如果Receiver所在的Executor失败了,那么Spark Streaming会在另外一个Executor上启动这个R 阅读全文
posted @ 2019-09-08 20:35 花未全开*月未圆 阅读(2608) 评论(0) 推荐(0)
摘要: Spark Streaming应用也是Spark应用,Spark Streaming生成的DStream最终也是会转化成RDD,然后进行RDD的计算,所以Spark Streaming最终的计算是RDD的计算,那么Spark Streaming的原理当然也包含了Spark应用通用的原理。Spark 阅读全文
posted @ 2019-09-08 20:28 花未全开*月未圆 阅读(394) 评论(0) 推荐(0)
摘要: NetworkWordCount ☛ DStream(Discretized Stream 离散化流)特点 一个依赖父DStream的列表(依赖利于容错) 一个生成RDD的时间间隔(Batch Interavl) 一个生成RDD的函数(DStream 到 RDD 的转换) 1、Spark Strea 阅读全文
posted @ 2019-09-08 20:26 花未全开*月未圆 阅读(282) 评论(0) 推荐(0)
摘要: 结果保存到HDFS中 将数据保存到MySQL中 阅读全文
posted @ 2019-09-08 20:17 花未全开*月未圆 阅读(279) 评论(0) 推荐(0)
摘要: Basic相关API Join相关API TransformAPI WindowAPI batch interval - DStream产生的间隔,由StreamingContext指定 (这里设置为1s),控制RDD分区 window length - 窗口的长度,即一个窗口包含的RDD的个数 ( 阅读全文
posted @ 2019-09-08 20:16 花未全开*月未圆 阅读(490) 评论(0) 推荐(0)
摘要: QueueStream(主要是做实验用) HdfsFileStream 阅读全文
posted @ 2019-09-08 20:13 花未全开*月未圆 阅读(273) 评论(0) 推荐(0)
摘要: HDFS日志查看的两种方式:HDFS安装目录中的logs中和HDFS WEB UI上 HDFS安装目录中的logs中看日志 我们分别在master、slave1以及slave2上安装了HDFS,只是每台机器上安装的角色不一样而已。 在master安装的是NameNode和SecondaryNameN 阅读全文
posted @ 2019-09-08 19:51 花未全开*月未圆 阅读(9825) 评论(0) 推荐(0)
摘要: JVM的启动 绝大部分的大数据技术都是建立在Java的JVM之上的。所以,我们对JVM的启动的了解是非常有必要的,当然,我们也不用非常深入的去了解这个,我们只需要把握两个非常关键的点即可: 当使用java命令启动了一个JVM之后,执行的是我们指定的主类中的main方法中的程序代码,这个方法里面的程序 阅读全文
posted @ 2019-09-08 19:47 花未全开*月未圆 阅读(3221) 评论(0) 推荐(0)
摘要: 我们在分布式存储原理总结中了解了分布式存储的三大特点: HDFS作为分布式存储的实现,肯定也具有上面3个特点。 HDFS分布式存储: 在HDFS中,数据块默认的大小是128M,当我们往HDFS上上传一个300多M的文件的时候,那么这个文件会被分成3个数据块: 所有的数据块是分布式的存储在所有的Dat 阅读全文
posted @ 2019-09-08 19:43 花未全开*月未圆 阅读(9544) 评论(0) 推荐(1)
摘要: 在NameNode中的Namespace管理层是负责管理整个HDFS集群文件系统的目录树以及文件与数据块的映射关系。以下就是Namespace的内存结构: 以上是一棵文件目录树,可见Namespace本身其实是一棵巨大的树。在这棵树中INodeFile表示文件,INodeDirectory表示文件目 阅读全文
posted @ 2019-09-08 19:36 花未全开*月未圆 阅读(2694) 评论(0) 推荐(0)
摘要: DataNode心跳机制的作用讲解了DataNode的三个作用: 以上第1和第2个动作都是在DataNode启动的时候发生的,register的步骤主要功能是使得这个DataNode成为HDFS集群中的成员,DataNode注册成功后,DataNode会将它管理的所有的数据块信息,通过blockRe 阅读全文
posted @ 2019-09-08 19:34 花未全开*月未圆 阅读(2690) 评论(0) 推荐(0)
摘要: NameNode堆内存估算 在HDFS中,数据和元数据是分开存储的,数据文件被分割成若干个数据块,每一个数据块默认备份3份,然后分布式的存储在所有的DataNode上,元数据会常驻在NameNode的内存中,而且随着数据量的增加,在NameNode中内存的元数据的大小也会随着增加,那么这个时候对Na 阅读全文
posted @ 2019-09-08 19:31 花未全开*月未圆 阅读(3765) 评论(0) 推荐(1)
摘要: 下图是HDFS的架构: 从上图中可以知道,HDFS包含了NameNode、DataNode以及Client三个角色,当我们的HDFS没有配置HA的时候,那还有一个角色就是SecondaryNameNode,这四个角色都是基于JVM之上的Java进程。既然是Java进程,那我们肯定可以调整这四个角色使 阅读全文
posted @ 2019-09-08 19:29 花未全开*月未圆 阅读(5071) 评论(1) 推荐(1)
摘要: 在HDFS集群的运维过程中,肯定会遇到DataNode的新增和删除,即上线与下线。这篇文章就详细讲解下DataNode的上线和下线的过程。 背景 在我们的微职位视频课程中,我们已经安装了3个节点的HDFS集群,master机器上安装了NameNode和SecondaryNameNode角色,slav 阅读全文
posted @ 2019-09-08 19:21 花未全开*月未圆 阅读(3538) 评论(0) 推荐(1)
摘要: 在HDFS中,提供了fsck命令,用于检查HDFS上文件和目录的健康状态、获取文件的block信息和位置信息等。 我们在master机器上执行hdfs fsck就可以看到这个命令的用法。 查看文件目录的健康信息 执行如下的命令: 其中有一个比较重要的信息,就是Corrupt blocks,表示损坏的 阅读全文
posted @ 2019-09-08 19:09 花未全开*月未圆 阅读(14480) 评论(0) 推荐(0)
摘要: 我们在安装HDFS的时候,我们在hdfs-site.xml配置过DataNode的数据存储的文件目录,如下: 目录/home/hadoop-twq/bigdata/dfs/data就是DataNode存放数据的地方,这个目录对应的存储介质就是普通的磁盘(DISK)。除了普通磁盘,存储介质其实还有固态 阅读全文
posted @ 2019-09-08 18:56 花未全开*月未圆 阅读(3303) 评论(0) 推荐(2)
摘要: 新建一个maven工程 我们先在IDEA中新建一个名为ObjectSizeFetcherAgent的maven工程,如下图: 在maven项目中的pom.xml中新增一个打jar包的插件,如下: 在项目的resources中新建一个名为META-INF的目录,在这个目录下新建一个名为MANIFEST 阅读全文
posted @ 2019-09-08 18:46 花未全开*月未圆 阅读(10876) 评论(0) 推荐(0)
摘要: 我们在如何获取一个Java对象所占内存大小的文章中写了一个获取Java对象所占内存大小的工具类(ObjectSizeFetcher),那么接下来,我们使用这个工具类来看一下Java中各种类型的对象所占内存的大小 基本类型 基本类型的内存占用情况如下表: 以上基本类型所占内存大小是Java规定的,引用 阅读全文
posted @ 2019-09-08 18:40 花未全开*月未圆 阅读(438) 评论(0) 推荐(0)
摘要: 我们在Java单个对象内存布局中讲解了单个简单的Java对象所占内存的大小的计算。那么这篇文章主要是讲解复杂Java对象所占内存大小的计算,我们把继承、复合的对象称为复杂对象 继承对象 然后重新打包,执行如下的命令: 得到的结果如下: 可以看出new Child()的内存大小为40字节,那么这个40 阅读全文
posted @ 2019-09-08 18:30 花未全开*月未圆 阅读(720) 评论(1) 推荐(0)