自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spark源码解析之SparkStreaming数据处理及流动

在分析receiver启动的博文中SparkStreaming中Receiver的启动,我们遇到ReceiverSupervisor中的onStart方法 def start() { onStart() startReceiver()}我们先来回顾一下这个方法是如何被触发的: StreamingContext#start JobScheduler#start

2017-09-21 15:14:51 1346

原创 Spark源码解析SparkStreaming数据接收

在上一篇博文中,我们讲述了一个SparkStreaming应用程序启动后开始的准备工作,即在executors启动receiver 这里我们将讲述接收数据到存储数据的过程 首先接受数据是在receiver的onStart方法里,在这里我们还是以SocketReceiver为例,在SocketReceiver的OnStart方法中启动一个线程,在该线程中调用receive方法,进行接收数据的处理d

2017-09-21 14:23:28 1123

原创 Spark源码解析之SparkStreaming中Receiver的启动

本篇博文我们主要分析SparkStreaming中的Receiver启动的过程

2017-09-21 09:57:03 1257

原创 Spark源码分析之SparkSql的Analyzer,Optimizer

在上一篇博文中,我们深入的了解了SparkSql中的sql语句经过DDLParser、SparkSQLParser和SqlParser处理后得到了一个树结构的Unresolved Logical Plan,这也是我们每一次使用sparkSql时必然会执行的,但是对于一些不是立刻需要返回结果的造作,执行到这边也就结束了,只有遇到哪些诸如show,collect等需要立刻的返回结果的操作,我们才会继续后

2017-09-20 10:29:53 2671

原创 Spark源码解析之SparkSql

首先我们回顾一下使用SparkSql的一般步骤: 1. 从数据源或者RDD读取数据,构造出一个DataFrame 2. 使用DataFrame的registerTempTable方法根据刚才读取的数据创建一个临时表 3. 调用sqlContext的sql方法执行sql语句那么在这里我们就从sql语句的调用开始:def sql(sqlText: String): DataFrame = {

2017-09-18 16:55:24 1876

原创 Spark源码分析之job提交后转换为Stage

在上一讲中,我们已经分析了Driver和Executor启动的整个过程,接下来,这个集群可能就需要进行相应的算子的计算了 在这里我们先普及一下相关知识 Job:在rdd的计算中每次遇到一个action操作,才会进行一次提交,这一次提交的就是一个job stage:在一个job中,相邻的RDD之间如果是宽依赖就会进行划分,宽依赖的前后会构成两个不同的stage taskSet:每一个stage

2017-09-12 17:04:14 1374

原创 Spark源码分析之Driver的分配启动和executor的分配启动

继上一篇我们讲到创建SparkContext对象的时候,创建了TaskScheduler对象,并通过ClientEndPoint中发送RegisterApplication消息向Master注册Application,在Master接收到这个消息后,将会作出下面的动作 1. 构建ApplicationInfo对象 2. 执行registerApplication(),将applicationI

2017-09-12 11:35:19 4450 1

原创 Spark源码分析之TaskSchedule和SparkDeployScheduleBackended的初始化

在这里我们是使用的spark1.5.1的源代码进行分析的什么是SparkContext在编写一个Spark程序的时候,我们总是会新建一个SparkContext对象,这个对象,下面是官方对这个对象的解释Main entry point for Spark functionality. A SparkContext represents the connection to a Spark cluste

2017-09-05 20:07:08 1505

原创 SpringMvc异步图片上传回显(使用jersey上传到另一台服务器)

在之前的文章中已经介绍过springMvc的文件上传,springMvc文件上传场景介绍在本篇博客中主要介绍使用springMvc进行图片的上传 功能需求:在很多网站中都有上传用户头像的功能,上传之后就会立刻在页面上显示出来,这边就是采用的异步的方式,并且在实际应用中最好有一个单独的服务器作为图片服务器,因为加载图片的时候通常会占据较大的带宽,与应用程序服务器放在一块的话,影响应用程序服务器的性能

2017-08-18 17:12:54 2747

原创 SSM框架的整合

第一步:首先整合spring和mybatis1.将spring与web项目整合通过配置ContextLoaderListener来在项目刚启动(servletContext对象刚创建)的时候,初始化spring容器WebApplicationContext,详细的源代码如下:public class ContextLoaderListener extends ContextLoader implem

2017-08-18 15:56:06 1106

原创 java线程(三)

本篇介绍守护线程和线程的优先级守护线程(Daemon线程)守护线程就是系统的守护者,比如垃圾回收线程,JIT线程等都是守护线程,与之相对应的就是用户线程,如果用户线程全部结束没那么也就意味着这个程序实际上无事可做了,守护线程要守护的对象已经不存在了,那么整个程序自然就会退出,因此一个java程序,只有守护线程时,java虚拟机自然就会退出public class DaemonThread {

2017-07-31 22:48:38 1183

原创 读写锁

ReadWriteLock,读写锁传统的锁的劣势

2017-07-31 20:53:56 1222

原创 重入锁

重入锁

2017-07-31 20:49:47 1136

原创 JVM垃圾收集器

JVM垃圾收集器

2017-07-31 20:44:03 1134

原创 JVM垃圾收集算法

JVM垃圾收集算法

2017-07-31 20:41:52 1144

原创 JVM内存区

JVM内存的划分

2017-07-31 20:39:56 1026

原创 java线程(二)

挂起(suspend)和继续执行(resume)这是两个被标注的废弃的方法,原因如下: * suspend()方法在迫使当前正在执行的线程的暂停的时候,并不会去释放锁 * 如果resume()意外的在suspend()之前被执行了,那么被挂起的线程很可能就永远不可能再执行了 关于第二个问题,示例代码如下:public class SuspendAndResume { static cl

2017-07-31 20:37:30 1015

原创 Java线程(一)

新建线程继承Thread 实现Runnable停止线程stop方法是一个被废弃的方法,因为其是暴力的,即不管线程执行的状态如何,都会立刻停止线程,可能会引起数据不一致的情况,数据不一致的情况见如下代码:public class UnformmatedStop { static class Person{ private String username; pr

2017-07-19 16:20:53 1062

原创 Storm集群中的组件介绍

介绍Storm作为最流行的的实时流计算框架,提供了可容错的分布式计算所要求的基本源语和保障机制Storm的简单的工作机制spout先从外部获取数据,然后简单的封装成一个个的tuple发送到Bolt,Bolt处理后再将处理后的数据封装成一个个的tuple再发送到下一个Bolt,直到最后一个Bolt处理完成Storm集群中的几大组件step1: 1. Client向Storm集群提交任务,将打

2017-06-16 15:14:54 1393

原创 sqoop

sqoop简介sqoop是一个hdfs和关系型数据库之间传送数据的工具 官方介绍 Sqoop is a tool designed to transfer data between Hadoop and relational databases or mainframes. You can use Sqoop to import data from a relational database m

2017-06-15 16:52:36 1208

原创 Flume日志采集多级Agent

flume的简介任何一个系统在运行的时候都会产生大量的日志信息,我们需要对这些日志进行分析,在分析日志之前,我们需要将分散在生产系统中的日志收集起来。Flume就是这样的日志采集系统主要有三个组件: Source:消费web系统这样的外部数据源中的数据(一般就是web系统产生的日志),外部数据源会向flume发送某种能被flume识别的格式的事件,有以下几种类型:avro 、exec、jms、sp

2017-06-15 14:39:10 7494

原创 hive中的join

多个表进行join的MapReducer任务的数量根据最典型的学生课程表,由于学生和课程之间是多对多的关系,所以需要一张中间表stundet_course表进行关联案例一:查询学生课程信息select stu.* , c.* from student stu join student_course sc on student.sno = sc.sno join course c on sc.cno

2017-06-14 10:57:54 1332

原创 hive中的四个by

order by全局排序,只有一个reducesort by对每一个reducer内部的数据进行排序,全局结果集来说不是排序的,即只能保证每一个reduce输出的文件中的数据是按照规定的字段进行排序的 insert overwrite local directory ” select * from table_name sort by colum_name distribute by注意:这边需要

2017-06-13 21:25:36 3917

原创 hive 分区表msck命令

当我们创建好一个分区表的时候:CREATE external TABLE IF NOT EXISTS db01.employees(name STRING COMMENT 'Employee name', salary FLOAT COMMENT 'Employee salary')partitioned by (country string)ROW FORMAT DELIMITED FIE

2017-06-13 17:15:47 8945

原创 Fork/Join框架

Fork/Join框架的思想Fork/Join的思想是一个分而治之的思想的实现,跟MapReduce的思想如出一辙,简单的说就是加入我们需要处理1000个数据,但是我们并不具备处理1000个数据的能力,那么我们可以让一个线程只处理其中的10个,然后分阶段处理100次,将100次的结果进行合并,那么就会得到对最终的1000个数据的处理结果JDK并发包中的实现在实际应用中,我们没有办法毫无顾忌地使用fo

2017-06-12 17:12:19 1075

原创 JDK并发包线程池(三)自定义线程池

自定义线程池就是自己创建ThreadPoolExecutor对象,根据自己的需求指定里面的各个参数 自定义线程池的拒绝策略,需要实现RejectedExecutionHandler接口 自定义线程的创建工厂ThreadFactory,ThreadFactory是一个工厂,自定义ThreadFactory可以跟踪线程池在某个时刻创建了多少个线程,也可以自定义线程的名称,组以及优先级等信息publi

2017-06-11 21:43:34 1180

原创 JDK并发包中的线程池(二)核心线程池的内部实现

对于核心的几个线程池newSingleThreadExecutornewFixedThreadPoolnewCachedThreadPool其内部都是使用的ThreadPoolExecutor实现的,下面给出它们的实现方式:public static ExecutorService newFixedThreadPool(int nThreads) { return new Thr

2017-06-11 21:04:57 1099

原创 JDK并发包中的线程池(一)

不使用线程池时的一些问题public class NonePool { public static void main(String[] args) { new Thread(){ public void run() { //TODO }; }.start(); }}上面

2017-06-11 20:08:42 2016

原创 Hive中的分区表

分区表创建分区表CREATE TABLE employees ( name STRING, salary FLOAT, subordinates ARRAY<STRING>, deductions MAP<STRING, FLOAT>, address STRUCT<street:STRING, city:STRING, state:STRING, zip

2017-06-11 15:36:32 1290

原创 Hive之Table

创建表创建表的语句CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment]] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT

2017-06-11 15:04:33 1394

原创 Hive中的数据定义(DDL)__Database(Schema)

Hive中的数据库创建数据库的语句:CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)];说明: 1. 在所有的数据库的相

2017-06-11 12:31:34 3408

原创 MapReduce的全排序

问题的提出正常情况下,Mapreduce的保障之一就是送到Reducer端的数据总是根据Reducer的输入键进行排序的,如果我们使用单个Reducer,排序就会直接了当,但是只是使用一个Reducer的情况少之又少,如果使用了多个Reducer,那么就只可能会保证每一个Reducer内的内容是会根据键进行排序的,而不会保证Reducder之间也是有序的,就会出现下面这种情况: reducer1:

2017-06-07 10:39:35 5917

原创 MapReduce的Shuffle原理

什么是ShuffleHadoop计算框架Shuffler, 在mapper和reducer中间的一个步骤 ,可以把mapper的输出按照某种key值重新切分和组合成n份,把key值符 合某种范围的输出送到特定的reducer那里去处理Shuffle的原理分析运行步骤如下: step1:map端调用context.write(),先将数据写到map的缓冲区中,当缓冲区的填充比达到一个阈值的时候,系统

2017-06-06 22:24:50 1358

原创 Hadoop2.x的yarn

hadoop mapreduce 1.x中的问题原理在1.x中主要使用的是JobTracker和TaskTracker这两个组件管理系统中的资源 step1:客户端提交任务 step2:JobTracker从namenode获取输入文件的数据块的列表信息 step3:JobTracker会根据第二步中获取到的数据块的列表信息将任务提交到离数据块尽可能近的位置上运行 step4:TaskTra

2017-06-06 11:48:14 1341

原创 MapReduce的GroupComparator

问题有如下的订单数据,想要查询出每一个订单中的最贵的商品Order_0000001 Pdt_01 222.8Order_0000001 Pdt_01 222.8Order_0000002 Pdt_03 522.8Order_0000003 Pdt_01 222.8Order_0000004 Pdt_01 222.8Order_0000004 Pdt_05

2017-06-05 21:26:30 2856 1

原创 使用MapReduce实现寻找共同好友的案例

假设有一下qq的好友列表数据,冒号前是一个用户,冒号后是该用户的所有好友(数据中的好友关系是单向的)A:B,C,D,F,E,OB:A,C,E,KC:F,A,D,ID:A,E,F,LE:B,C,D,M,LF:A,B,C,D,E,O,MG:A,C,D,E,FH:A,C,D,E,OI:A,OJ:B,OK:A,C,DL:D,E,FM:E,F,GO:A,H,I,J问题:如果两个用户之

2017-06-05 15:53:00 3899

原创 使用MapReduce求解join问题

背景有两张表,以文件的形式存储在hdfs中,如下:学生基本信息001 jyw nan002 lq nv003 jl n学生考试成绩信息001 english 90001 math 92002 chinese 99现在需要求解每一个学生参加的考试的成绩以及学生信息 sql就类似于:select stu.*,score.grade from stu join score on s

2017-06-05 14:24:33 1180

原创 运行MR程序的方式

运行MR程序的几种方式打包成jar包后运行可以需要配置 configuration.set("mapreduce.framework.name","yarn"); configuration.set("yarn.resourcemanager.hostname","bigdata02"); configuration.set("fs.defaultFS","hdfs://

2017-06-04 22:23:42 2182

原创 org.apache.commons.io.IOUtils.copyLarge源码解析

本文的程序为使用hdfs的客户端从hdfs中读取数据,并将得到的流copy到System.out中 其他的重载方法最后都是调用这个方法

2017-06-02 13:39:40 3811

原创 SpringMvc中的统一异常处理器

一般项目中都需要作异常处理,基于系统架构的设计考虑,使用统一的异常处理方法,这些异常有可能是预期的可能发生的,这个时候我们可以捕获它,但是也有一些异常是运行时才会发生的,我们无从捕获它,此时也需要统一的异常处理在SpringMVC中我们需要可以自定义一个(一般为多个)异常类,遇到可以预期的异常是的时候,捕获相应的自定义的异常,遇到运行时产生的异常的时候,在统一的异常处理器中捕获,实现统一的异常处理,

2017-05-26 17:28:51 1126

空空如也

空空如也

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

TA关注的人

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