自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Hadoop 编程

Hadoop 编程MapReduce - 编程处理select:直接分析输入数据,取出需要的字段数据即可 where: 也是对输入数据处理的过程中进行处理,判断是否需要该数据 aggregation:min, max, sum group by: 通过Reducer实现 sort join: map join, reduce joinThird-Party Librariesexport LIBJARS=$MYLIB/commons-lang-2.3.jar, hadoop ja

2020-06-30 10:11:12 530

原创 Hadoop MapReduce

Hadoop MapReduceHadoop - MapReduce简介一种分布式的计算方式指定一个Map(映#x5C04;)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组Patternmap: (K1, V1) → list(K2, V2) combine: (K2, list(V2)) → list(K2, V2) reduce: (K2, list(V2)) → list(K3, V3)Map

2020-06-30 09:35:55 165

原创 Java 数据结构

Java 数据结构Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) 字典(Dictionary) 哈希表(Hashtable) 属性(Properties)以上这些类是传统遗留的,在Java2中引入了一种新的框架-集合框架(Collection),我们后面再讨论。枚举(Enumeration)枚举(Enumeration)接口虽然它本身不属于数据结构

2020-06-30 09:35:44 116

原创 以为大牛入职阿里后才知道简历这样写???

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。01、简历的本质作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深处说,简历就是一块敲门砖,它通过白纸黑字的方式告诉招聘方,我是谁,我想来贵公司担任什么职位,我能够完成什么样的

2020-06-30 09:35:24 341 1

原创 Hadoop 读取数据

Hadoop 读取数据MapReduce - 读取数据通过InputFormat决定读取的数据的类型,然后拆分成一个个InputSplit,每个InputSplit对应一个Map处理,RecordReader读取InputSplit的内容给MapInputFormat决定读取数据的格式,可以是文件或数据库等功能验证作业输入的正确性,如格式等 将输入文件切割成逻辑分片(InputSplit),一个InputSplit将会被分配给一个独立的Map任务 提供RecordReader实现

2020-06-30 09:35:02 626

原创 Hadoop Failover

Hadoop FailoverYARN - Failover失败类型程序问题 进程崩溃 硬件问题失败处理任务失败运行时异常或者JVM退出都会报告给ApplicationMaster 通过心跳来检查挂住的任务(timeout),会检查多次(可配置)才判断该任务是否失效 一个作业的任务失败率超过配置,则认为该作业失败 失败的任务或作业都会有ApplicationMaster重新运行ApplicationMaster失败ApplicationMaster定时发送心跳信号到Re

2020-06-30 09:34:44 223

原创 Hadoop Mapper——直接上代码

Hadoop MapperMapReduce - Mapper主要是读取InputSplit的每一个Key,Value对并进行处理public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> { /** * 预处理,仅在map task启动时运行一次 */ protected void setup(Context context) throws IOException, InterruptedExc

2020-06-30 09:34:33 123

原创 Hadoop Shuffle

Hadoop ShuffleMapReduce - Shuffle对Map的结果进行排序并传输到Reduce进行处理 Map的结果并不是直接存放到硬盘,而是利用缓存做一些预排序处理 Map会调用Combiner,压缩,按key进行分区、排序等,尽量减少结果的大小 每个Map完成后都会通知Task,然后Reduce就可以进行处理Map端当Map程序开始产生结果的时候,并不是直接写到文件的,而是利用缓存做一些排序方面的预处理操作每个Map任务都有一个循环内存缓冲区(默认100MB),当缓

2020-06-30 09:34:11 109

原创 Hadoop Container

Hadoop ContainerYARN - Container基本的资源单位(CPU、内存等) Container可以加载任意程序,而且不限于Java 一个Node可以包含多个Container,也可以是一个大的Container ApplicationMaster可以根据需要,动态申请和释放Container...

2020-06-30 09:33:09 210

原创 最形象的八大排序算法——程序员必看

八大排序,三大查找是《数据结构》当中非常基础的知识点,在这里为了复习顺带总结了一下常见的八种排序算法。常见的八大排序算法,他们之间关系如下:排序算法.png他们的性能比较:性能比较.png下面,利用Python分别将他们进行实现。直接插入排序算法思想:直接插入排序.gif直接插入排序的核心思想就是:将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过。因此,从上...

2020-06-30 09:32:36 214 1

原创 Hadoop ApplicationMaster

Hadoop ApplicationMasterYARN - ApplicationMaster单个作业的资源管理和任务监控具体功能描述:计算应用的资源需求,资源可以是静态或动态计算的,静态的一般是Client申请时就指定了,动态则需要ApplicationMaster根据应用的运行状态来决定 根据数据来申请对应位置的资源(Data Locality) 向ResourceManager申请资源,与NodeManager交互进行程序的运行和监控,监控申请的资源的使用情况,监控作业进度 跟

2020-06-29 14:36:01 346

原创 Hadoop ResourceManager

Hadoop ResourceManagerYARN - ResourceManager负责全局的资源管理和任务调度,把整个集群当成计算资源池,只关注分配,不管应用,且不负责容错资源管理以前资源是每个节点分成一个个的Map slot和Reduce slot,现在是一个个Container,每个Container可以根据需要运行ApplicationMaster、Map、Reduce或者任意的程序 以前的资源分配是静态的,目前是动态的,资源利用率更高 Container是资源申请的单位,一

2020-06-29 14:30:42 232

原创 Hadoop YARN

Hadoop YARNHadoopHadoop - YARN旧的MapReduce架构JobTracker:负责资源管理,跟踪资源消耗和可用性,作业生命周期管理(调度作业任务,跟踪进度,为任务提供容错) TaskTracker:加载或关闭任务,定时报告任务状态此架构会有以下问题:JobTracker是MapReduce的集中处理点,存在单点故障 JobTracker完成了太多的任务,造成了过多的资源消耗,当MapReduce job 非常多的时候,会造成很大的内存开销。这也是...

2020-06-29 11:35:48 145

原创 Hadoop 命令工具

Hadoop 命令工具HDFS - 命令工具fsck: 检查文件的完整性start-balancer.sh: 重新平衡HDFShdfs dfs -copyFromLocal 从本地磁盘复制文件到HDFS

2020-06-29 11:26:08 150

原创 Hadoop 可靠性

Hadoop 可靠性HDFS - 可靠性 DataNode可以失效 DataNode会定时发送心跳到NameNode。如果一段时间内NameNode没有收到DataNode的心跳消息,则认为其失效。此时NameNode就会将该节点的数据(从该节点的复制节点中获取)复制到另外的DataNode中 数据可以毁坏 无论是写入时还是硬盘本身的问题,只要数据有问题(读取时通过校验码来检测),都可以通过其他的复制节点读取,同时还会再复制一份到健康的节点中 NameNode不可靠...

2020-06-29 11:25:15 359

原创 Hadoop 读文件

Hadoop 读文件HDFS - 读文件客户端向NameNode发送读取请求 NameNode返回文件的所有block和这些block所在的DataNodes(包括复制节点) 客户端直接从DataNode中读取数据,如果该DataNode读取失败(DataNode失效或校验码不对),则从复制节点中读取(如果读取的数据就在本机,则直接读取,否则通过网络读取)...

2020-06-29 11:11:40 111

原创 Hadoop 写文件

HDFS - 写文件1.客户端将文件写入本地磁盘的HDFS Client文件中2.当临时文件大小达到一个block大小时,HDFS client通知NameNode,申请写入文件3.NameNode在HDFS的文件系统中创建一个文件,并把该block id和要写入的DataNode的列表返回给客户端4.客户端收到这些信息后,将临时文件写入DataNodes4.1 客户端将文件内容写入第一个DataNode(一般以4kb为单位进行传输) 4.2 第一个DataNode接收后,将数据写

2020-06-29 11:10:34 847

原创 Hadoop HDFS

Hadoop - HDFS简介Hadoop Distributed File System,分布式文件系统架构 Block数据块; 基本存储单位,一般大小为64M(配置大的块主要是因为:1)减少搜寻时间,一般硬盘传输速率比寻道时间要快,大的块可以减少寻道时间;2)减少管理块的数据开销,每个块都需要在NameNode上有对应的记录;3)对数据块进行读写,减少建立网络的连接成本) 一个大文件会被拆分成一个个的块,然后存储于不同的机器。如果一个文件少于Block大小

2020-06-29 11:06:45 105

原创 Hadoop简介

Hadoop - 简介Hadoop可运行于一般的商用服务器上,具有高容错、高可靠性、高扩展性等特点特别适合写一次,读多次的场景适合大规模数据 流式数据(写一次,读多次) 商用硬件(一般硬件)不适合低延时的数据访问 大量的小文件 频繁修改文件(基本就是写1次)Hadoop架构HDFS:分布式文件存储 YARN:分布式资源管理 MapReduce:分布式计算 Others:利用YARN的资源管理功能实现其他的数据处理方式内部各个节点基本都是采用Master...

2020-06-29 10:55:29 112

原创 关于Hadoop

铺垫人产生数据的速度越来越快,机器则更加快,more data usually beats better algorithms,所以需要另外的一种处理数据的方法。 硬盘的容量增加了,但性能没有跟上,解决办法是把数据分到多块硬盘,然后同时读取。但带来一些问题:硬件问题:复制数据解决(RAID)分析需要从不同的硬盘读取数据:MapReduce而Hadoop提供了1.可靠的共享存储(分布式存储) 2.抽象的分析接口(分布式分析)大数据概念不能使用一台机器进行处理的数据大数据的核

2020-06-29 10:52:28 139

原创 LeetCode

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3方法一:递归这个题目要求我们从第一个节点开始两两交换链表中的节点,且要真正的交换节点。算法:从链表的头节点 head 开始递归。每次递归都负责交换一对节点。由 firstNode 和 secondNode 表示要交换的两个节点。下一次递归则是传递的是下一对需

2020-06-11 14:55:28 100

原创 LeetCode——对合并后的链表排序

合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6前置知识:合并两个有序链表思路在解决「合并K个排序链表」这个问题之前,我们先来看一个更简单的问题:如何合并两个有序链表?假设链表 aa 和 bb 的长度都是 nn,如何在 O(n)O(n) 的时间代价以及 O(1)O(1)...

2020-06-11 11:33:29 179

原创 LeetCode 算法题目——括号的生成

数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]方法一:深度优先遍历我们以 n = 2 为例,画树形结构图。方法是 “做减法”。画图以后,可以分析出的结论:当前左右括号都有大于 00 个可以使用的时候,才产生分支;产生左分支...

2020-06-11 10:59:54 331

原创 数据爬取demo

#!/usr/bin/env python# -*- encoding: utf-8 -*-# Created on 2016-06-07 07:40:58# Project: dazhongdianpingfrom pyspider.libs.base_handler import *from bs4 import BeautifulSoupfrom pymongo import MongoClientimport base64import reid = 0count = 0.

2020-06-07 11:04:46 920

原创 Java 包(package)

Java 包(package)为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。包的作用 1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。 2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。 3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。 Java 使用包(package

2020-06-05 17:15:43 148

原创 Java 接口——简单聊一下

Java 接口接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接

2020-06-05 17:10:17 94

原创 Java 封装

Java 封装在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。封装的优点 1. 良好的封装能够减少耦合。 2. 类内部的

2020-06-05 17:01:28 96

原创 Java 抽象类

Java 抽象类在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。在Java

2020-06-05 16:57:54 96

原创 Java 多态

Java 多态多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:多态性是对象多种表现形式的体现。现实中,比如我们按下 F1 键这个动作:如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档; 如果当前在 Word 下弹出的就是 Word 帮助; 在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。多态的优点1. 消除类型之间的耦合关系.

2020-06-05 16:55:28 72

原创 Java 重写(Override)与重载(Overload)

Java 重写(Override)与重载(Overload)重写(Override)重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exceptio

2020-06-05 16:43:13 76

原创 Java继承

Java 继承继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。生活中的继承:兔子和羊属于食草动物类,狮子和豹属于食肉动物类。食草动物和食肉动物又是属于动物类。所以继承需要符合的关系是:is-a,父类更通用,子类更具体。虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也

2020-06-05 16:39:28 140

原创 同步与异步,阻塞与非阻塞——一起来聊聊吧

近来遇到了一些常见的概念,尤其是网络编程方面的概念,如:阻塞、非阻塞、异步I/O等等,对于这些概念自己也没有太清晰的认识,只是很模糊的概念,说了解吧也了解,但是要让自己准确的描述概念方面的具体细节,却说的不那么准确,这也是自己在这几个方面也没有细细考究过的原因吧。经过看了些这几个概念的资料,发现同步、异步、阻塞、非阻塞的概念其实也并不难以理解,在此写下此文,欢迎拍砖,希望多多交流。1 同步与异步#首先来解释同步和异步的概念,这两个概念与消息的通知机制有关。也就是同步与异步主要是从消息通知机制角度来说

2020-06-05 10:32:12 130

原创 并行,并发——超简单的解释

一个例子解决 : 洗衣做饭假设你需要洗衣服和做饭(两个任务)串行 : 先洗衣服,洗完后再做饭。(或者先做饭,做完后再洗衣) 并行 : 将洗衣盆拿到灶台,左右炒菜做饭,右手搓洗衣服。 并发 : 一会洗衣,一会做饭,但疾如闪电。[注] 上述过程,体现了多任务,以人手为操作主体,以<2并行>理解,左手相当于一个CPU,右手相当于一个CPU,两者一起工作并行是指两个或多个事件在同一时刻执行,由多个CPU执行不同的事件。 并发是指两个或多个事件在同一时间间隔发生(间隔恍如闪电),宏观

2020-06-05 10:16:16 866

原创 进程中状态之间的转换

进程的三种基本状态 进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见,进程的状态是会有变化的。为了方便进程的管理,操作系统需要将进程合理的划分为几种状态。 进程的三种基本状态为运行态(Running)、就绪态(Ready)、阻塞态(Waiting/Blocked,又称等待态)。 如果进程处于运行态,则它正在占有CPU,并在CPU上运行;如果进程处于就绪态,则它已经具备运行的条件,但由于没有空闲的CPU而暂时不能运行(万事具备,只欠CP

2020-06-05 09:57:21 950

原创 Java 异常处理

Java 异常处理异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常。异常发生的原因有很多,通常包含以下几大类:用户输入了非法数据。 要打开的文件不存在。 网络通信时连接中断,或者JVM内存溢出。这些异常有的

2020-06-04 18:55:20 113

原创 Java Scanner 类

Java Scanner 类java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。下面是创建 Scanner 对象的基本语法:Scanner s = new Scanner(System.in);接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:使用 n.

2020-06-04 18:41:30 92

原创 梯度下降算法非常详细的解释赶快看看

介绍如果说在机器学习领域有哪个优化算法最广为认知,用途最广,非梯度下降算法莫属。梯度下降算法是一种非常经典的求极小值的算法,比如在线性回归里我们可以用最小二乘法去解析最优解,但是其中会涉及到对矩阵求逆,由于多重共线性问题的存在是很让人难受的,无论进行L1正则化的Lasso回归还是L2正则化的岭回归,其实并不让人满意,因为它们的产生是为了修复此漏洞,而不是为了提升模型效果,甚至使模型效果下降。但是换一种思路,比如用梯度下降算法去优化线性回归的损失函数,完全就可以不用考虑多重共线性带来的问题。其实不仅是线性

2020-06-04 10:14:12 552

原创 C语言中全局变量存放在哪个位置?

全局变量存放在静态存储区,位置是固定的。 局部变量在栈空间,栈地址是不固定的。栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。自由存储区:就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。全局存储区(静态存储区

2020-06-04 10:04:12 10084

原创 Java 流(Stream)、文件(File)和IO

Java 流(Stream)、文件(File)和IOJava.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。读取控

2020-06-03 19:01:49 123

原创 Java 方法

Java 方法在前面几个章节中我们经常使用到System.out.println(),那么它是什么呢?println() 是一个方法。 System 是系统类。 out 是标准输出对象。这句话的用法是调用系统类 System 中的标准输出对象 out 中的方法 println()。那么什么是方法呢?Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用方法的优点1. 使程序变..

2020-06-03 18:49:05 72

空空如也

空空如也

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

TA关注的人

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