自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 hadoopHA原理及其实现

HDFS存在的问题①NameNode单点故障,难以应用于在线场景②NameNode压力过大,且内存受限,影响系统扩展性尤其是当这个namenode节点只有一个时,一旦发生故障,就算是立即重启也需要较长时间,那么这一段时间内系统无法工作;而且,单个namenode节点内存有限,使得datenode无法扩展。Hadoop HA(High Available),为解决单点故障问题,提出Hado...

2020-04-10 14:51:49 577

原创 [机器学习] 学习笔记一

基本概念在学习机器学习之前,首先要搞清楚它的定义、研究内容等等基本概念。定义:机器学习是致力于通过计算的手段,利用数据来改善系统自身的性能的学科研究内容:从数据中产生“模型”的算法(即学习算法)如何运用:有了学习算法,将经验数据传给学习算法后,产生相应模型;在面对新情况时,模型将会给出相应的判断。举个日常例子理解机器学习整个过程,当我们有了一些西瓜(训练数据集),且知道哪些是好瓜哪些是坏...

2020-03-11 15:23:12 390 1

原创 Spark学习七 ——总体流程分析

Spark总体流程简述1.构建DAG(调用RDD上的方法)2.DAGScheduler将DAG切分Stage(切分的依据是Shuffle),将Stage中生成的Task以TaskSet的形式给TaskScheduler3.TaskScheduler调度Task(根据资源情况将Task调度到相应的Executor中)4.Executor接收Task,然后将Task丢入到线程池中执行常见术语...

2020-03-10 16:51:15 340

原创 spark学习六——自定义排序以及JDBC RDD

Scala比较器两个特质Scala提供两个特质(trait)Ordered与Ordering用于比较。其中,Ordered混入(mix)Java的Comparable接口,而Ordering则混入Comparator接口。众所周知,在Java中实现Comparable接口的类,其对象具有了可比较性;实现comparator接口的类,则提供一个外部比较器,用于比较两个对象Ordered...

2020-03-10 16:50:57 343

原创 spark学习五——归属地计算案例

cache方法他可以将数据标记为cache,在触发action的时候,会将数据缓存进内存当中,并进行计算。被标记为cache的RDD第一次触发action的时候,因为需要将数据缓存入内存当中,时间会比平时慢。但是在后续需要运用该被标记RDD进行计算的时候,计算会快特别多,十分快。所以需要多次重复运用的数据的时候可以将其cache,极大提高效率。比如机器学算法的多次迭代什么的cache的前提...

2020-03-10 16:50:40 704

原创 spark学习四——WordCount过程详解

object WordCount { def main(args: Array[String]): Unit = {//创建spark配置,设置应用程序名字 //val conf = new SparkConf().setAppName("ScalaWordCount") val conf = new SparkConf().setAppName("ScalaWord...

2020-03-10 16:49:51 959

原创 spark学习三——spark案例分析 分组TopN

数据:http://bigdata.edu360.cn/laozhanghttp://bigdata.edu360.cn/laozhanghttp://bigdata.edu360.cn/laozhaohttp://bigdata.edu360.cn/laozhaohttp://bigdata.edu360.cn/laozhaohttp://bigdata.edu360.cn/laozh...

2020-03-10 16:49:36 423

原创 Spark学习二——Spark之RDD

什么是RDDRDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。RDD的5特属性获取分区列表(g...

2020-03-10 16:49:13 256

原创 Spark学习一 ——初步认识Spark

1、什么是SparkApache Spark™是用于大规模数据处理的统一分析引擎。是基于内存计算的大数据并行计算框架spark是一个实现快速通用的集群计算平台。它是由加州大学伯克利分校AMP实验室 开发的通用内存并行计算框架,用来构建大型的、低延迟的数据分析应用程序。它扩展了广泛使用的MapReduce计算模型。高效的支撑更多计算模式,包括交互式查询和流处理。spark的一个主要特点是能够...

2020-03-10 16:48:37 865

原创 Scala语言学习六 scala模拟实现Master和worker通信过程概述

Spark Master和worker通信过程图解代码详解SparkMasterpackage cn.sheep.sparkimport akka.actor.{Actor, ActorSystem, Props}import com.typesafe.config.ConfigFactoryimport scala.concurrent.duration._class Spar...

2020-03-10 16:47:46 366

原创 Scala 语言学习五——高级语法

隐式(implicit) 详解通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码。掌握 implicit 的用法是阅读 spark 源码的基础, 也是学习 Scala 其它的开源框架的关键,implicit 可分为:隐式参数隐式转换类型隐式类隐式参数定义方法时,...

2020-03-10 16:46:35 379 1

原创 Scala语言学习四-akka actor

并发编程模型 Akka -并发编程框架(不需要关注并发情况底层的东西,易开发易维护)Akka 介绍写并发程序很难。 程序员不得不处理线程、 锁和竞态条件等等, 这个过程很容易出错, 而且会导致程序代码难以阅读、 测试和维护。Akka 是 JVM 平台上构建高并发、 分布式和容错应用的工具包和运行时。 Akka 用 Scala 语言写成, 同时提供了 Scala 和 JAVA 的开发接口。...

2020-03-10 16:45:36 268

原创 Scala语言学习三——类和对象

Scala 类和对象类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。scala 单例对象在 Scala 中, 是没有 static 这个东西的, 但是它也为我们提供了单例模式的实现方法, 那就是使用关键字 object, object 对象不能带参数。就是说每次调用...

2019-12-02 23:06:03 357

原创 Scala语言学习二——集合

Scala CollectionScala提供了一套很好的集合实现,提供了一些集合类型的抽象。Scala 集合分为可变(mutable)的和不可变的集合(immutable)。可变集合:长度可变,内容可变不可变集合:长度不可变,内容也不可变可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模...

2019-11-30 21:26:23 347

原创 Scala语言学习一——基础语法

什么是 ScalaScala 是一种多范式的编程语言, 其设计的初衷是要集成面向对象编程和函数式编程的各种特 性 。 Scala 运 行 于 Java 平 台 (Java 虚 拟 机 ) , 并 兼 容 现 有 的 Java 程 序 。为什么要学 Scala优雅: 这是框架设计师第一个要考虑的问题, 框架的用户是应用开 雅直接影响用户体验。速度快: Scala 语言表达能力强, ...

2019-11-28 20:47:50 610

原创 hadoop系列十九——sqoop知识点总结

1、概述sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具。导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统。实现hadoop 存储系统和关系型数据库的数据互相迁移;导出数据:从Hadoop的文件系统中导出数据到关系数据库mysql等。、2、工作机制将导入或导出命令翻译成mapreduce程序来实现。...

2019-11-12 20:48:20 246

原创 hadoop系列十八——案例 App数据统计与报表统计

项目背景网站、app的运营者需要知道自己的产品或服务的运营状况,就需要对使用自己产品的用户进行各种角度的数据分析,比如:用户数量新增用户留存用户活跃用户地域分析渠道分析…要做这样的分析,数据来源应该是用户的产品使用的行为日志,行为日志是由app或者网站的页面获取用户相关信息后,发送给后台服务器记录下来的:项目步骤1.采集数据 (待完善)从服务器通过flume agent ...

2019-11-08 21:39:44 1274

原创 hadoop系列十七——zookeeper概述

zookeeper概念介绍ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来...

2019-11-03 16:14:11 494

原创 hadoop系列十六——MapReduce之Combiner详解(可解决数据倾斜问题)

为什么需要进行Map规约操作众所周知,Hadoop框架使用Mapper将数据处理成一个个的<key,value>键值对,在网络节点间对其进行整理(shuffle),然后使用Reducer处理数据并进行最终输出。在上述过程中,我们看到至少两个性能瓶颈:(1)如果我们有10亿个数据,Mapper会生成10亿个键值对在网络间进行传输,但如果我们只是对数据求最大值,那么很明显的Mappe...

2019-10-23 15:31:50 449

原创 hadoop系列十五——MapReduce实现join案例

实现该hive语法的MapReduce的代码 select a.*,b.* from a join b on a.uid=b.uid;需求有订单数据 : (数据小)order001,u001order002,u001order003,u005order004,u002order005,u003order006,u004有用户数据: (数据大)u...

2019-10-23 14:19:10 244

原创 hadoop系列十四——MapReduce输入输出格式(sequencefile文件)

sequencefile中的数据是以key,value对存储的。通过改变mapreduce模式输入输出的设置,可以读取sequencefile中的数据。 使用sequencefile文件,更加方便使用,不需要像文本文件,切分单词。在两个MapReduce程序之间常用这种模式。第一个MapReduce代码:public class IndexStepOne { public stati...

2019-10-22 21:05:08 423

原创 hadoop系列十三 ——MapReduce整体工作流程和YARN的架构及原理

概述一个完整的 MapReduce 程序在分布式运行时有两类实例进程:1、MRAppMaster:负责整个程序的过程调度及状态协调2、Yarnchild(MapTask):负责 map 阶段的整个数据处理流程3、Yarnchild(ReduceTask):负责 reduce 阶段的整个数据处理流程 以上两个阶段 MapTask 和 ReduceTask 的进程都是 YarnChild,并不...

2019-10-22 19:44:33 416

原创 hadoop系列十二 ——MapReduce分组排序案例 和GroupingComparator的使用

GroupingComparator在hadoop的mapreduce编程模型中,当在map端处理完成输出key-value对时,reduce端只会将key相同的到同一个reduce函数中去执行。但是,当使用java对象为key时,如何判断Java对象是同一个key呢,这时候就需要GroupingComparator,利用该类中的compare方法,根据自己的需求,设定key相同的条件,从而放入...

2019-10-20 21:03:25 431

原创 hadoop系列十一 ——MapReduce案例分组求top n(对象覆盖问题)

需求:有如下数据(本案例用了排序控制、分区控制、分组控制)order001,u001,小米6,1999.9,2order001,u001,雀巢咖啡,99.0,2order001,u001,安慕希,250.0,2order001,u001,经典红双喜,200.0,4order001,u001,防水电脑包,400.0,2order002,u002,小米手环,199.0,3order00...

2019-10-19 17:05:37 347

原创 hadoop系列十一 ——MapReduce案例(文档索引创建和文件切片)

mr编程案例6——倒排索引创建需求:有大量的文本文档,如下所示:a.txthello tomhello jimhello kittyhello roseb.txthello jerryhello jimhello kittyhello jackc.txthello jerryhello javahello c++hello c++需要得到以下结果:hello ...

2019-10-19 15:32:49 541

原创 hadoop系列十 ——MapReducePartitioner和自定义分区Partitioner

PartitionerPartitioner 处于 Mapper阶段,当Mapper处理好数据后,这些数据需要经过Partitioner进行分区,来选择不同的Reducer处理,从而将Mapper的输出结果均匀的分布在Reducer上面执行。对于map输出的每一个键值对,系统都会给定一个partition,partition值默认通过计算key的hash值后对Reduce task的数量取模获...

2019-10-17 21:30:18 329

原创 hadoop系列七———mapreduce编程中自定义类型的序列化接口实现方式

自定义数据类型如何实现hadoop的序列化接口自定义bean对象实现序列化接口(1)必须实现Writable接口(2)反序列化时,需要反射调用空参构造函数,所以必须有空参构造(3)重写序列化方法在这里插入代码片(4)重写反序列化方法(5)注意反序列化的顺序和序列化的顺序完全一致(6)要想把结果显示在文件中,需要重写 toString(),可用 \t 分开,方便后续用(7)如果需要将...

2019-10-17 19:45:12 1216

原创 hadoop系列九 ——MapReduce案例排序2(利用MapReduce自身的排序功能,原理暂时不介绍)

MapReduce案例排序2 ,利用MapReduce自身排序功能排序需求:统计request.dat中每个页面被访问的总次数,同时,要求输出结果文件中的数据按照次数大小倒序排序关键技术点:mapreduce程序内置了一个排序机制,所以如果需要排序,可设置一个bean对象,然后利用Comparable<>接口,对其进行排序。map worker 和reduce worker...

2019-10-17 19:44:34 349

原创 hadoop系列八 ——MapReduce案例排序1(还有treeMap和比较器的知识补充,向map和reduce传外部参数)

TreeMap用法总结TreeMap中的元素默认按照keys的自然排序排列,(对Integer来说,其自然排序就是数字的升序;对String来说,其自然排序就是按照字母表排序)public class TreeMapTest { public static void main(String[] args) { TreeMap<FlowBean, String> t...

2019-10-17 19:44:32 373

原创 hadoop系列六 ———MapReduce代码初识

Hadoop数据类型在mapreduce中,map产生的数据需要传输给reduce,需要进行序列化和反序列化,而jdk中的原生序列化机制产生的数据量比较冗余,就会导致数据在mapreduce运行过程中传输效率低下所以,hadoop专门设计了自己的序列化机制,那么,mapreduce中传输的数据类型就必须实现hadoop自己的序列化接口Hadoop本身提供了一套可优化网络序列化传输的基本类型...

2019-10-17 19:44:13 215

原创 hadoop系列五 ——hive操作

创建库hive中有一个默认的库:库名: default库目录:hdfs://hdp20-01:9000/user/hive/warehouse新建库:create database databaseName;库建好后,在hdfs中会生成一个库目录:hdfs://hdp20-01:9000/user/hive/warehouse/db_order.db展示所有库的名字:show d...

2019-10-13 21:34:56 755 1

原创 hadoop系列四 ——hive基本概念

什么是HiveHive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。Hive 具有 SQL 数据库的外表,但应用场景完全不同,Hive 只适合用来做海量离线数 据统计分析,也就是数据仓库。本质是:将HQL/SQL转化成MapReduce程序1)Hive处理的数据存储在HDFS2)Hive分析数据底层的实现是MapReduce3)...

2019-10-13 15:55:42 454 1

原创 java日记11

匿名内部类匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口实例1:不使用匿名内部类来实现抽象方法abstract class Person { public abstract void eat();} class Child extends Person { ...

2019-10-12 16:48:17 82

原创 hadoop系列三 ——HDFS操作

hdfs命令行客户端的常用操作命令0、查看hdfs中的目录信息hadoop fs -ls /hdfs路径1、上传文件到hdfs中hadoop fs -put /本地文件 /aaahadoop fs -copyFromLocal /本地文件 /hdfs路径 ## copyFromLocal等价于 puthadoop fs -moveFromLocal /本地文件 /hdfs路...

2019-09-11 00:04:05 230

原创 hadoop系列二 ——HDFS概念

hdfs简述首先,它是一个文件系统,用于存储文件,通过统一的命名空间——目录树来定位文件其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色;HDFS(Hadoop Distributed File System),作为Google File System(GFS)的实现,是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超...

2019-09-10 16:11:06 590

原创 hadoop系列一(基本概念)

一、Hadoop 简介Hadoop 是一个分布式系统基础架构,它可以使用户在不了解分布式底层细节的情況下开发分布式程序,充分利用集群的威力进行高速运算和存储。从其定义就可以发现,它解決了两大问题:大数据存储、大数据分析。也就是 Hadoop 的两大核心:HDFS 和 MapReduce。HDFS是可扩展、容错、高性能的分布式文件系统,异步复制,一次写入多次读取,主要负责存储。MapRed...

2019-09-09 19:53:42 437

原创 java基础十 网络通信和多线程

java网络通信网络通信基本概念:通信: 就是从一台机器上的一个软件,发送数据到另一台机器的一个软件上先发送数据的软件:称为客户端被动接收数据的软件**:称为服务端**IP:IP在互联网中能唯一标识一台计算机,是每一台计算机的唯一标识(身份证);网络编程是和远程计算机的通信,所以必须先能定位到远程计算机;端口:IP帮助解决此问题;一台计算机中可能有很多进程,具体和哪一个进程进行通信,这...

2019-08-16 21:32:43 358

原创 java基础九 反射和匿名内部类

反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))一、反射的概述class是一切反射的根源,JAVA反射机制是在运行状态中,对于任和一个类,通过反射都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制要想解剖一个类...

2019-08-04 00:00:10 1232

原创 java基础七 文件io体系

对文件的操作创建一个文件夹File f = new File("f:/xx"); boolean mkdir = f.mkdir(); // 不能创建多级目录 System.out.println(mkdir);创建一个文件夹File fs = new File("f:/xx1/yy1");boolean mkdirs = fs.mkdirs();System.out.pri...

2019-08-03 13:37:44 169

原创 java基础八 继承和异常处理

Java继承概述1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些相同属性和行为,只要继承那个类即可。2.在Java中通过extends关键字可以实现类与类的继承。例如:class 子类名 extends 父类名 {}3.单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。4.有了继承以后,我们定义一个类的时候,可以在一个已经存在的类...

2019-08-02 23:27:05 494

空空如也

空空如也

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

TA关注的人

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