- 博客(80)
- 资源 (17)
- 收藏
- 关注
原创 Flink04: Flink核心API之DataSet
DataSet API主要可以分为3块来分析:DataSource、Transformation、Sink。
2023-02-22 21:33:22
1366
原创 Flink04: Flink核心API之DataStream
Flink中提供了4种不同层次的API,每种API在简洁和易表达之间有自己的权衡,适用于不同的场景。目前上面3个会用得比较多。• 低级API(Stateful Stream Processing):提供了对时间和状态的细粒度控制,简洁性和易用性较差,主要应用在一些复杂事件处理逻辑上。
2023-02-21 23:28:13
696
原创 org.apache.flink.runtime.JobException: Recovery is suppressed by NoRestartBackoffTimeStrategy
pom.xml中某个jar包scala版本与运行环境flink Scala不一致导致的。比如,我的scala版本是2.12,而用了redis依赖支持的scala版本是2.11。将redis版本改为1.1.0 (支持scala2.12)
2023-02-19 17:46:05
2538
原创 Flink03: 集群安装部署
Flink支持多种安装部署方式这些安装方式我们主要讲一下standalone和on yarn。如果是一个独立环境的话,可能会用到standalone集群模式。在生产环境下一般还是用on yarn 这种模式比较多,因为这样可以综合利用集群资源。和我们之前讲的spark on yarn是一样的效果,这个时候我们的Hadoop集群上面既可以运行MapReduce任务,Spark任务,还可以运行Flink任务,一举三得。
2023-02-19 15:55:53
1068
原创 Flink02:Flink快速上手(Streaming WorldCount)
(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。
2023-02-19 11:58:11
717
原创 Flink01: 基本介绍
1. Flink是一个开源的分布式,高性能,高可用,准确的流处理框架(1)分布式:表示flink程序可以运行在很多台机器上,(2)高性能:表示Flink处理性能比较高(3)高可用:表示flink的稳定性和可用性是比较好的。(4)准确的:表示flink可以保证处理数据的准确性。2. Flink支持流(Stream)处理和批处理(Batch)其实对于flink而言,它是一个流处理框架,批处理只是流处理的一个极限特例而已。
2023-02-19 11:15:44
528
原创 Spark12: SparkSQL入门
Spark SQL和我们之前讲Hive的时候说的hive on spark是不一样的。hive on spark是表示把底层的mapreduce引擎替换为spark引擎。而Spark SQL是Spark自己实现的一套SQL处理引擎。Spark SQL是Spark中的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象,就是DataFrame。它其实和关系型数据库中的表非常类似,RDD可以认为是表中的数据,Schema是表结构信息。
2023-02-18 18:51:29
558
原创 Spark11: 算子优化
3)不过一般情况下,mapPartitions 的性能更高;初始化操作、数据库链接等操作适合使用 mapPartitions操作,这是因为:假设需要将RDD中的每个元素写入数据库中,这时候就应该把创建数据库链接的操作放置在mapPartitions 中,创建数据库链接这个操作本身就是个比较耗时的,如果该操作放在 map 中执行,将会频繁执行,比较耗时且影响数据库的稳定性。针对个别RDD,如果感觉分区数量不合适,想要调整,可以通过repartition进行调整,分区调整了之后,对应的并行度也就可以调整了。
2023-02-16 23:47:11
216
原创 Spark10: 性能优化(Kyro序列化、持久化,JVM调优、并行度、数据本地化)
数据本地化,指的是,数据离计算它的代码有多近。数据本地化对于Spark Job性能有着巨大的影响。如果数据以及要计算它的代码是在一起的,那么性能当然会非常高。但是,如果数据和计算它的代码是分开的,那么其中之一必须到另外一方的机器上。通常来说,移动代码到其它节点,会比移动数据到代码所在的节点,速度要得多,因为代码比较小。Spark也正是基于这个数据本地化的原则来构建task调度算法的。
2023-02-14 22:44:42
800
原创 Spark09: Spark之checkpoint
checkpoint,是Spark提供的一个比较高级的功能。有时候,我们的Spark任务,比较复杂,从初始化RDD开始,到最后整个任务完成,有比较多的步骤,比如超过10个transformation算子。而且,整个任务运行的时间也特别长,比如通常要运行1~2个小时。在这种情况下,就比较适合使用checkpoint功能了。因为对于特别复杂的Spark任务,有很高的风险会出现某个要反复使用的RDD因为节点的故障导致丢失,虽然之前持久化过,但是还是导致数据丢失了。
2023-02-12 16:28:15
1383
1
原创 Spark08: Spark Job的三种提交模式
这种方式主要用于测试,查看日志方便一些,部分日志会直接打印到控制台上面,因为driver进程运行在本地客户端,就是提交Spark任务的那个客户端机器,driver负责调度job,会与yarn集群产生大量的通信,一般情况下Spark客户端机器和Hadoop集群的机器是无法内网通信,只能通过外网,这样在大量通信的情况下会影响通信效率,并且当我们执行一些action操作的时候数据也会返回给driver端,driver端机器的配置一般都不高,可能会导致内存溢出等问题。基于Spark自己的standalone集群。
2023-02-01 23:01:46
1105
原创 Spark07: 宽窄依赖、Stage的划分
也就是说,每一个父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。
2023-02-01 22:55:28
1204
原创 Spark06: 共享变量(广播变量、累加变量)
Spark提供的Accumulator,主要用于多个节点对一个变量进行共享性的操作。正常情况下在Spark的任务中,由于一个算子可能会产生多个task并行执行,所以在这个算子内部执行的聚合计算都是局部的,想要实现多个task进行全局聚合计算,此时需要使用到Accumulator这个共享的累加变量。大家可以想象一个极端情况,如果map算子有10个task,恰好这10个task还都在一个worker节点上,那么这个时候,map算子使用的外部变量就会在这个worker节点上保存10份,这样就很占用内存了。
2023-01-08 22:34:22
538
原创 Spark05: RDD持久化
当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition数据持久化到内存中,并且在之后对该RDD的反复使用中,直接使用内存中缓存的partition数据。cache()是persist()的一种简化方式,cache()的底层就是调用的persist()的无参版本,也就是调用persist(MEMORY_ONLY),将数据持久化到内存中。(1)如果需要进行数据的快速失败恢复,那么就选择带后缀为_2的策略,进行数据的备份,这样在失败时,就不需要重新计算了。
2023-01-08 15:14:09
778
原创 Spark04: Transformation与Action开发
Transformation和Action这里的Transformation可以翻译为转换,表示是针对RDD中数据的转换操作,主要会针对已有的RDD创建一个新的RDD:常见的有map、flatMap、filter等等Action可以翻译为执行,表示是触发任务执行的操作,主要对RDD进行最后的操作,比如遍历、reduce、保存到文件等,并且还可以把结果返回给Driver程序不管是Transformation操作还是Action操作,一般会把它们称之为算子,例如:map算子,reduce算子。
2023-01-03 23:59:07
516
原创 Spark03: 单词统计
然后把spark-core依赖的作用域设置为provided,不需要把相关依赖打入jar包。再创建一个Scala object:WordCountScala。在scala目录下创建包com.sanqian.scala。在scala目录下创建包com.sanqian.java。需要java编译插件、Scala编译插件、打包插件。再创建一个Java类:WordCountJava。提交脚本: lwx_run.sh。
2023-01-02 20:30:52
426
原创 Spark02: Spark运行任务三种方式
spark-shell 实现了用户可以逐行输入代码,进行操作的功能。即可以不像Java一样,编写完所有代码,然后编译才能运行。spark-shell 支持。交互环境 和 python交互环境,在学习测试中可以使用spark-shell 进行API学习。spark-shell会自动创建sparkContext。注意:需要先启动spark standalone集群。比如:需要连接数据库,无法在本地调试的情况。会启动一个spark任务。
2023-01-02 19:35:50
893
原创 Spark01:Spark工作原理
RDD通常通过Hadoop上的文件,即HDFS文件进行创建,也可以通过程序中的集合来创建RDD是Spark提供的核心抽象,全称为Resillient Distributed Dataset,即弹性分布式数据集弹性:RDD数据默认情况下存放在内存中,但是在内存资源不足时,Spark也会自动将RDD数据写入磁盘分布式:RDD在抽象上来说是一种元素数据的集合,它是被分区的,每个分区分布在集群中的不同节点上,从而让RDD中的数据可以被并行操作。
2023-01-01 21:30:43
692
原创 Linux03: shell编程
(1)shell中变量的命名要求: 只能使用数字、字母和下划线,且不能以数字开头(2)变量赋值是通过"="进行赋值,在变量、等号和值之间不能出现空格!
2022-10-31 00:40:18
327
原创 Linux02: 防火墙基本操作
CentOS 7版本后防火墙默认使用的是firewalld,我们可通过运行以下命令来查看防火墙状态以及关闭防火墙。
2022-10-30 23:33:04
91
原创 Redis01: Centos7安装Redis
问题:如果编译报错:zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory。指定前缀的方式:make PREFIX=/opt/module/redis-5.0.9 install。如果不指定前缀,默认会将bin下的可执行脚本复制到/usr/local/bin目录下。解决:编译的时候带上参数,make MALLOC=libc。第二处:指定日志位置,默认丢到/dev/null。进入cli客户端,直接进入。
2022-10-07 17:05:19
277
原创 大数据技术之Hbase
命名空间:相当于MySQL中的数据库行键(rowkey): 相当于MySQL表的主键列族:一系列列的集合,创建表的时候至少要定义一个列族,列不需要定义。数据类型:不管是什么数据类型 在HBASE中存储的时候统一转化为字节数组。
2022-10-07 01:39:37
1847
原创 大数据技术之Hive
Hive是建立在Hadoop上的数据仓库基础架构,它提供一系列的工具,可以进行数据提取、转化、加载(ETL)Hive定义了简单的类SQL查询语言,成为HQL,它允许熟悉SQL的用户直接查询Hadoop中的数据Hive包含SQL解析引擎,它会将SQL语句转译成MR Job,然后再hadoop中执行第二种方式工作中更常用(95%)方式1: load data .... partition方式2: 创建目录,上传数据,绑定已有的数据到指定分区。
2022-10-04 17:46:05
1654
原创 Hadoop之企业级解决方案
MapReduce程序执行时,Reduce节点大部分执行完毕,但是有一个或者几个Reduce节点运行很慢,导致整个程序处理时间变得很长,具体表现为:Reduce阶段一直卡着不动。Hadoop的HDFS和MapReduce框架是针对大数据文件来设计的,在小文件的处理上不但效率低下,而且十分消耗内存资源。SequenceFile需要一个合并文件的过程,文件较大,且合并后的文件不方便查看,必须通过遍历查看每一个文件。解决方案是通常选择一个容器,将小文件同意组织起来,HDFS提供了两种类型的容器,分别是。
2022-10-02 19:03:49
1833
原创 MapReduce之扩展
b. stdout : 是 System.out.println 打印的日志。如果时分布式还需要添加下面的配置,然后将yarn-site.xml分发到其他节点,重启集群。c. syslog : 是logger打印的日志。只是用Map阶段: 当不需要聚合功能只需要过滤和解析式。a. stderr : 错误日志。在yarn-site.xml中添加配置。(2)设置reduce任务数为0。(1)删除reduce相关代码。
2022-10-02 00:08:47
432
原创 MapReduce原理
5. 把所有的临时文件合并成一个大文件,因为一个map任务只会生成一个文件(也有多个分区),每个分区的数据会被shuffle线程拷贝到不同的reduce节点上。3. MapTask的输出会先写入到内存缓冲区(100M),当内存缓冲区的大小达到80%的大小,会把内存中的数据溢写到磁盘里面(溢写之前会进行分区排序,按照key进行升序排列),一直等到MapTask把所有的数据都计算完,最后会把内存缓冲区里面剩余的数据一次性全部刷新到本地磁盘文件中。4. 每个文件都是有多个分区的,同一个分区的数据放到一起。
2022-09-30 23:40:30
736
原创 HDFS入门教程
主要负责定期把edits文件中的内容合并到fsimage中,这个合并操作被称为checkpoint,在合并的时候会对edits中的内容进行转换,生成新的内存保存到fsimage中注意:在NameNode的HA架构中没有SecondaryNameNode进程,文件合并操作会由standby NameNode负责实现。
2022-09-24 22:38:06
786
原创 Java操作HDFS
方法一: 关闭HDFS权限校验,vim hdfs-site.xml 添加配置。其他用户没有访问HDFS的权限,解决办法有两种。方法二:修改HDFS根路径的权限为777。访问HDFS时发生报错。
2022-09-24 14:59:22
1024
原创 Scala教程
默认参数:在函数定义时,允许制定参数的默认值def printMessage(name: String = "itcats", age: Int = 18, country: String = "中国"): Unit = {}printMessage(age = 20, country = "美国")}占位符_ 的使用只能用var,不能用valvar 修饰的属性会自动生成getter / setter方法val 修饰的属性只会生成gettter 方法。
2022-09-20 00:42:28
2174
原创 ElasticSearch Python API教程
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
2022-09-04 00:43:31
1288
原创 pyspark 使用pandas_udf 报错:java.lang.IllegalArgumentException
pyspark使用pandas_udf时的一个坑2.运行报错:3. 解决办法报错原因:pyarrow 版本太高。解决办法:卸载pyarrow,安装低版本的pyarrow,这里安装0.12.0 程序就正常了。
2022-06-13 00:12:59
717
2
原创 windows上搭建pyspark开发环境
软件环境:5. winutils安装6. spark-2.3.2-bin-hadoop2.7安装好jdk后,配置环境变量参考:windows 安装jdk1.8_小猫不会去楼兰捉虫的博客-优快云博客官网下载scala, 将scala解压到指定目录,配置环境变量到path官网下载python,安装并配置环境变量官网下载版本>=spark对应hadoop版本,解压缩后配置HADOOP_HOME,bin目录追加到PATH5. winutils安装 下载地址:GitHub - steveloughran/winut
2022-06-12 20:34:21
723
原创 windows 安装jdk1.8
1. 安装JDK本次安装JDK的版本是jdk-8u162-windows-x64,双击,按照提示一步步进行安装。自己可以根据情况指定安装目录2.配置环境变量 设置环境变量:在桌面右键单击 我的电脑→属性→高级系统设置→高级选项→环境变量→在用户变量 新建3个变量:变量名:JAVA_HOME变量值:C:\Program Files\Java\jdk1.8.0_91 (括号勿打,这里是输入你JDK的安装目录地址)变量名:CLASS_PATH变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_
2022-06-12 17:02:44
731
原创 windows无法上网:代理服务器出现问题或地址有误
1.问题描述微信、QQ可以登录正常使用,也可以ping通百度,但是浏览器无法上网,如下图所示。2.解决办法控制面板→网络和Internet→ Internet选项→连接→局域网设置:取消代理服务器勾选,选择自动检测设置,如下图所示。上网问题就解决了...
2022-05-14 22:36:29
25621
15
原创 pytorch 验证GPU是否可用
代码import torchflag = torch.cuda.is_available()print(flag)ngpu= 1# Decide which device we want to run ondevice = torch.device("cuda:0" if (torch.cuda.is_available() and ngpu > 0) else "cpu")print(device)print(torch.cuda.get_device_name(0))pri
2022-05-14 12:20:20
2656
2
原创 ubuntu20.04 安装TeamViewer
1.下载TeamViewer包wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb2.安装sudo apt install ./teamviewer_amd64.deb安装过程出现提示时是否要继续? [Y / n],键入Y继续安装。安装过程结束后,TeamViewer已经被安装在你的 Ubuntu 20.04 系统上了。3.运行TeamViewer可以通过在命令行中输入 teamvi
2022-05-14 12:12:57
1557
CDH6.0.1安装教程V2.0(亲测).docx
2019-12-13
ElasticSearch技术文档V2.0.docx
2019-12-13
Tensorflow,Keras,pytorch深度学习环境安装教程.docx
2019-12-13
Linux视频教程
2018-02-18
李炎恢jQuery EasyUI视频教程
2018-01-29
BootStrap视频教程
2018-01-27
RAR压缩文件破解
2018-01-27
echarts从数据库获取数据实现
2017-11-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人