自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黑白影的博客

《大数据入门指南》离线阅读版,可关注公众号:“程序员星球s” 进行获取!

  • 博客(163)
  • 收藏
  • 关注

原创 Docker 核心概念与基本使用

一、Docker 简介Docker 是一个构建,发布和运行应用程序的开放平台。Docker 以容器为资源分隔和调度的基本单位,容器封装了整个项目运行时所需要的所有环境,通过 Docker 你可以将应用程序与基础架构分离,像管理应用程序一样管理基础架构,以便快速完成项目的部署与交付。Docker 使用 Go 语言进行开发,基于 Linux 内核的 cgroup,namespace,以及 AUFS...

2020-01-17 13:39:41 1071 2

原创 Nginx 基础之静态网站部署,负载均衡,动静分离

一、Nginx 简介1.1 简介Nginx(engine x)是一个免费的,开源的,高性能的 HTTP 服务器, IMAP/POP3 代理服务器 和 TCP/UDP 代理服务器,通常可以用于进行反向代理和实现基于软件的负载均衡,除此之外,它还具备以下特性:Nginx 在设计时遵循模块化的设计方案,可以通过组合模块来扩展实现不同的功能,具备很高的扩展性。Nginx 遵循 matser \ ...

2020-01-17 13:38:00 1003

原创 详解四层、五层、七层计算机网络模型

一、体系结构计算机网络的各层及其协议的集合被称为网络的体系结构,按照不同的维度,其常被分为七层、五层、四层网络结构:1.1 七层网络模型开放式系统互联模型(Open System Interconnection Model,简称为 OSI 模型)是一种概念模型,由国际标准化组织提出,并试图成为计算机在世界范围内互连为网络的标准框架,它具有七层网络结构。1.2 四层网络模型互联网协议套件(...

2020-01-17 13:36:02 14533 1

原创 深入理解 Java 虚拟机

一、基本概念1.1 OpenJDK自 1996 年 JDK 1.0 发布以来,Sun 公司在大版本上发行了 JDK 1.1、JDK 1.2、JDK 1.3、JDK 1.4、JDK 5,JDK 6 ,这些版本的 JDK 都可以统称为 SunJDK 。之后在 2006 年的 JavaOne 大会上,Sun 公司宣布将 Java 开源,在随后的一年多里,它陆续将 JDK 的各个部分在 GPL v2(...

2020-01-16 13:44:31 677

原创 Java 23 种设计模式精讲

软件设计的原则1. 开闭原则定义:软件实体应当对扩展开放,对修改关闭。2. 里氏替换原则定义:继承必须保证超类所拥有的性质在子类中仍然成立。即子类在继承父类时,除了添加新的方法来新增功能外,尽量避免重写父类方法,因为这会导致整个继承体系的复用性变差。3. 依赖倒置原则定义:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。其核心思想是要面向接口编程...

2020-01-16 13:41:04 855

原创 详解 Java 并发编程

一、线程1.1 创建线程创建线程通常有以下三种方式:实现 Runnable 接口,并重写其 run 方法:public class J1_Method01 { public static void main(String[] args) { System.out.println("Main线程的ID为:" + Thread.currentThread().get...

2020-01-16 11:23:44 520

原创 Java 反射与注解

一、Class 类1.1 Class 对象在 Java 中,每个已加载的类在内存中都有一份类信息,类信息对应的类是 java.lang.Class,每个对象都持有指向它所属类信息的引用。所以想要获取 Class 对象,有以下三种方法:通过类名获取:Class<Date> dateClass = Date.class;Class<Integer> integer...

2020-01-16 11:04:16 266

原创 基于 HAProxy + KeepAlived 搭建 RabbitMQ 高可用集群

一、集群简介1.1 集群架构当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞吐量的目的。RabbitMQ 集群是一个或多个节点的逻辑分组,集群中的每个节点都是对等的,每个节点共享所有的用户,虚拟主机,队列,交换器,绑定关系,运行时参数和其他分布式状态等信息。一个高可用,负载均衡的 RabbitMQ 集群架构应类似下图:...

2020-01-16 10:49:01 977

原创 RabbitMQ 客户端开发

一、基本 API1.1 连接服务不论是进行生产者还是消费者的开发,第一步都必须要先连接到 RabbitMQ Broker ,然后创建信道 Channel,Channel 是后续一切操作的基础。代码如下:// 1.创建连接工厂ConnectionFactory factory = new ConnectionFactory();// 2.配置服务器地址和连接信息factory.setHo...

2020-01-16 10:47:01 293

原创 RabbitMQ 核心概念

一、消息队列消息队列中间件 (Message Queue Middleware,简称 MQ) 是指利用高效可靠的消息传递机制进行与平台无关的数据交流,它可以在分布式环境下扩展进程间的数据通信,并基于数据通信来进行分布式系统的集成。它主要适用于以下场景:项目解耦:不同的项目或模块可以使用消息中间件进行数据的传递,从而可以保证模块的相对独立性,实现解耦。流量削峰:可以将突发的流量 (如秒杀数据...

2020-01-16 10:42:05 384

原创 MongoDB 高可用集群架构

一、分片机制1.1 核心组件在单机环境下,高频率的查询会给服务器 CPU 和 I/O 带来巨大的负担,基于这个原因,MongoDB 提供了分片机制用于解决大数据集的分布式部署,从而提高系统的吞吐量。一个标准的 MongoDB 分片集群通常包含以下三类组件:shard :用于存储分片数据的 Mongod 服务器,为保证数据高可用,建议部署为副本集。config servers :配置服务...

2020-01-16 10:32:00 1079

原创 MongoDB 高可用基础之副本集

一、副本集1.1 复制功能为保证数据安全,实现高可用,MongoDB 提供了复制功能,可以将主节点上的数据复制到多个从节点上,这样即便主节点异常,由于数据是以多副本的方式存储,仍然可以保证数据安全。一个标准的三节点的副本集的架构如下: 1. 初始同步在副本集初始化时,主节点的 mongod 进程会扫描当前节点上每个数据库中的每个集合,然后将这些数据发送给从节点,进行初始化的全量复制。...

2020-01-16 10:29:30 840

原创 MongoDB 聚合管道

一、聚合简述在日常开发中,我们通常需要对存储数据进行聚合分析后,再返回给客户端。MongoDB提供了三种聚合的方式,分别是聚合管道,map-reduce 函数和单用途聚合方法。二、聚合管道MongoDB 的聚合操作类似于流水线处理,文档会依次进入多个管道阶段并执行相应的操作。这里先插入部分演示数据:db.employees.insertMany([ { emp_no...

2020-01-16 10:26:39 508

原创 MongoDB 索引详解

一、索引简介1.1 创建索引和大多数关系型数据库一样,MongoDB 支持使用索引来进行查询优化,采用类似 B-Tree 的数据结构来储存索引和文档的位置信息,同样也支持前缀索引和覆盖索引。在当前最新的 MongoDB 4.0 中,索引的创建语法如下:db.collection.createIndex( <key and index type specification>, &l...

2020-01-16 10:25:38 494

原创 MongoDB 基本使用

一、数据类型1.1 BSON文档 (Documents) 是 MongoDB 中数据的基本单元,它是键值对的有序集合,在数据结构上类似于 JSON,但是由于 JSON 只支持基本的 6 种数据类型:null,布尔,数字,字符串,数组和对象,因此其表达能力有限,所以 MongoDB 基于 JSON 拓展出新的数据格式 BSON 。BSON (Binary JSON) 是类似 JSON 文档的二进...

2020-01-16 10:24:34 427 2

原创 Redis 集群模式

一、集群模式介绍Redis Cluster 是 Redis 官方提供的分布式实现,在 Redis 3.0 版本正式推出,通过集群模式可以扩展单机的性能瓶颈,同时也可以通过横向扩展来实现扩容。此外,Redis 集群模式还提供了副本迁移机制,用于保证数据的安全和提高集群的容错能力,从而实现高可用。1.1 数据分区Redis Cluster 采用虚拟槽进行分区,槽是集群内数据管理和迁移的基本单位。...

2020-01-15 14:55:12 410

原创 Redis 哨兵模式

一、复制为了解决单点问题,保证数据的安全性,Redis 提供了复制机制,用于满足故障恢复和负载均衡等需求。通过复制机制,Redis 可以通过多个副本保证数据的安全性,从而提供高可用的基础,Redis 的哨兵和集群模式都是在复制基础上实现高可用的。1.1 建立复制关系想要对两个 Redis 节点建立主从复制关系,可以通过以下三种方式来实现:在从节点的配置文件中配置 slaveof {mas...

2020-01-15 14:47:13 416

原创 Redis AOF 和 RDB 持久化策略原理

一、数据持久化默认情况下 Redis 的数据都是保存在内存中,为避免 Redis 进程意外退出而导致数据丢失的问题,Redis 提供了 RDB 和 AOF 两种方式来实现数据的持久化存储。二、RDB 机制RDB 机制是以指定的时间间隔将 Redis 中的数据生成快照并保存到硬盘中,它更适合于定时备份数据的应用场景。可以通过手动或者自动的方式来触发 RDB 机制:2.1 手动触发可以通过...

2020-01-15 14:43:24 510

原创 Redis 基本数据类型和常用命令

一、数据类型Redis 5 支持以下多种数据类型:二进制安全的字符串。Lists (列表):根据插入顺序排序的字符串元素的集合。Sets (集):未排序的不重复的字符串元素的集合。Sorted Sets (排序集):类似于集,但每个字符串元素与被称为分数的值相关,元素总是按其分数排序。Hashes (散列) :由字段 (Field) 和值都是字符串组成的映射的集合。Bit Arra...

2020-01-15 14:39:53 243

原创 MySQL 查询性能分析之 Explain

EXPLAIN 关键字可以用于获取 SQL 语句执行计划的相关信息,在 MySQL 8.0 中,EXPLAIN 支持大多数 SQL 语句,如 SELECT 、DELETE 、INSERT 、REPLACE、和 UPDATE 。示例如下:mysql> EXPLAIN SELECT * FROM employees;+----+-------------+-----------+-----...

2020-01-08 11:32:46 240

原创 MyCat 读写分离与分库分表

一、Mycat 简介Mycat 是一个开源的数据库中间件,可以解决分布式数据库环境下的大多数问题,如读写分离、分库分表等,除此之外,它还具备以下特性:支持 MySQL、Oracle、DB2、SQL Server、PostgreSQL 等数据库常见的 SQL 语法。能够基于心跳机制进行自动地故障切换,支持读写分离,支持MySQL主从架构,以及 galera cluster 集群。支持数据的...

2020-01-08 11:27:08 508

原创 MySQL 高可用架构之 PXC 集群

一、PXC 集群Percona XtraDB Cluster (简称 PXC) 是 Percona 公司开源的实现 MySQL 高可用的解决方案。它将 Percona Server 和 Percona XtraBackup 与 Galera 库集成,以实现多主同步复制。和 MySQL 传统的异步复制相比,它能够保证数据的强一致性,在任何时刻集群中任意节点上的数据状态都是完全一致的,并且整个架构实...

2020-01-07 10:48:03 410

原创 MySQL 二进制日志复制、GTID 复制与半同步复制

一、日志格式1.1 二进制日志格式MySQL 二进制日志是进行主从复制的基础,它记录了所有对 MySQL 数据库的修改事件,包括增删改查和表结构修改。当前 MySQL 一共支持三种二进制日志格式,可以通过 binlog-format 参数来进行控制,其可选值如下:STATEMENT:段格式。是 MySQL 最早支持的二进制日志格式。其记录的是实际执行修改的 SQL 语句,因此在进行批量修改...

2020-01-06 16:18:45 552

原创 MySQL常用备份策略详解 —— mysqldump、mysqlpump 和 Xtrabackup

一、备份简介2.1 备份分类按照不同的思考维度,通常将数据库的备份分为以下几类:物理备份 与 逻辑备份物理备份:备份的是完整的数据库目录和数据文件。采用该模式会进行大量的 IO 操作,但不含任何逻辑转换,因此备份和恢复速度通常都比较快。逻辑备份:通过数据库结构和内容信息来进行备份。因为要执行逻辑转换,因此其速度较慢,并且在以文本格式保存时,其输出文件的大小大于物理备份。逻辑备份的还原的...

2020-01-03 09:28:39 846

原创 MySQL 核心三剑客 —— 索引、锁、事务

一、常见存储引擎1.1 InnoDBInnoDB 是 MySQL 5.5 之后默认的存储引擎,它具有高可靠、高性能的特点,主要具备以下优势:DML 操作完全遵循 ACID 模型,支持事务,支持崩溃恢复,能够极大地保护用户的数据安全;支持多版本并发控制,它会保存数据的旧版本信息,从而可以支持并发和事务的回滚;支持行级锁,支持类似 Oracle 的一致性读的特性,从而可以承受高并发地访问;...

2020-01-02 17:00:43 784

原创 Spark 系列(一)—— Spark简介

Spark简介一、简介Spark于2009年诞生于加州大学伯克利分校AMPLab,2013年被捐赠给Apache软件基金会,2014年2月成为Apache的顶级项目。相对于MapReduce的批处理计算,Spark可以带来上百倍的性能提升,因此它成为继MapReduce之后,最为广泛使用的分布式计算框架。二、特点Apache Spark具有以下特点:使用先进的DAG调度程序,查询优化器...

2019-07-19 07:38:33 1474 4

原创 Spark 系列(三)—— 弹性式数据集RDDs

一、RDD简介RDD全称为Resilient Distributed Datasets,是Spark最基本的数据抽象,它是只读的、分区记录的集合,支持并行操作,可以由外部数据集或其他RDD转换而来,它具有以下特性:一个RDD由一个或者多个分区(Partitions)组成。对于RDD来说,每个分区会被一个计算任务所处理,用户可以在创建RDD时指定其分区个数,如果没有指定,则默认采用程序所分配到...

2019-07-19 07:37:49 546

原创 Spark 系列(二)—— Spark开发环境搭建

一、安装Spark1.1 下载并解压官方下载地址:http://spark.apache.org/downloads.html ,选择Spark版本和对应的Hadoop版本后再下载: 解压安装包:# tar -zxvf spark-2.2.3-bin-hadoop2.6.tgz1.2 配置环境变量# vim /etc/profile添加环境变量:export SPARK_...

2019-07-19 07:37:22 818

原创 Hive —— 安装部署

一、安装Hive1.1 下载并解压下载所需版本的Hive,这里我下载版本为cdh5.15.2。下载地址:http://archive.cloudera.com/cdh5/cdh/5/# 下载后进行解压 tar -zxvf hive-1.1.0-cdh5.15.2.tar.gz1.2 配置环境变量# vim /etc/profile添加环境变量:export HIVE_HOME=...

2019-06-10 13:46:55 318 1

原创 Kafka —— 基于 ZooKeeper 搭建 Kafka 高可用集群

一、Zookeeper集群搭建为保证集群高可用,Zookeeper集群的节点数最好是奇数,最少有三个节点,所以这里搭建一个三个节点的集群。1.1 下载 & 解压下载对应版本Zookeeper,这里我下载的版本3.4.14。官方下载地址:https://archive.apache.org/dist/zookeeper/# 下载wget https://archive.apache...

2019-06-10 13:30:48 511

原创 ZooKeeper —— 单机环境和集群环境搭建

一、单机环境搭建1.1 下载下载对应版本Zookeeper,这里我下载的版本3.4.14。官方下载地址:https://archive.apache.org/dist/zookeeper/# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz1.2 解压# tar...

2019-06-10 13:30:39 221

原创 Flume —— 安装部署

一、前置条件Flume需要依赖JDK 1.8+,JDK安装方式见本仓库:Linux环境下JDK安装二 、安装步骤2.1 下载并解压下载所需版本的Flume,这里我下载的是CDH版本的Flume。下载地址为:http://archive.cloudera.com/cdh5/cdh/5/# 下载后进行解压tar -zxvf flume-ng-1.6.0-cdh5.15.2.tar....

2019-06-10 13:30:26 206

原创 Azkaban —— 编译及部署

一、Azkaban 源码编译1.1 下载并解压Azkaban 在3.0版本之后就不提供对应的安装包,需要自己下载源码进行编译。下载所需版本的源码,Azkaban的源码托管在GitHub上,地址为https://github.com/azkaban/azkaban 。可以使用git clone的方式获取源码,也可以使用wget直接下载对应release版本的tar.gz文件,这里我采用第二种方...

2019-06-10 13:30:18 664

原创 Spark —— 高可用集群搭建

一、集群规划这里搭建一个3节点的Spark集群,其中三台主机上均部署Worker服务。同时为了保证高可用,除了在hadoop001上部署主Master服务外,还在hadoop002和hadoop003上分别部署备用的Master服务,Master服务由Zookeeper集群进行协调管理,如果主Master不可用,则备用Master会成为新的主Master。 二、前置条件搭建Spark集群...

2019-06-10 13:30:04 472

原创 Storm —— 集群环境搭建

一、集群规划这里搭建一个3节点的Storm集群:三台主机上均部署Supervisor和LogViewer服务。同时为了保证高可用,除了在hadoop001上部署主Nimbus服务外,还在hadoop002上部署备用的Nimbus服务。Nimbus服务由Zookeeper集群进行协调管理,如果主Nimbus不可用,则备用Nimbus会成为新的主Nimbus。 二、前置条件Storm 运行依...

2019-06-10 13:29:51 364

原创 Storm —— 单机环境搭建

1. 安装环境要求you need to install Storm’s dependencies on Nimbus and the worker machines. These are:Java 7+ (Apache Storm 1.x is tested through travis ci against both java 7 and java 8 JDKs)Python 2.6...

2019-06-10 13:29:44 240

原创 HBase —— 集群环境搭建

一、集群规划这里搭建一个3节点的HBase集群,其中三台主机上均为Regin Server。同时为了保证高可用,除了在hadoop001上部署主Master服务外,还在hadoop002上部署备用的Master服务。Master服务由Zookeeper集群进行协调管理,如果主Master不可用,则备用Master会成为新的主Master。 二、前置条件HBase的运行需要依赖Hadoop...

2019-06-10 13:29:35 257

原创 HBase —— 单机环境搭建

一、安装前置条件说明1.1 JDK版本说明HBase 需要依赖JDK环境,同时HBase 2.0+ 以上版本不再支持JDK 1.7 ,需要安装JDK 1.8+ 。JDK 安装方式见本仓库:Linux环境下JDK安装1.2 Standalone模式和伪集群模式的区别在Standalone模式下,所有守护进程都运行在一个jvm进程/实例中;在伪分布模式下,HBase仍然在单个主机上运...

2019-06-10 13:29:27 597

原创 基于 ZooKeeper 搭建 Hadoop 高可用集群

一、高可用简介Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用,两者的实现基本类似,但 HDFS NameNode 对数据存储及其一致性的要求比 YARN ResourceManger 高得多,所以它的实现也更加复杂,故下面先进行讲解:1.1 高可用整体架构HDFS 高可用架构如下: 图片引用自:https://www.edur...

2019-06-10 13:29:05 852

原创 Hadoop —— 集群环境搭建

一、集群规划这里搭建一个3节点的Hadoop集群,其中三台主机均部署DataNode和NodeManager服务,但只有hadoop001上部署NameNode和ResourceManager服务。 二、前置条件Hadoop的运行依赖JDK,需要预先安装。其安装步骤单独整理至:Linux下JDK的安装三、配置免密登录3.1 生成密匙在每台主机上使用ssh-keygen命令生成...

2019-06-10 13:28:52 343

空空如也

空空如也

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

TA关注的人

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