<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[anglemanyi的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/anglemanyi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; anglemanyi]]></copyright><item><title><![CDATA[Flink04: Flink核心API之DataSet]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/129152569</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/129152569</guid><author>anglemanyi</author><pubDate>Wed, 22 Feb 2023 21:33:22 +0800</pubDate><description><![CDATA[DataSet API主要可以分为3块来分析：DataSource、Transformation、Sink。]]></description><category></category></item><item><title><![CDATA[Flink04: Flink核心API之DataStream]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/129115293</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/129115293</guid><author>anglemanyi</author><pubDate>Tue, 21 Feb 2023 23:28:13 +0800</pubDate><description><![CDATA[Flink中提供了4种不同层次的API，每种API在简洁和易表达之间有自己的权衡，适用于不同的场景。目前上面3个会用得比较多。• 低级API(Stateful Stream Processing)：提供了对时间和状态的细粒度控制，简洁性和易用性较差，主要应用在一些复杂事件处理逻辑上。]]></description><category></category></item><item><title><![CDATA[Redis02: Redis基础命令]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/129151607</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/129151607</guid><author>anglemanyi</author><pubDate>Tue, 21 Feb 2023 22:53:41 +0800</pubDate><description><![CDATA[先启动redis服务，使用redis-cli客户端连到redis数据库里面。]]></description><category></category></item><item><title><![CDATA[org.apache.flink.runtime.JobException: Recovery is suppressed by NoRestartBackoffTimeStrategy]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/129112598</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/129112598</guid><author>anglemanyi</author><pubDate>Sun, 19 Feb 2023 17:46:05 +0800</pubDate><description><![CDATA[pom.xml中某个jar包scala版本与运行环境flink Scala不一致导致的。比如，我的scala版本是2.12，而用了redis依赖支持的scala版本是2.11。将redis版本改为1.1.0 (支持scala2.12)]]></description><category></category></item><item><title><![CDATA[Flink03: 集群安装部署]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/129110444</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/129110444</guid><author>anglemanyi</author><pubDate>Sun, 19 Feb 2023 15:55:53 +0800</pubDate><description><![CDATA[Flink支持多种安装部署方式这些安装方式我们主要讲一下standalone和on yarn。如果是一个独立环境的话，可能会用到standalone集群模式。在生产环境下一般还是用on yarn 这种模式比较多，因为这样可以综合利用集群资源。和我们之前讲的spark on yarn是一样的效果，这个时候我们的Hadoop集群上面既可以运行MapReduce任务，Spark任务，还可以运行Flink任务，一举三得。]]></description><category></category></item><item><title><![CDATA[Flink02：Flink快速上手（Streaming WorldCount）]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/129108765</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/129108765</guid><author>anglemanyi</author><pubDate>Sun, 19 Feb 2023 11:58:11 +0800</pubDate><description><![CDATA[（1）先把Flink的开发环境配置好。（2）创建maven项目：db_flink（3）首先在model中将scala依赖添加进来。（4）然后创建scala目录，因为针对flink我们会使用java和scala两种语言（5）创建包名在src/main/java下创建 com.imooc.java在src/main/scala下创建 com.imooc.scala。]]></description><category></category></item><item><title><![CDATA[Flink01: 基本介绍]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/129108299</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/129108299</guid><author>anglemanyi</author><pubDate>Sun, 19 Feb 2023 11:15:44 +0800</pubDate><description><![CDATA[1. Flink是一个开源的分布式，高性能，高可用，准确的流处理框架（1）分布式：表示flink程序可以运行在很多台机器上，（2）高性能：表示Flink处理性能比较高（3）高可用：表示flink的稳定性和可用性是比较好的。（4）准确的：表示flink可以保证处理数据的准确性。2. Flink支持流(Stream)处理和批处理(Batch)其实对于flink而言，它是一个流处理框架，批处理只是流处理的一个极限特例而已。]]></description><category></category></item><item><title><![CDATA[Spark12: SparkSQL入门]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/129093657</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/129093657</guid><author>anglemanyi</author><pubDate>Sat, 18 Feb 2023 18:51:29 +0800</pubDate><description><![CDATA[Spark SQL和我们之前讲Hive的时候说的hive on spark是不一样的。hive on spark是表示把底层的mapreduce引擎替换为spark引擎。而Spark SQL是Spark自己实现的一套SQL处理引擎。Spark SQL是Spark中的一个模块，主要用于进行结构化数据的处理。它提供的最核心的编程抽象，就是DataFrame。它其实和关系型数据库中的表非常类似，RDD可以认为是表中的数据，Schema是表结构信息。]]></description><category></category></item><item><title><![CDATA[Spark11: 算子优化]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/129075049</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/129075049</guid><author>anglemanyi</author><pubDate>Thu, 16 Feb 2023 23:47:11 +0800</pubDate><description><![CDATA[3）不过一般情况下，mapPartitions 的性能更高；初始化操作、数据库链接等操作适合使用 mapPartitions操作，这是因为：假设需要将RDD中的每个元素写入数据库中，这时候就应该把创建数据库链接的操作放置在mapPartitions 中，创建数据库链接这个操作本身就是个比较耗时的，如果该操作放在 map 中执行，将会频繁执行，比较耗时且影响数据库的稳定性。针对个别RDD，如果感觉分区数量不合适，想要调整，可以通过repartition进行调整，分区调整了之后，对应的并行度也就可以调整了。]]></description><category></category></item><item><title><![CDATA[Spark10： 性能优化(Kyro序列化、持久化，JVM调优、并行度、数据本地化)]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/129034492</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/129034492</guid><author>anglemanyi</author><pubDate>Tue, 14 Feb 2023 22:44:42 +0800</pubDate><description><![CDATA[数据本地化，指的是，数据离计算它的代码有多近。数据本地化对于Spark Job性能有着巨大的影响。如果数据以及要计算它的代码是在一起的，那么性能当然会非常高。但是，如果数据和计算它的代码是分开的，那么其中之一必须到另外一方的机器上。通常来说，移动代码到其它节点，会比移动数据到代码所在的节点，速度要得多，因为代码比较小。Spark也正是基于这个数据本地化的原则来构建task调度算法的。]]></description><category></category></item><item><title><![CDATA[Spark09: Spark之checkpoint]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/128996180</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/128996180</guid><author>anglemanyi</author><pubDate>Sun, 12 Feb 2023 16:28:15 +0800</pubDate><description><![CDATA[checkpoint，是Spark提供的一个比较高级的功能。有时候，我们的Spark任务，比较复杂，从初始化RDD开始，到最后整个任务完成，有比较多的步骤，比如超过10个transformation算子。而且，整个任务运行的时间也特别长，比如通常要运行1~2个小时。在这种情况下，就比较适合使用checkpoint功能了。因为对于特别复杂的Spark任务，有很高的风险会出现某个要反复使用的RDD因为节点的故障导致丢失，虽然之前持久化过，但是还是导致数据丢失了。]]></description><category></category></item><item><title><![CDATA[Spark08: Spark Job的三种提交模式]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/128842030</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/128842030</guid><author>anglemanyi</author><pubDate>Wed, 01 Feb 2023 23:01:46 +0800</pubDate><description><![CDATA[这种方式主要用于测试，查看日志方便一些，部分日志会直接打印到控制台上面，因为driver进程运行在本地客户端，就是提交Spark任务的那个客户端机器，driver负责调度job，会与yarn集群产生大量的通信，一般情况下Spark客户端机器和Hadoop集群的机器是无法内网通信，只能通过外网，这样在大量通信的情况下会影响通信效率，并且当我们执行一些action操作的时候数据也会返回给driver端，driver端机器的配置一般都不高，可能会导致内存溢出等问题。基于Spark自己的standalone集群。]]></description><category></category></item><item><title><![CDATA[Spark07： 宽窄依赖、Stage的划分]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/128841922</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/128841922</guid><author>anglemanyi</author><pubDate>Wed, 01 Feb 2023 22:55:28 +0800</pubDate><description><![CDATA[也就是说，每一个父RDD的partition中的数据都可能会传输一部分到下一个RDD的每个partition中。一个RDD，对它的父RDD只有简单的一对一的关系，也就是说，RDD的每个partition仅仅依赖于父RDD中的一个partition，父RDD和子RDD的partition之间的对应关系，是一对一的。（2）再看下面，RDD G到RDD F，产生了宽依赖，所以RDD F属于一个Stage，因为RDD F和 RDD C、D、E 这几个RDD没有产生宽依赖，都是窄依赖，所以他们属于一个Stage。]]></description><category></category></item><item><title><![CDATA[Spark06： 共享变量（广播变量、累加变量）]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/128604659</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/128604659</guid><author>anglemanyi</author><pubDate>Sun, 08 Jan 2023 22:34:22 +0800</pubDate><description><![CDATA[Spark提供的Accumulator，主要用于多个节点对一个变量进行共享性的操作。正常情况下在Spark的任务中，由于一个算子可能会产生多个task并行执行，所以在这个算子内部执行的聚合计算都是局部的，想要实现多个task进行全局聚合计算，此时需要使用到Accumulator这个共享的累加变量。大家可以想象一个极端情况，如果map算子有10个task，恰好这10个task还都在一个worker节点上，那么这个时候，map算子使用的外部变量就会在这个worker节点上保存10份，这样就很占用内存了。]]></description><category></category></item><item><title><![CDATA[Spark05： RDD持久化]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/128601002</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/128601002</guid><author>anglemanyi</author><pubDate>Sun, 08 Jan 2023 15:14:09 +0800</pubDate><description><![CDATA[当对RDD执行持久化操作时，每个节点都会将自己操作的RDD的partition数据持久化到内存中，并且在之后对该RDD的反复使用中，直接使用内存中缓存的partition数据。cache()是persist()的一种简化方式，cache()的底层就是调用的persist()的无参版本，也就是调用persist(MEMORY_ONLY)，将数据持久化到内存中。（1）如果需要进行数据的快速失败恢复，那么就选择带后缀为_2的策略，进行数据的备份，这样在失败时，就不需要重新计算了。]]></description><category></category></item><item><title><![CDATA[Spark04: Transformation与Action开发]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/128540904</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/128540904</guid><author>anglemanyi</author><pubDate>Tue, 03 Jan 2023 23:59:07 +0800</pubDate><description><![CDATA[Transformation和Action这里的Transformation可以翻译为转换，表示是针对RDD中数据的转换操作，主要会针对已有的RDD创建一个新的RDD：常见的有map、flatMap、filter等等Action可以翻译为执行，表示是触发任务执行的操作，主要对RDD进行最后的操作，比如遍历、reduce、保存到文件等，并且还可以把结果返回给Driver程序不管是Transformation操作还是Action操作，一般会把它们称之为算子，例如：map算子，reduce算子。]]></description><category></category></item><item><title><![CDATA[Spark03： 单词统计]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/128524407</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/128524407</guid><author>anglemanyi</author><pubDate>Mon, 02 Jan 2023 20:30:52 +0800</pubDate><description><![CDATA[然后把spark-core依赖的作用域设置为provided，不需要把相关依赖打入jar包。再创建一个Scala object：WordCountScala。在scala目录下创建包com.sanqian.scala。在scala目录下创建包com.sanqian.java。需要java编译插件、Scala编译插件、打包插件。再创建一个Java类：WordCountJava。提交脚本: lwx_run.sh。]]></description><category></category></item><item><title><![CDATA[Spark02: Spark运行任务三种方式]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/128523823</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/128523823</guid><author>anglemanyi</author><pubDate>Mon, 02 Jan 2023 19:35:50 +0800</pubDate><description><![CDATA[spark-shell 实现了用户可以逐行输入代码，进行操作的功能。即可以不像Java一样，编写完所有代码，然后编译才能运行。spark-shell 支持。交互环境 和 python交互环境，在学习测试中可以使用spark-shell 进行API学习。spark-shell会自动创建sparkContext。注意：需要先启动spark standalone集群。比如：需要连接数据库，无法在本地调试的情况。会启动一个spark任务。]]></description><category></category></item><item><title><![CDATA[Spark01：Spark工作原理]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/128516126</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/128516126</guid><author>anglemanyi</author><pubDate>Sun, 01 Jan 2023 21:30:43 +0800</pubDate><description><![CDATA[RDD通常通过Hadoop上的文件，即HDFS文件进行创建，也可以通过程序中的集合来创建RDD是Spark提供的核心抽象，全称为Resillient Distributed Dataset，即弹性分布式数据集弹性：RDD数据默认情况下存放在内存中，但是在内存资源不足时，Spark也会自动将RDD数据写入磁盘分布式：RDD在抽象上来说是一种元素数据的集合，它是被分区的，每个分区分布在集群中的不同节点上，从而让RDD中的数据可以被并行操作。]]></description><category></category></item><item><title><![CDATA[pandas数据分析]]></title><link>https://blog.youkuaiyun.com/anglemanyi/article/details/128272811</link><guid>https://blog.youkuaiyun.com/anglemanyi/article/details/128272811</guid><author>anglemanyi</author><pubDate>Sun, 11 Dec 2022 11:31:43 +0800</pubDate><description><![CDATA[pandas数据分析]]></description><category></category></item></channel></rss>