原理与实践全书课件完整版ppt全套教学教程最全电子教案电子讲义(最新).pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《原理与实践全书课件完整版ppt全套教学教程最全电子教案电子讲义(最新).pptx》由会员分享,可在线阅读,更多相关《原理与实践全书课件完整版ppt全套教学教程最全电子教案电子讲义(最新).pptx(322页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章Table API&SQL的介绍和使用第二章大数据必备编程知识l案例:动物类(Animal)和鱼类(Fish)l继承关系保证所有动物子类都具有动物类的属性和方法l子类有自己的属性和方法。l除了动物,还有很多其他事物也会移动,使用接口(interface)来抽象“移动”。继承lJava的继承:继承类 extends 实现接口 implements继承publicclassClassAimplementsMoveOverridepublicvoidmove().实现接口publicclassDogextendsAnimalprivateStringdogData;public Dog(Str
2、ing myName,String myDescription,StringmyDogData)this.name=myName;this.description=myDescription;this.dogData=myDogData继承类interfaceclassl重写:子类和父类都定义同名方法,子类的方法会覆盖父类中已有的方法。l重载:多个同名方法,这些方法名字相同、参数不同、返回类型不同。重写与重载publicclassClassAimplementsMoveOverridepublicvoidmove().Override:在子类中重写父类中的同名方法publicclassOver
3、loading/无参数,返回值为int类型publicinttest()System.out.println(test);return1;/有一个参数publicvoidtest(inta)System.out.println(test+a);/有两个参数和一个返回值publicStringtest(inta,Strings)System.out.println(test+a+s);returna+s;同名方法重载:一个类中多个方法都名为test,但是参数类型和返回值类型不同。l案例:Java中的List和ArrayListlArrayList是一个泛型类,List是一个泛型接口lArrayL
4、ist泛型是一种集合容器,可以向这个集合容器中添加String、Double以及其他各类数据类型。没必要创建StringArrayList、DoubleArrayList等类。泛型iststrList=newArrayList();ListdoubleList=newLinkedList();l类名后面加上 l类内部的一些属性和方法都可以使用泛型Tl泛型规范:T 代表一般的任何类。E 代表元素(Element)或异常(Exception)。K 或KEY代表键(Key)。V 代表值(Value),通常与K一起配合使用。Java泛型类publicclassMyArrayList privatein
5、tsize;Telements;publicMyArrayList(intcapacity)this.size=capacity;this.elements=(T)newObjectcapacity;publicvoidset(Telement,intposition)elementsposition=element;OverridepublicStringtoString()Stringresult=;for(inti=0;isize;i+)result+=elementsi.toString();returnresult;l与泛型类类似,使用符号l可以继承并实现这个接口Java泛型接口pu
6、blicinterfaceList.publicListsubList(intfromIndex,inttoIndex);publicclassArrayList implementsList.publicListsubList(intfromIndex,inttoIndex)./返回一个List类型值要实现的子类是泛型的publicclassDoubleListimplementsList.publicListsubList(intfromIndex,inttoIndex)./返回一个List类型值要实现的子类不是泛型的,而是有确定类型的l泛型方法可以存在于泛型类中,也可以存在于普通的类中。
7、l泛型方法的类型E和泛型类中的类型T可以不一样。泛型方法是泛型类的一个成员,泛型方法既可以继续使用类的类型T,也可以自己定义新的类型E。Java泛型方法publicclassMyArrayList./public关键字后的表明该方法是一个泛型方法/泛型方法中的类型E和泛型类中的类型T可以不一样public E processElement(E element).returnE;lJava泛型信息只存在于代码编译阶段,当程序运行到JVM上时,与泛型相关的信息会被擦除。l对于绝大多数应用系统开发者来说影响不太大,对于框架开发者来说,必须要注意。类型擦除ClassstrListClass=newAr
8、rayList().getClass();ClassintListClass=newArrayList().getClass();/输出:classjava.util.ArrayListSystem.out.println(strListClass);/输出:classjava.util.ArrayListSystem.out.println(intListClass);/输出:trueSystem.out.println(strListClass.equals(intListClass);泛型擦除:无法区别strListClass和intListClass这两个类型l适合进行并行计算的一种编
9、程范式l非函数式编程:创建中间变量,分步执行l函数式编程:与数学表达式更相似实现单个函数,将零到多个输入转换成零到多个输出。比如,add()将两个输入转化为一个输出。将多个函数连接起来,实现所需业务逻辑。比如,将add()、multiply()连接到一起。函数式编程addResult=x+yresult=addResult*z非函数式编程result=add(x,y).multiply(z)函数式编程lLambda表达式被一些编程语言用来实现函数式编程。l一个箭头符号-,两边连接着输入参数和函数体。Lambda表达式(parameters)-bodyJava的Lambda表达式的语法规则/接收
10、2个int类型参数,返回它们的和(intx,inty)-x+y/接收1个String类型参数,将其输出到控制台,不返回任何值(Strings)-System.out.print(s);/参数为圆半径,返回圆面积,返回值为double类型(doubler)-doublepi=3.1415;returnr*r*pi;几个JavaLambda表达式案例l输入参数:接收零到多个输入参数程序员可以提供输入类型,也可以不提供类型,让代码根据上下文去推断参数可以放在圆括号()中,多个参数通过英文逗号,隔开l函数体:可以有一到多行语句函数体有多行内容,必须使用花括号 输出的类型与所需要的类型相匹配Java L
11、ambda表达式lLambda表达式本质是一种接口,它要实现一个函数式接口(Functional Interface)中的虚方法l函数式接口是一种接口,并且它只有一个虚方法。lFunctionalInterface 注解函数式接口FunctionalInterfaceinterfaceAddInterfaceTadd(Ta,Tb);publicstaticclassMyAddimplementsAddInterfaceOverridepublicDoubleadd(Doublea,Doubleb)returna+b;如果没有Lambda表达式(Integera,Integerb)-a+b;使用
12、Lambda表达式lJava 8之后推出的,专注于对集合(Collection)对象的操作。l右侧案例:数据先经过stream()方法被转换为一个Stream类型,后经过filter()、map()、collect()等处理逻辑,生成我们所需的输出。各个操作之间使用英文点号.来连接,这种方式被称作链式调用(Method Chaining)。l链式调用:将多个函数连接起来。lFlink的API是面向数据集或数据流的操作。这些操作分布在大数据集群的多个节点上,并行地分布式执行。Java Stream APIListstrings=Arrays.asList(abc,bc,12345,efg,abc
13、d,jkl);Listlengths=strings.stream().filter(string-!string.isEmpty().map(s-s.length().collect(Collectors.toList();lengths.forEach(s)-System.out.println(s);第九章Flink的部署和配置部署模式Standalone集群:集群内只部署FlinkHadoop YARN集群:兼容Hadoop生态,可以部署Hadoop、Hive、Spark、FlinkKubernetes集群:兼容各类容器l至少一个Master,至少一个WorkerlMaster:Dis
14、patcher、ResourceManager和JobManagerlWorker:TaskManagerl安装好Java、配置好SSH免密码访问l配置Flink主目录的conf/flink-conf.yaml和conf/slaves两个文件l将Flink主目录部署到每个节点的相同路径,或者部署到所有节点都可访问的共享目录l启动这个集群:bin/start-cluster.sh Standalone集群一个Standalone集群拓扑样例$./bin/flinkrun-m192.168.0.1:8081./examples/batch/WordCount.jar提交作业:使用针对Hadoop的
15、Flink,设置HADOOP_CONF_DIR和YARN_CONF_DIR 等与Hadoop相关的配置启动好YARN集群三种作业提交方式:Per-Job:每次向YARN提交一个作业,YARN为这个作业单独分配资源,基于这些资源启动一个Flink集群,作业运行结束,相应的资源会被释放。Session:在YARN上启动一个长期运行的Flink集群,用户可以向这个集群提交多个作业。Application:在Per-Job模式上做了一些优化。Hadoop YARNlClient将作业提交给YARN的ResourceManagerlYARN为这个作业生成一个Application Master以运行Fi
16、nk Master,里面运行这运行着JobManager和Flink-YARN ResourceManager lJobManager会根据本次作业所需资源向Flink-YARN ResourceManager申请Slot资源 lFlink-YARN ResourceManager会向YARN申请所需的资源作为TaskManagerlTaskManager将这些Slot注册到Flink-YARN ResourceManagerlJobManager将作业的计算任务部署到各TaskManager上 YARN Per-JobYARNPer-Job模式l在Client上,使用bin/yarn-ses
17、sion.sh启动一个YARN Session,Flink向YARN ResourceManager申请一个Application Masterl用户提交一个作业,作业被发送给DispatcherlDispatcher会启动针对该作业的JobManagerlJobManager向Flink-YARN ResourceManager上申请所需资源,启动TaskManagerlTaskManager注册lJobManager将计算任务部署到各TaskManager上l如果用户提交下一个作业,那么Dispatcher启动新的JobManager,新的JobManager负责新作业的资源申请和任务调度
18、。YARN SessionYARNSession模式lPer-Job和Session模式作业提交的过程依赖Client,main()方法在Client上执行,main()方法会将作业的各个依赖下载到本地,生成JobGraph,并将依赖以及JobGraph发送到Flink集群,负载很重。lApplication模式允许main()方法在JobManager上执行,这样可以分担Client的压力 YARN Applicationl两种方式:Kubernetes和Kubernets原生lKubernetes原生Session模式:使用bin/kubernetes-session.sh启动一个Kube
19、rnetes SessionKubernetes相关组件将进行初始化,生成Flink Master(Dispatcher、Flink-Kubernetes ResourceManager)用户提交作业,申请资源,将作业运行到TaskManager上lKubernetes原生Application模式KubernetesKubernetes原生Session模式l使用Key-Value来设置参数,很多进程会读取这个文件l从Flink官网下载的Flink主目录里的flink-conf.yaml有一些默认设置,针对单机环境,在自己环境中使用,需要修改这个文件conf/flink-conf.yaml
20、l安装Java,设置$JAVA_HOMEl类加载:将Java的.class文件加载到JVM虚拟机l一个Flink作业主要加载两种类:Java Classpath:JDK核心类库和Flink主目录下lib文件夹中的类用户类(User Code):用户编写的应用作业中的类l类加载策略:子类优先(Child-first):优先加载用户编写的应用作业中的类,Flink默认使用Child-first父类优先(Parent-first):优先加载Java Classpath中的类Java和类加载l并行度(parallelism):每个算子都会被切分为parallelism个子任务,分布到多个Slot上。根
21、据计算规模大小,调整并行度。l如果作业开启了算子链和槽位共享,一个Slot上运行着一个作业所有算子组成的流水线(Pipeline),这个作业需要parallelism个Slot。l槽位划分:将TaskManager划分成多少个Slot。使用 taskmanager.numberOfTaskSlots 设置默认值为1,Standalone集群官方建议将参数值配置为与CPU核心数相等或成比例 配置taskmanager.numberOfTaskSlots没有绝对的准则:每个TaskManager下有一个Slot,该Slot会独立运行在一个JVM进程中。隔离性好。每个TaskManager下有多个S
22、lot,那么多个Slot同时运行在一个JVM进程中。多个Slot可以共享资源,隔离性差。并行度和槽位划分l堆区(Heap):JVM虚拟化之后的内存,存储Java对象实例,使用Java垃圾回收(Garbage Collection,GC)机制来清理内存中的不再使用的对象。l某个时间点,必须进行一次Full GC,Full GC影响Java应用的性能。l悖论:Heap越大,Full GC时间越长。Heap太小,会出现OutOfMemoryError异常。l堆外(Off-Heap):直接由操作系统管理的内存,适合读写操作频繁的场景。使用、监控和调试更复杂。Full GC影响性能时,可以考虑Off-H
23、eap。Java内存lJVM进程:Master、TaskManagerlFlink占用的内存(Total Flink Memory):Flink可以使用的内存JVM HeapOff-heap MemoryFlink Managed Memory:TaskManager个别场景使用 Direct Memory:网络通信缓存使用的内存 lJVM相关内存(JVM Specific Memory):Java程序都需要的一块内存区域lFlink将内存管理部分做了封装,用户在绝大多数情况下不用关注数据到底是如何写入内存的Flink内存模型lMaster占用内存不大l最简单的配置方法:设置Total Pro
24、cess Memory(jobmanager.memory.process.size),根据默认分配比例,将内存分配给各个模块。设置Total Flink Memory(jobmanager.memory.flink.size),如果Master进程需要管理多个作业,需要增大这个配置。Master的内存配置 lTaskManager涉及数据处理,对内存的需求很高l根据是否为Flink框架所用,分为Flink框架和非Flink框架,框架使用的内存,用户任务无法使用(Framework Heap,Framework Off-heap)用户任务使用的内存(Task Heap、Task Off-hea
25、p、Flink Managed Memory和Network)l根据堆区非堆区,分为Heap和Off-heapTask Heap:用户程序内存Flink Managed Memory:流处理下RocksDB的State Backend,批处理下排序、中间数据缓存等Network:Netty缓存TaskManager的内存配置 l粗粒度的配置方法:配置Total Process Memory或Total Flink Memory两者中的任意一个。各个子模块根据默认比例获得相应的内存。Total Process Memory:整个进程的内存,适合容器化部署方式。(taskmanager.memor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 原理 实践 全书 课件 完整版 ppt 全套 教学 教程 电子 教案 讲义 最新
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内