自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分析Kafka offset管理与Spark Streaming背压速率(待更)

1、背压问题涉及到自动调整ss消费消息的速率,以便让计算处理能力跟接收消息的能力匹配2、手动管理offset的文章为何要管理offset三种场合都需要保证重启ss进程后,能够接着上次消费的位置进行消费...

2020-03-19 22:21:45 594

原创 基于PySpark整合Spark Streaming与Kafka

  本文内容主要给出基于PySpark程序,整合Spark Streaming和Kafka,实现实时消费和处理topic消息,为Python开发大数据实时计算项目提供基本参考。(后续将陆续给出基于Scala开发大数据实时计算项目的文章)1 程序环境准备:虚拟机A:启动单实例kafka服务虚拟机B:运行PySpark程序在VM A,程序环境要求安装jdk1.8以上以及与kafka匹配版本的s...

2020-03-06 23:43:11 8881 9

原创 深入理解异步IO的底层逻辑——IO多路复用(select、poll、epoll)

文章目录前言1、理解文件描述符1.1 基本概念1.2 打开一个文件1.3 对文件描述符进行读写1.4 通过管道打开文件描述符1.5 常见的文件描述符0、1、21.6 进程打开文件描述符的个数1.7 文件描述符底层原理本节小结2、 IO多路复用原理2.1 IO触发用户空间与内核空间之间的切换2.1 IO模型的介绍前言  在前面两篇文章《gevent与协程》和《asyncio与协程》,讨论了有关协...

2020-01-21 23:12:17 4508

原创 Spark DataFrame、Spark SQL、Spark Streaming入门教程

文章目录前言1、RDD、Spark DataFrame、Spark SQL、Spark Streaming2、Spark DataFrame2.1 创建基本的Spark DataFrame2.2 从各类数据源创建Spark DataFrame2.3 Spark DataFrame持久化数据2.4 Dataframe常见的API3、Spark SQL4、Spark Streaming实时计算TCP...

2020-01-14 21:50:59 2132

原创 基于PySpark和ALS算法实现基本的电影推荐流程

2、读数据多个api基本常用读取数据的apisc.pickleFile() # <class 'pyspark.rdd.RDD'>sc.textFile() # <class 'pyspark.rdd.RDD'>spark.read.json() # <class 'pyspark.sql.dataframe.DataFrame'>spark.read...

2020-01-11 10:23:19 4990

原创 深入解析asyncio与协程

文章目录前言1、asyncio的基本概念2、使用asyncio2.1 使用async关键字和await定义协程2.2 task对象2.2 future对象2.3 获取协程并发执行后的所有返回值2.4 asyncio.gather vs asyncio.wait2.5 嵌套协程的实现2.6 如何取消运行中协程2.7 理解loop的相关方法2.7.1 loop.run_until_complate ...

2020-01-04 21:10:48 1289

原创 gevent与协程

文章目录1、 yield 实现协程1.1 yield 同步执行1.2 启动多个yield模拟consumer并发2 、greenlet实现的协程2.1 简单gevent协程例子2.2 gevent 高并发测试2.3 理解gevent的monkey.patch_all()2.2.1 locals()方法2.2.2 gevent 替换非阻塞的模块的思路3、gevent examples3.1 使用协...

2019-12-28 14:42:52 795

原创 深入理解RDD弹性分布式数据集

文章目录前言1、RDD简介2、创建RDD3、宽依赖和窄依赖4、通过RDD的依赖关系构建DAG计算图5、RDD 持久化6、RDD的checkpointing机制7、Spark分区与RDD分区(待更新)前言  在前面的博客《深入理解Spark》 深入探讨了Spark架构原理内容,该文提到Stage的划分,为什么要做Stage划分?是为了得到更小的Task计算单元,分发给Executor的线程运行,...

2019-12-26 19:37:19 1081

原创 深入理解Spark

  在前面博客文章里,已经把大数据实时分析项目在spark组件之前的各个组件原理、部署和测试都给出相关讨论,接下来是项目最核心的内容:实时计算部分,因为项目将使用spark streaming做微批计算(准实时计算),因此接下的文章内容将深入spark以及spark streaming架构原理,为后面实际计算编程做铺垫。1、Spark 是什么?  Spark是一种分布式的并行计算框架,什么是计...

2019-12-22 16:31:16 1094

原创 基于Sentinel模式部署高可用Redis

文章目录1、安装redis2、Sentinel 的配置说明2.1 官网有关Sentinel模式的基本信息2.2 redis官网Sentinel模式说明3、一主两从的redis架构配置3.1 配置主从的**redis.conf**文件3.2 启动和测试主从4、sentinel 高可用配置4.1 配置sentinel.conf4.2 测试redis高可用5、在python项目或者django的项目引入...

2019-12-20 21:31:37 956

原创 深入解析Python元类功能

文章目录前言1、python的class也是一种object1.1 python的class也是一种object1.2 动态创建类2 、Python的metaclass元类前言python的元类使用场景一般在大型框架里面,例如Django的ORM框架、基于python实现的高级设计模式,元类的这部分内容相对晦涩,但也是作为python非常核心的知识点,通过解析其机制,有利于阅读和学习优秀中间件...

2019-12-18 19:39:36 267

原创 基于YARN HA集群的Spark HA集群

文章目录前言1、yarn HA模式的配置1.1 完整 yarn-site.xml配置1.2 mapred-site.xml的配置文件说明1.3 yarn HA的启动2、spark HA 集群及其基本测试2.1 修改spark配置2.2 启动spark集群3、spark on yarn3.1 spark集群跑在yarn上的两种方式3.2 测试spark on yarn前言  在前面的《基于h...

2019-12-08 18:06:08 1197

原创 flume集群高可用连接kafka集群

文章目录前言1、在kafka集群上创建相应的topic2、单节点配置flume的agent sink为sink2.1 配置flume 文件2.2 测试数据消费情况3 、flume NG集群连接kafka集群前言  在前面blog文章中:《在hadoopHA节点上部署flume高可用组件》和《在hadoopHA节点上部署kafka集群组件》,已经实现大数据实时数据流传输两大组件的部署和测试,本文...

2019-12-05 21:00:22 1774

原创 深入理解kafka

文章目录前言1、kafka集群架构图2、kafka 高性能读写的设计2.1、利用read-ahead 和 write-behind提升写性能2.2、使用pagecache缓存程序数据提升读写性能2.3 通过sendfile(零拷贝机制)提高消费者端的读吞吐量3、kafka的repilcas副本机制3.1 主分区的副本3.2 leade如何管理follower节点3.3 Replica如何均匀分布到...

2019-12-01 12:16:41 1356

原创 在hadoopHA节点上部署kafka集群组件

文章目录前言1、Kafka的基本介绍1.1 什么是kafka1.2 kafka 应用场景1.3 kafka相关术语2、kafka 单点部署与测试2.1 配置文件2.2 启动kafka进程2.3 测试topic3、kafka集群部署与测试3.1 配置server.properties3.2 集群测试3.3 在zk上查看集群情况4、kafka的架构原理4.1 Kafka集群的leader选举前言在...

2019-11-28 22:02:03 533

原创 Python开发常用的虚拟环境管理配置

文章目录前言1、python虚拟工具介绍1.1 virtualenv1.2 virtualenvwrapper1.3 venv1.4 pyenv2、python虚拟化环境实现原理3、使用virtualenv作为最终python虚拟环境管理工具3.1 为多个python版本安装相应的pip3.2 安装virtualenv4、virtualenv创建虚拟环境前言在项目中,或者跑一些demo,例如...

2019-11-27 19:24:21 659

原创 在hadoopHA节点上部署flume高可用组件

文章目录前言1、flume 的基本介绍1.1 基本介绍1.2 数据流模型2、flume的配置文件说明2.1 配置过程3、单点flume agent测试3.1 基本安装3.2 启动flume agent进程3.3 将source.type配成tail F4、flume高可用配置4.1 三个agent的flume配置4.2 配置 collector前言前面的blog已实现了hadoopHA的项...

2019-11-24 16:17:22 1088

原创 Pandas数据预处理的常用函数

文章目录前言1、读取数据文件1.1 读取excel数据文件1.2 读取csv文件1.3 读取数据时,跳过尾行1.4 读取特定分割符的数据文件1.5 使用c或者python作为读取文件的引擎1.6 使用迭代器读取超大文件2、查看数据的基本信息3、有关空值处理3.1 行的空值处理3.2 列的空值处理3.3 空值的填充3.4 空值使用所在列或者所在行的均值、中位数来填补4、dataframe 取(定...

2019-11-22 23:30:19 2139

原创 hadoop平台网络配置bond模式实现高可用

文章目录项目背景1、为测试服务器添加多个网卡2、查看测试服务器的网卡信息3、配置两个网卡3.1 这里需要先把原网卡配置拷贝一份作为备份。3.2 将ens33和ens37配成slave模式4、配置bond0虚拟网卡5、bond0的配置说明和工作原理6、 加载内核bond模块 modprobe bonding7、查看bond0虚拟网卡状态并测试主备网卡切换项目背景  在前面文章关于hadoop大数...

2019-11-19 20:54:57 507

原创 深入functools.wraps、partial

文章目录前言:第一部分内容:第二部分内容:第三部分内容:1、python的魔法方法`__slots__`的作用1.1、 slots方法保证实例不会创建`__dict__`方法1.2、为何列表占用空间比元组大?2、attrgetter/itemgetter类的解析2.1 attrgetter的使用场景2.2 attrgetter的内部实现:2.3 itemgetter的使用场景2.4 itemget...

2019-11-17 22:04:06 434 1

原创 构建高可用Hive HA和整合HBase开发环境(一)

文章目录1、Hive Requirements2、Hive 环境部署2.1 配置环境变量2.2 配置hive-env.sh和hive-site.xml2.3 配置Hive的运行日志2.4 加入mysql connector2.5 在mysql建表2.6 初始化hive schema2.7 在mysql上查看hive创建的元表2.8 启动hive3、hive建表测试3.1 创建一个员工表3.2 h...

2019-11-16 09:32:21 762

原创 supervisor管理web服务进程

部分较小的项目例如flask,对内部使用,可无需使用web server,直接用flask自带服务即可完成需求,但考虑到直接使用python app.py启动flask 应用时,在部分情况下,前端使用可能会导致flask进程退出,因此有必要对其进行监控并自动重启,supervisor可满足需求,加上其用python写成,完全可以独自进行二次开发。本文是对以往部分项目进行一个整理,作为参考资料归档。...

2019-11-06 23:16:49 1428

原创 HBase架构分析

在前面的文章中,详细给出了HBase HA高可用部署以及测试的内容,本篇文章将对HBase架构进行分析。1、有关HBase基本介绍1.1 HBase解决的痛点:解决随机近实时的高效的读写解决非结构化的数据存储1.2 HBase应用:可以存储非结构化的数据被用来做实时数据分析(整合flume、storm、streaming等)引用HBase作为业务存储,则需要注意的点(按官...

2019-11-02 09:37:41 318

原创 基于Hadoop HA集群部署HBase HA集群(详细版)

前面的博客中链接1、前言已经给出Hadoop3.1.2和yarn的完整部署(但还不是高可用),此篇博客将给出Hadoop的高可用部署,以及HBase高可用,为之后应用数据层开发提供底层的BigTable支持。前面的文章,我们已经深入讨论的ZooKeeper这个中间件的原理以及分布式锁的实现,事实上zookeeper使用最广泛的场景是“选举”主从角色,Hadoop以及Hbase的高可用(主从架构...

2019-10-28 22:26:17 5067 5

原创 MapReduce设计原理

(注意本文主要为个人理解、记忆以及归档而整理的技术文章,所以用词、句以个人易于理解的方式去组织。)1、MR基本定义参考百度百科定义,简要概括如下:MapReduce是分布式的计算框架或者解决方案,大致有基本内容:1)首先MapReduce重点是工作在集群的节点上,而非在单台服务器上做计算、做统计等2)MapReduce把用户提交的任务以分布式放在多个节点上执行,自动划分计算数据和计算任务...

2019-10-27 11:37:02 714

原创 理解HDFS文件系统架构和原理

1、hadoop是一种具体的技术吗?准确的说,hadoop是一套大数据的解决方案或者技术栈,不仅仅特指某种大数据技术,由Apache基金会上多个与大数据有关的明星组件构成,包括HDFS(分布式文件系统),YARN(分布式资源调度系统),MapReduce(分布式计算系统)、Spark、Hive、Hbase、Mahout、Zookeeper、Flume等,如下图所示。本文将重点讨论HDFS、YAR...

2019-10-15 19:34:10 834

原创 基于hadoop3.1.2分布式平台上部署spark HA集群

基于hadoop3.1.2分布式平台上部署spark集群在此文章《基于Centos7.5完整部署分布式Hadoop3.1.2》里,已经给出详细的hadoop和yarn的部署过程,既然已经解决了大数据开发中“hdfs”的数据存储部署,那么就要考虑如何基于底层分布式文件基础上运行计算框架,以便进行更高层次的应用开发。在本篇文章中,将给出完整部署spark计算框架集群。1、spark版本(仅列出sp...

2019-10-13 22:36:48 1615

原创 浅谈中间件

1、中间件的专业解释这里只引用其中一小段的文字:中间件是一类连接软件组件和应用的计算机软件,中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。从其专业解释可以看出,“中间件”传统定义为是一套复杂、基础的软件集合,这里的基础不是“简单、基础”,而是底层的、晦涩复杂的,那么开发出此类中间件,依靠个人力量开发将难以实现,由...

2019-10-10 21:29:56 320

原创 利用 rsync 同步项目代码、数据文件

利用 rsync 同步项目代码、数据文件背景:当前IT环境下,网络安全越来越重要,其中在等级保护条例中,有提交系统或项目代码、数据的同步和备份是数据安全非常关键一环,并要求定时备份且定时加密,个人在实际场景已经使用rsync完成等保相关要求,以下为以小项目作为完整配置说明1、安装rsync两台服务器安装 yum install -y rsync 或者在官网https://rsync.samb...

2019-10-10 21:24:12 232

原创 基于Centos7.5完整部署分布式Hadoop3.1.2

1、相关安装包以及规划考虑本地测试使用,这里所使用的三台服务器均有虚拟机创建,每台配置:1个vCPU+1G内存+9G硬盘Hadoop:Hadoop-3.1.2JDK: jdk1.8.0_161Ip角色hadoop路径Hostnamejdk路径linux版本192.188.0.4NameNode,Datanode,NodeManager/opt/hadoop-...

2019-10-10 21:15:02 583

原创 基于redis实现分布式锁(多实例redis+RedLock算法)

在前面的文章中,已经实现单实例redis分布式锁,但这种实现是基于单个redis服务,若redis服务不可用,显然所有客户端无法加锁,该实现还未到高可用的水平,因此需要进一步提升分布式的锁的逻辑,好在redis官方提供了相应的权威描述并称之为Redlock,具体参考文章:DLM,这个锁的算法实现了多redis实例(各个redis是相互独立的,没有主从、集群模式)的情况,实现了真正高可用分布式锁。...

2019-09-22 22:58:31 1305 3

原创 基于redis实现分布式锁(单实例)

zookeeper的分布式方案当然最优雅也最可靠,如果redis集群服务已经搭起或者哨兵模式已经部署的条件下,那么基于多个redis实例实现的分布式锁同样高可用,而且redis性能凸显,本文给出的是在单个redis服务上实现可用的分布式锁。1、基于redis单实例实现的分布式锁加锁加锁实际上就是在redis中,给Key键设置一个全局唯一值,为避免死锁(客户端加锁后,一直没有释放锁),并该...

2019-09-19 22:00:53 636

原创 redis-cluster原理及其部署测试

redis作为个人最喜欢的中间件之一,代表着出色的项目“生产力”,在博客当然会给出它的相关讨论。1、Part I这里主要讨论redis集群数据分片的内容1.1 为何使用redis-cluster模式?1)首先避免单点故障,本人项目中用了主从模式,但因并发量不高,而且在redis不可用条件下,可以直接去数据库拿数据,所以还未部署集群模式。2)redis官方给出单服务最高可以达到每秒执行...

2019-09-14 14:27:37 517

原创 ZooKeeper特性适用的应用场景

ZooKeeper特性适合的应用场景​ 随着对zk使用和了解更深入,不得不佩服Apache基金出品的技术,一直拥有着改变世界的能量!zookeeper结合大数据技术栈,实现无以伦比的高可用分布式大数据架构,单单这一点就非常让人兴奋,从zk的设计来看,传统的数据结构和算法以及底层网络知识和技术,仍然可以通过结合现代业务模型进行创造和创新,所有继续保持沉淀传统基础,以助力更高效吸收新技术!​ ...

2019-09-10 22:52:11 153

原创 使用kazoo连接zookeeper并监听节点数量以及值变化

目前kazoo是连接zk的最新第三方库,最新更新时间为2019年1月,其他第三方连接zk的库都长时间未更新,所以推荐使用kazoo前面有几篇文章都已经详细给出了zk的部署,接下来是zk最核心的地方,将zk的数据结构特性跟业务场景相结合,实现复杂需求。这里主要使用python连接zk后的基本操作、建立watcher1、监控节点数量的变化基本操作,创建、更新、删除,kazoo接口已经足够简单...

2019-09-10 20:42:57 3677 1

原创 基于Zookeeper的临时顺序节点实现分布式锁

在前面的文章中,已经给出基于kazoo操作zk的逻辑,接下来利用zk的临时序列节点机制实现分布式锁,分布式锁场景使用非常广,在读写方面都非常适合,个人认为比基于redis实现的分布式锁更具可靠性(但性能方面,redis应该更强?)。1、zk的临时顺序节点临时顺序节点其实是结合临时节点和顺序节点的特点:在某个固定的持久节点下创建子节点时,zk通过将10位的序列号附加到原始名称来设置znode...

2019-09-10 00:11:09 4531

原创 基于Docker单机部署ZooKeeper集群

Zookeeper单机部署集群配置过程(基于docker方式)前面的文章部署zk服务,直接在裸机上部署,较为不便,现在很多服务如果不做docker化,无论在故障恢复、运维都增加很大困难,无法做到自动化部署,这种低效率的IT运营模式是比较难接受的,对于我们开发而已,必须是一键式优雅部署,所以本篇文章采用docker方式部署zk集群,可以从中对比裸机部署过程的不同以及优势1、部署docker和...

2019-09-04 22:30:34 2246 4

原创 Centos7配置docker和docker-compose环境

很早前就用了docker,之前的部署以及一些使用都记在文档上,建议有关技术栈的基础内容,适合放在blog,方便后期查看相关命令用法等,多看多巩固1、安装docker查看centos版本以及内核版本,docker仅支持3.10以上的内核[root@dn2 ~]# cat /etc/redhat-releaseCentOS Linux release 7.6.1810 (Core)[ro...

2019-09-04 21:40:15 839

原创 ZooKeeper单机模拟集群服务部署(非docker方式)

Zookeeper单机部署集群配置过程(非docker方式)上篇文章给出了zk的单机单服务部署,实际生产环境不可能使用单点zk服务,以下使用三个zk服务模拟集群(或者大于3的奇数,为何是3?因为zk的选举机制之一“超过半数选票才能获胜”,显然3个zk服务是满足的条件的下面以三个zk服务作为集群部署测试,csdn很多文章都称这种方式为伪集群1、三份zk的配置从bin/zkServer.s...

2019-09-01 16:25:47 372

原创 Zookeeper单机部署单服务过程(非docker方式)

Zookeeper 单机版安装zk这东西太优秀了,分布式锁、分布通知/协调(配置管理)、分布式队列、集群管理、数据发布与订阅等场景,最佳中间件,虽然zk有很多强大的特性,但一般公司的项目不会用得太多,集群管理、分布式锁应该是绝大部分公司最常用的zk两个特性!个人将对zk的单机以及集群安装和配置、基本命令使用、zk设计原理以及应用层实例使用进行全面记录。1、JDK安装通过压缩包方式安装,j...

2019-09-01 12:13:20 226

空空如也

空空如也

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

TA关注的人

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