安装Nginx并配置TomcatHA

1. 环境

IP
系统版本
部署服务
端口

192.168.0.40
CentOS6.5_64
Nginx1.12.0
8088

192.168.0.41
CentOS6.5_64
apache-tomcat-7.0.64
18088

192.168.0.42
CentOS6.5_64
apache-tomcat-7.0.64
18088

准备安装包:

2. 安装依赖

yum -y install gcc automak[......]

Read more

置顶文章! 继续阅读?

安装KeepAlived并配置NginxHA

1. 环境

IP
系统版本
部署服务
端口

192.168.0.40
CentOS6.5_64
Nginx1.12.0
18089

192.168.0.41
CentOS6.5_64
Nginx1.12.0
18089

192.168.0.44
VIP
Keepalived
18089

准备安装包:

2. 安装依赖

yum -y install libnl libnl-devel
yum install -y libnf[......]

Read more

置顶文章! 继续阅读?

CentOS 7.2 静默安装Oracle 11gR2

1. 搭建本地源:

1.1. 加载 CentOS的ISO镜像并挂载:

1.2. 新建CentOS目录并把ISO上的文件复制到该目录下:

1.3. 修改yum配置文件:

1.4. 清除yum缓存及更新yum源

1.5. 卸载镜像并重启

2.[……]

Read more

置顶文章! 继续阅读?

Spark Task的调度——源码分析

参考Blog

Spark源码分析——Task的调度

DAGScheduler.submitMissingTasks(stage: Stage, jobId: Int)
方法中的最后几行,有一个
taskScheduler.submitTasks(new TaskSet(
tasks.toArray, stage.id, stage.latestInfo.attemptId, jobId, properties))

在 Standalone 模式下 taskScheduler 的实现类是 TaskSchedulerImpl
所以查看 TaskSchedulerImpl.su[……]

Read more

置顶文章! 继续阅读?

Yarn的内存超出指定的 yarn.nodemanager.resource.memory-mb 的解决过程

背景

集群背景:48Core,256GMem,24台节点的集群。每台节点给Nodemanager分配了128G。

问题

结果一次大型任务运行时,150亿的表和400亿的表做join时,每台节点的内存居然100%打满了。我这里的100%是整个节点的100%,而我们给所有大数据的组件内存才不到200G。
当时是懵的。
后面我们监控任务运行时,发现nodemanager的内存居然达到了180G左右,远远超出了我们设置的128G。后面查阅资料,诊断出问题,应该是Nodemanager中运行的Spark使用了大量的堆外内存,不在堆内,不可控。那么我们直接开启了 yarn.nodemanager.p[......]

Read more

置顶文章! 继续阅读?

编译 HBase 0.98.13 基于 Hadoop 2.6.0

1. 目录

[TOC]

2. 基本环境

应用
版本
位数
备注

系统
CentOS 6.5
64

JDK
1.7.0_79
64

Maven
3.3.3

Hadoop
2.6.0
64
已编译

HBase
0.98.13-src

3. 为何需要编译

如果运行 hbase 相关工具包,例如 hbase 的 ImportExportCopyTable 会有以下相关问题:
在非 ResourceManager 节点上运行以上命令,会无法[……]

Read more

置顶文章! 继续阅读?

Hadoop2.6.5源码分析-NameNode核心启动流程

1. 概述

我们要分析HDFS-NameNode的启动流程,就得从启动脚本开始一步步分析,当然开始之前,我们需要编译Hadoop的源码,具体的编译流程请参考我另外一篇博客 hadoop2.6.5源码编译

2. start-dfs.sh

2.1. 介绍

我们启动Hadoop在2.6版本是通过 start-dfs.sh 来启动的。
start-dfs.sh 的使用说明为 usage="Usage: start-dfs.sh [-upgrade|-rollback] [other options such as -clusterId]"
当不传递任何参数的时候,该脚本会依次启[……]

Read more

置顶文章! 继续阅读?

JAVA虚拟机堆内存

1. 概述

环境:JDK1.6
JAVA堆内存分为新生代(Young)和老年代(Old),比例为1:2。也就是如果有1.5G的堆内存,新生代内存为512M,老年代为1G。
而新生代又分为三块区域,EdentSurvivor 1Survivor 2
EdentSurvivor 1Survivor 2 比例分别是 8:1:1。也就是 512MB的 Young 区域, Survivor 1Survivor 2 各51.2MB, Edent 409.6MB

2. 堆内存运行流程:

1、用户创建的对象首次放入到Eden区域,Eden区域满了之后,JVM就会运行Mino[......]

Read more

置顶文章! 继续阅读?

CentOS6.5 CDH5.16.2离线安装

1. 集群环境及安装包

1.1. 集群环境

主机名
IP
系统版本
部署服务

hadoop32
192.168.0.32
CentOS6.5_64
CM Server、Agent、MySQL

hadoop33
192.168.0.33
CentOS6.5_64
CM Agent

hadoop34
192.168.0.34
CentOS6.5_64
CM Agent

1.2. 准备安装包

包名
下载地址

mysql-5.7.27-1.el6.x86_64.rpm-bu[……]

Read more

置顶文章! 继续阅读?

Visitor 访问者模式

Visitor 访问者模式

目录

[TOC]

1. 概述

1.1. 设计模式定义

访问者模式是对象的行为模式。访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。

1.2. 自我理解

当你想要为一个对象的组合增加新的能力,且封装并不重要时,就使用访问者模式。
访问者模式适用于数据结构相对稳定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。

1.3. 访问者模式的组成

抽象访问者(Visitor)角色:声明了一个或者多个方法操作,形成所有的具体[……]

Read more

Bridge 桥接模式

Bridge 桥接模式

目录

[TOC]

1. 概述

1.1. 设计模式定义

桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。

1.2. 自我理解

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两[……]

Read more

Chain 责任链模式

Chain 责任链模式

目录

[TOC]

1. 概述

1.1. 设计模式定义

职责链模式(Chain of Responsibility):使多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

1.2. 自我理解

责任链又叫做功能链,个人觉得有两种场景非常适合用:
1、流水线:层层配合,达到最后效果;每个人都要完成自己的工作,最后才能生产出产品;
链中的每个对象都要按照顺序处理,直到最后一个对象处理完毕。
2、责任划分:请假事宜,2天以内找组长,2~5天找经[……]

Read more

Decorator 装饰者模式

Decorator 装饰者模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

装饰者模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰者来包裹真实的对象。

所以装饰者可以动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的方案。

1.2. 自我理解

(1)假设我们手头已经有了一个类,可以执行一些功能
(2)但是我们还是希望对这个类的功能做一些增强,此时怎么办呢?基于已有的类的功能基础之上,再增强一些功能,可以做装饰

装饰器模式有一些非常经典的实现
(1)比如[……]

Read more

Flyweight 享元模式

Flyweight 享元模式

目录

[TOC]

1. 概述

1.1. 自我理解

(1)我们现在要缓存一些数据,比如说用户列表,根据权限的姓名作为key,用户数据自己本身是value
(2)但是我们不需要使用太复杂的ehcache框架之类的去使用,特别特别的简单的。
(3)我们就想基于自己的Map去实现一套东西

1.2. 享元模式的组成

抽象享元(Flyweight)角色 :父接口,以规定出所有具体享元角色需要实现的方法。
具体享元(ConcreteFlyweight)角色:实现抽象享元角色所规定出的接口。
享元工厂(FlyweightFactory)角色 :本角色[……]

Read more

Memento 备忘录模式

Memento 备忘录模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。

1.2. 自我理解

当你需要让对象返回之前的状态时(例如,你的用户请求“撤销”),就是用备忘录模式。
备忘录模式有两个目标:
1、存储系统关键对象的重要状态。
2、维护关键对象的封装。
优点:
1、将被存储的状态放在外面,不要和关键对象混在一起,这可以帮助维护内聚。
2、保持关键对象的数据封装[……]

Read more

State 状态模式

State 状态模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它自己的类。
状态模式将状态封装为独立的类,并将动作委托到代表当前状态的对象。

1.2. 自我理解

状态首先分为两种,”开关切换状态” 和”一般的状态判断”。
“一般的状态判断”:就是我们常用的数据状态,该场景不适合用状态模式。例如我们数据库的性别字段通常用 0=>男,1=>女,9=>其他,举例如下:

”开关切换状态“:当我们的状态切换,并且[……]

Read more

Composite 组合模式

Composite 组合模式

目录

[TOC]

1. 概述

1.1. 设计模式定义

组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。
这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

1.2. 自我理解

组合模式的第一要义,就是将树形结构的数据,用一个类,或者少数一两个类,就可以拼装成一棵树的形状
组合模式的第二要义,就是直接对一个父级的数据执行某个操作,这个操作会直[……]

Read more

Command 命令模式

Command 命令模式

目录

[TOC]

1. 概述

1.1. 设计模式定义

通过封装一组完全不相关的对象相互之间的的交互及通讯来完成松耦合。
允许某一个对象的行为的变化是独立于其他对象的。

1.2. 自我理解

命令模式是一种行为模式,因此,它处理的是对象的行为。命令模式为系统中不同的对象提供中性化的交流媒介

1.3. 命令模式的组成

命令接口 (Command):定义命令的接口,声明执行的方法。
具体命令 (ConcreteCommand):命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。
接受者 (Re[……]

Read more

Observer 观察者模式

Observer 观察者模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象状态改变时,它的所有依赖者都会收到通知并自动更新。

典型的问题比如报社,只要你是他们的订户,他们每次有新报纸出版时,就会向你这送来,当你不想要看报纸时,取消订阅,他们就不会再给你送报纸。

1.2. 自我理解

1、观察者模式是一种发布订阅模式,发布者发布消息,订阅者收取消息,订阅者没有订阅该发布者就收不到消息;
2、观察者模式有两种模式,一种推,一种拉。推是直接传递消息给订阅者,订阅者直接使用。拉是把消息[……]

Read more