自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 问答 (2)
  • 收藏
  • 关注

原创 Flume 开发 (企业开发案例)

1.监控端口数据案例1)案例需求首先启动Flume任务,监控本机44444端口 [服务端];然后通过netcat工具向本机44444端口发送消息 [客户端];最后Flume将监听的数据实时显示在控制台。2)需求分析3)实现步骤1[root@flume0 apache-flume-1.9.0-bin]# yum install -y nc2.创建Flume Agent配置文件demo1-netcat-memory-logger.conf//job目录为flume安装目录下

2020-12-13 19:27:49 331

原创 Flume内置拦截器与自定义拦截器(代码实战)

官网上内置拦截器的表由于拦截器一般针对Event的Header进行处理,这里先介绍一下Eventevent是flume中处理消息的基本单元,由零个或者多个header和body组成。Header 是 key/value 形式的,可以用来制造路由决策或携带其他结构化信息(如事件的时间戳或事件来源的服务器主机名)。你可以把它想象成和 HTTP 头一样提供相同的功能——通过该方法来传输正文之外的额外信息。Body是一个字节数组,包含了实际的内容。flume提供的不同source会给其生成的event

2020-12-13 17:42:14 2518

原创 Kafka Java API(详解与代码实战)

Producer API添加依赖<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.11.0.0</version></dependency>相关APIKafkaProducer:需要创建一个生产者对象,用来发送数据。Pro

2020-12-10 22:50:25 350

原创 Kafak消息队列与其基础架构

消息队列的两种模式(1)点对点模式(一对一,消费者主动拉取数据,消息收到后清除)消息产生者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费信息。消息被消费后,Queue中不再有存储,所以消息消费者不可能消费已经被消费的消息,Queue支持存在多个消费者,但是对于一个消息而言,只有一个消费者可以消费。(2)发布\订阅模式(一对多,消费者消费数据之后不会清除信息)(Kafka消息队列对应的模式)消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和

2020-12-10 22:18:36 196

原创 Centos 解压到指定目录 (tar解压命令)

常用的:tar -zxvf *****.tar.gz -C /opt/**(解压到指定目录)整理对应的命令tar –xvf file.tar //解压 tar包tar -xzvf file.tar.gz //解压tar.gztar -xjvf file.tar.bz2 //解压 tar.bz2tar –xZvf file.tar.Z //解压tar.Zunrar e file.rar //解压rarunzip file.zip //解压zip...

2020-12-10 20:36:12 11381

原创 Flume概念与其组件的分析和使用 (超详细)

概述1.Flume的定义Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。Flume最主要的作用是,实时读取服务器本地磁盘的数据,将数据写入到HDFS。2.Flume的优点① 可以和任意存储进程集成② 输入的数据速率大于写入目的存储的速率,flume会进行缓冲,减小hdfs的压力。③ flume中的事务基于channel,使用了两个事务模型(sender + receiver),确保消息被可靠发送。Fl

2020-12-08 23:22:35 214

原创 Hive中表分类概念介绍

表分类– 由Hive全权管理的表所谓的管理表指的是hive是否具备数据的管理权限,如果该表是管理表,当用户删除表的同时hive也会将表内对应的数据删除,因此在生产环境下,为了防止误操作,带来数据损失,一般考虑将表修改为非管理表-外部表。总结:Hive的管理,表结构, hdfs中的数据文件,都归Hive全权管理。(hive删除管理表,HDFS对应文件也会被删除。)缺点:数据不安全。外部表– 引用映射HDFS数据作为表管理,但无法删除数据外部表和管理表最大的区别在于删除外部表,只是将MySQL中对

2020-12-06 17:04:43 201

原创 Hive中 HQL高级介绍及用法

SQL关键词执行顺序from>where条件>group by>having条件>select>order by>limit注意:一旦slq出现group by,后续的关键词能够操作的字段只有(分组依据字段,组函数处理结果)常见步骤:0.各个数据类型的字段访问(array、map、struct)1. 条件查询:= != >= <=2. and or between and3. order by[底层会启动mapreduce进行排序]4. .

2020-12-06 12:19:19 876

原创 Zookeeper 选举机制之投票流程

流程分析:1.只有启动了的zk节点才能参与投票。(启动后才能进行投票网络通信)2.当zk节点A启动时,它接受投票的时候,每个zk服务启动,接受一轮对自己的投票。(会提前给每个zk节点发放票据)3.leader角色决策条件,当启动后,如果自身接受投票后的票数超过zk集群节点个数的一半,立刻角色变为leader。4.投票操作,需要竞争,myid编号—权重。判断竞争票的双方的myid的大小。启动过程中选主流程:1.启动zz21:接受投票,集群中只有zk21,有1票,投给自己。zk21--得.

2020-12-01 21:34:00 813

原创 HAHadoop架构分析 (高可用 Hadoop架构)

1.NameNode单点故障概念:如果NN主机宕机,导致整个HDFS集群中所有节点全部停止工作。解决思路:为NameNode主机提供一个NameNode备机。方法:1.实时监控NameNode11宕机2.发现NameNode11宕机,触发一段操作。启动NameNode12备机,接管HDFS管理。方案:Hadoop2版本提供ZKFC,基于zk实现的故障转移程序,本质上是zk的一个客户端程序。1:启动本级namenode,像zk注册节点znode。2:监听该节点znode变化。3:防止nn.

2020-12-01 20:43:33 337 1

原创 Java 中的一些常用类

位于java.long包下是所有类的超类object o = 任意类型的对象Object类中所有受保护,公开的方法,是所有类所具备的常用方法:getClass() : 返回引用中指向的对象的实际类型//判断 a 和 a1指向的实际对象 是否是同一类型System.out.println(a.getClass() == a1.getClass()); //一致 - true; 不一致- falseint hashCode(): 返回值对象的哈希码值(对

2020-07-02 12:34:04 161

原创 Java 中内部类简单概念

概念:在一个类内部定义的类1.内部类会生成独立的.class文件。文件名Outer$Inner.class2.内部类可以访问外部类的私有属性,从而不破坏外部类的封装性成员内部类(类比成员变量)1.定义位置:类以内,方法以外2.如何创建对象Outer o = new Outer(); //创建外部类对象Outer.Inner inner = o.new Inner(); //创建成员内部类对象3.注意:a. 访问外部类的属性:外部类类名.this.外部类属性名 例:Outer.thi

2020-07-01 23:37:29 147

原创 Java 中接口的简单概念

概念:一种标准,一种规范;是使用者和实现者之间的一种约定。接口的语法:1.interface 接口名 { }2.接口不能创建对象,但是可以声明引用。3.接口会生成.class文件4.接口不能定义构造方法5.接口中的属性默认为公开静态常量(public static final)6.接口中的方法默认为公开抽象方法(public abstract)注意:接口不是类实现类的定义//实现类:MyClass//IA为接口//MyClass实现类IA接口class MyClass implem

2020-07-01 22:30:07 240

原创 Java 中三个修饰符及相关概念

abstract(抽象的)1.修饰类 --> 抽象类抽象类 不能创建对象,可以声明引用抽象类可以定义属性和方法以及构造方法。构造方法是在创建子类对象时使用(创建子类对象 先创建父类对象)2.修饰方法 --> 抽象方法语法:public abstract 返回值类型 方法名(参数列表);注意: public abstract 没有先后顺序抽象方法只有声明 没有实现,连 { } 都没有抽象方法只能定义在抽象类中子类必须实现(覆盖)抽象父类中的抽象方法;否则,子类

2020-07-01 12:25:53 202

原创 Java 中数组简单介绍

概念:一组连续的存储空间,存储多个相同数据类型的数据语法1.声明数组 数据类型[] 数组名; int[] a; int []a; int a[];2.分配空间 数组名 = new 数据类型[数组长度]; a = new int[4];1)多种声明方式声明的同时并且分配空间 int [] a = new int[4];显示初始化int [] a = new int [] {1,2,3,4,5};int [] a = {1,2,3,4,5};2)数组元素具有默认值数组类型

2020-06-30 20:35:49 159

原创 Java 中参数简单介绍

存在的问题:1.可复用性差2.可读性差3.可维护性差4.代码重复率高概念:一段功能代码,可以通过名字反复使用函数的使用流程1.函数的声明 约定函数的功能(形参,返回值类型)public static 返回值类型 函数名(形参列表)参数:调用者向被调用者内部传递的数据形式参数(形参):相当于函数内部的局部变量实际参数(实参):为形参赋值注意:实参和形参 个数和顺序必须保持一致返回值:被调用者返回给调用者的数据void 没有返回值八种基本数据类型引用数据类型注意:返回值的数

2020-06-30 19:50:33 1982

原创 线程 总结(二)

线程池//线程池 -- 》 Executors.newFixedThreadPoo() 获取线程池ExecutorService es = Executors.newFixedThreadPool(2);Runnable r1 = new Runnable() { public void run() { for (int i = 0; i < 100; i++) { System.out.println("###"+i); }

2020-05-25 18:36:48 174

原创 线程 总结(一)

进程:操作系统上并发运行的一个程序。并发:由cpu分配时间片执行 微观串行,宏观并行线程:进程中并发的一个任务线程的组成1.cpu2.数据 堆空间共享 栈空间独立3.代码创建线程的方式1.实现Runnable接口,创建Runnable类型的对象。将其提交给Thread对象class Thread implements Runnable{ public void run(){...

2020-05-25 17:03:46 173

原创 Scala中的 模式匹配,样例类,密封类 与示例代码

模式匹配类易于Java中的swith…case语句,但是功能比Java的强大根据不同情况进行匹配操作,Scala模式匹配除对值匹配之外,还可以进行类型的匹配,集合,样例类等复杂匹配基本语法值匹配object MathPatternExample{ def main(args: Array[String]): Unit ={ //值匹配 val city: String ="bj" city match{ case "bj" => println("北京")

2020-05-09 23:07:36 196

原创 Scala中的 隐式转换 与示例代码

隐式转换函数指的是以implicit关键字声明的带有单个参数的函数。这样的函数将被自动应用,将值以一种类型转换成另一种类型。隐式转换函数通常不会由用户手动调用,而是由Sacala进行调用。如果要进行隐式转换,则需要对隐式转换函数进行导入(import)。因此通常建议将饮食转换函数的名称命名为"one2one"的形式。常用使用方式:隐式值隐式参数参数的隐式转换隐式类Scala会考虑如下位置的隐式转换函数:位于源或目标类型的伴生对象中的隐式函数位于当前作用域可以以单个标识符指代的隐式函数

2020-05-08 21:07:53 236

原创 Scala 中的对象(object)和类(class)与示例代码

类(class)类是对象的模板,主要由方法和属性构成。声明定义语法:class 类名{ //属性 //方法}class User{ //属性 var id;Int = 10 var name:String = "xiaohei" //方法(等同于函数) def sayHi(name:String):String - { "Hello" + name }}创建...

2020-05-06 22:16:49 1294

原创 Scala中 函数的概念 与示例代码

函数是一个右特定功能的代码。具备三要素:函数名,参数列表,函数体。def 函数名(参数名:参数类型,....) :返回值类型 = { // 函数体}// maindef main(args:Array[String]):Unit = { }// 自定义函数 sum(1,2) = 3sdef sum(x:Int,y:Int):Int = { x+y}注意:函...

2020-05-05 19:38:02 171

原创 Flink 中的Physical partitioning(物理分区)及示例代码

Flink通过以下方法对转换后的确切流分区进行了低级控制。Rebalancing(Round-robin partitioning)分区元素循轮询,为每个分区创建相等的负载。有助于在数据不对称的情况下优化性能。在存在数据偏斜的情况下对性能优化有用。val env =StreamExecytionEnvironment.getExecutionEnvionment env.socketTe...

2020-05-04 21:10:03 636

原创 Flink 中Operators(操作符)及示例代码

Transformations(转换)DataStream → DatasTREAMMap获取一个元素并生成一个元素。将输入流的值加倍的映射函数:dataStream.map( x => x * 2)FlatMap接受一个元素并生成零个、一个或多个元素。将句子分割成单词的平面图功能:dataStream.flatMap(str => str.split(" "))F...

2020-05-04 20:17:58 440

原创 Flink 中的 Window Function(窗口函数)及示例代码

Window Functions定义窗口分配器后,我们需要指定要在每个窗口上执行的计算。这是Window Fucntion的职责,一旦系统确定窗口已准备好进行处理,就可以处理每个窗口的元素。窗口函数可以是ReduceFunction,AggregateFunction,FoldFunction,WindowFunction或ProcessWindowFunction之一。前两个可以更有效地执...

2020-05-04 16:46:29 3120 1

原创 Flink 中的 Window Assigners(窗口分配器)

Window Assigners指定流是否为keyed之后,下一步是定义Window Assigner。Window Assigners定义了如何将元素分配给Window。这是通过window (…)(对于keyed流)或windowAll()(对于非keyed流)调用中指定您选择的WindowAssihner来完成的。WindowAssigner负责将每个传入元素分配给一个或多个窗口。Fli...

2020-05-02 21:43:03 1602

原创 Flink 中Join操作概念及 示例代码

Window Join窗口join将共享相同key并位于同一窗口中的两个流的元素连接在一起。可以试用WindowAssigner定义这些窗口,并根据两个流的元素对其进行评估。然后将双方的元素传递到用户定义的JoinFunction或FlatJoinFunction,在此用户可以发出满足连接条件的结果。代码如下streamA.join(streamB) .where(<KeySelec...

2020-04-30 23:09:55 850

原创 Flink中 报错 Job execution failed

org.apache.flink.runtime.client.JobExecutionException: Job execution failed可能导致错误的原因有两点:没有在对应机器上启动 nc -lk 9999,或端口号不一致。发送的数据类型与处理数据方法中的类型不一致。...

2020-04-30 11:53:44 8849 5

原创 Flink 中的EventTime详细概念 及示例代码

Flink时间窗口的计算中,支持多种时间的概念:Processsing,IngestionTime,EventTime。如果在Flink中用户不做任何设置,默认使用的是ProcesssingTime,其中ProcesssingTime,IngestionTime都是由计算节点产生。不同的是IngestionTime是DataSource组件在产生记录的时候指定时间,而ProcesssingTi...

2020-04-29 22:22:34 4125

原创 Flink 中的 Evictors(剔除器) 部分源码剖析 及示例代码

Flink的窗口模型允许除了WindowAssigner和Trigger之外还指定一个可选的Evictou。可以试用evictor(…)方法来完成此操作。Evictor可以在Trigger处罚后,应用Window Function之前或之后从窗口中删除元素。源码:public interface Evictor<T, W extends Window> extends Serial...

2020-04-29 21:33:00 275

原创 Flink中 的 Managed Keyed State 概念及示例代码

Managed Keyed StateManaged Keyed State接口提供不同类型的状态的访问,所有状态都限于当前输入元素的key。这意味着只能在KeyedStream上使用这种类型的状态。用户可以通过stream.keyBy(...)创建,flink内建了以下六种的state。ValueState<T>:使用场景:该状态主要用于存储单一状态值。保留了一个可以更新...

2020-04-26 11:26:34 410

原创 Spark SQL自定义函数及示例代码

自定义函数:内置函数无法满足需求时,通过自定义方式扩展函数库增强功能。单行函数函数应用于每一行数据,返回处理结果。如:upper(小写转大写),lower(大写转小写)object FunctionExample{ def main(args: Array [String]) : Unit= { val spark = SparkSession.builder().appName("...

2020-04-21 22:28:34 196

原创 Spark SQL中Join连接概念以及示例代码

Join连接类型内连接:A表和B表符合条件的数据进行连接左外连接:A表的所有数据和B表符合条件的数据进行连接右外连接:B表的所有数据和A表符合条件的数据进行连接全外连接:A表和B符合条件数据连接,并显示两张表未连接的数据笛卡尔连接(交叉连接):A表的每一条数据和B表每一条数据进行连接左半开连接(left semi join):等价于数据库中in,枚举查询左反连接(left anti...

2020-04-18 09:31:29 670

原创 Spark SQL中窗口函数(三个案例示例代码)

需要用到的依赖 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.4.4</version> </dependency>...

2020-04-17 21:36:04 498

原创 Spark SQL概念与 Dataset和DataFrame的创建

概述:SQL:结构化查询语言Spark SQL是用于结构化数据处理的Spark模块(批/流处理),根据应用中数据类型和转换处理进行自动程序优化。Datasets and DataFramesSpark SQL中的两个非常重要的操作对象。Dataset数据集对象,代表是一个分布式数据集合,类似于功能增强RDD(强大函数和执行优化),Dataset可以通过JVM对象和函数转换操作获得,支持...

2020-04-17 12:56:17 237 2

原创 Spark广播变量和累加器(示例代码)

默认:Spark应用的算子函数中如果使用到Driver程序定义的变量,则该变量会进行反序列化并且拷贝每一个Task中,Task实际上对拷贝变量副本进行操作。缺点:1.内存式计算:拷贝多份相同外部变量,浪费计算节点内存空间。2.效率:效率低,数据序列化,网络传输,浪费极大资源。广播变量: 优化 算法优化效率极高广播变量使程序员可以在每台计算节点上保留一个只读变量,而不是将其副本与任务...

2020-04-14 21:22:08 267

原创 Spark应用任务的提交流程

开发Spark应用,需要将应用打成计算jar包,上传到Spark集群。接下来通过/spark-submit xxx.jar,初始化Driver Program。Driver程序会进行一系列初始化操作,准备SparkContext对象(运行环境)。请求分布式计算的资源管理器分配相应对应申请单位的计算资源,分布式资源管理器会分配空闲的计算节点,承担本次计算任务(反向注册)。Driver程序分析...

2020-04-13 22:25:01 233

原创 负载均衡(LB)与高可用(HA)的简单概念

什么是负载均衡负载均衡是一种技术解决方案,用来在多个资源中分配负载,达到最优化资源使用,避免过载。资源,相当于每个服务实例的执行操作单元,负载均衡就是将大量的数据处理操作分摊到多单元进行执行,用于解决互联网分布式系统的大流量,高并发和高可用的问题。什么是高可用先了解下CAP定理CAP定理,又称CAP原则和作布鲁尔定理,指的是在一个分布式系统中,Consistency(一致性)、 Avai...

2020-04-11 11:45:31 2498

原创 RDD的容错机制 以及相关代码示例

默认策略-重新计算:如果RDD依赖关系仅是窄依赖,只需要重新计算一次故障分区就可以了;如果RDD依赖关系既有窄依赖又有宽依赖,需要重新计算故障分区之前的所有的分区数据,仅保留故障分区的数据。RDD进行持久化:将指定RDD的内容持久化自盘或者内存中;在重复计算或者结果复用时,直接从内存或者磁盘中恢复RDD的数据。RDD持久化Checkpoint:将某个计算过程数据作为检查点持久化保存到共享的分布...

2020-04-07 22:24:21 561

原创 RDD的依赖问题 与WordCount的原理剖析

RDD依赖关系决定了Stage拆分sc.textFile("hdfs://Spark:9000/words.txt") // 数据源RDD.flatMap(_.split(" ")) // 数据源RDD ---> FlatMap RDD.map((_,1L)) // FlatMap RDD ---> ...

2020-04-07 20:36:52 245

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除