自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 pfsense配置网络

文章目录1.配置lan口2.配置wan口2.1 pfsense联网2.2 局域网内部虚拟机联网1.配置lan口默认lan口ip是192.168.1.1也可以自己配置:输入2开始配置ip:输入2选择lan口:输入ip地址,不能和已有ip冲突:输入掩码长度:输入网关:(可以跳过)输入ipv6地址:(可以跳过)是否使用dhcp:(不使用)使用http还是https服务:(都可以选)最后配置完成,可以访问web界面进行配置wan,登录页面默认密码账号admin/pfsense

2020-12-18 09:46:17 5577 1

原创 Spark集群架构

文章目录Spark架构Spark执行任务流程Spark运行环境Spark on YARNSpark StandaloneSpark架构Spark可以运行在YARN上也可以运行Mesos上,无论运行在哪个集群管理架构上,Spark都是以主从架构运行程序。主节点会运行Driver进程,该进程会调用Spark程序的main方法,启动SparkContext;Executor就是从节点的进程,该进程负责执行Driver分发的具体的task;Work负责启动和管理这些Exector,一个Worker可以有多个Ex

2020-10-26 16:01:32 355 1

原创 Kafka中的CAP机制

文章目录CAP理论AvailabilityPartition toleranceConsistency小结Kafka的CAP应用CAP理论在分布式系统中,各个节点的状态是如何同步的成了最大的难点,为了解决各个节点之间的状态同步问题,在1998年,由加州大学的计算机科学家 Eric Brewer 提出分布式系统的三个指标,分别是Consistency:一致性,Availability:可用性,Partition tolerance:分区容错性。下面来聊聊这三个指标。AvailabilityAvaila

2020-10-17 19:37:39 2483

原创 生产者生产数据如何保证数据不丢失

文章目录分区同步机制ack机制分区同步机制我们一般在创建topic的时候,为了保证安全可靠,都会设置多个分区,各个分区也有leader和follower之分,消费者消费数据只会从leader中消费,follower只负责同步leader分区的数据,一般有多少个follower就启动多少个线程来同步leader的数据。大家想一想,会不会有这种可能,生产者向leader中生产了10000条数据,而其中一个follower只同步了5000条就宕机了,kafka如何解决这个问题?欲知详情,请听下回分解!ack

2020-10-17 16:24:51 344

原创 Kafka的log存储机制

文章目录log文件分析log文件组成索引文件和数据文件命名分析索引文件和数据文件内容分析log文件分析log文件组成在我们搭建Kafka集群的时候,一般都会配置日志文件的路径,我们可以通过该路径找到kafka的日志文件,log文件与partition关系如下图所示:Kafka的日志文件可以可以说由对个segment file组成,一个segment file由一个xx…x.log数据文件和一个xx…x.index文件组成,当单个数据文件达到1GB(默认),就会生成新的segment file,所以,一

2020-10-17 15:46:01 179

原创 Kafka之数据重复和数据丢失原因

文章目录概述数据重复原因数据丢失原因提交偏移量概述我们都知道,消息在Kafka中是有偏移量的,这个偏移量可以记录消息被消费到哪里了,方便下次消费的时候知道从哪开始消费,那Kafka是怎么记录到数据被消费的偏移量的呢?其实有两种方式,第一种就是消费者把数据消费了再把偏移量提交给Kafka;第二种就是提交了偏移量再把数据发给Kafka。数据丢失或者重复的原因就在这里了。数据重复原因当数据给消费者消费之后,由于网络或者各种原因,导致偏移量没能提交给Kafka,这时的偏移量还是上次记录的偏移量,Kafka就

2020-10-16 21:20:04 535

原创 Kafka生产者数据分发策略

文章目录概述代码实现概述Kafka生产者在分发数据时(多分区),一般是怎么发送数据呢?要想得到答案,我们不妨通过源码找到,Kafka默认使用DefaultPartitioner.class的分发策略,下面为源码的注释,让我们一起来解读一下:/**The default partitioning strategy:<ul><li>If a partition is specified in the record, use it<li>If no partiti

2020-10-16 20:57:51 567

原创 HBase的预分区

文章目录HBase预分区是什么为什么要设置预分区如何设置预分区HBase预分区是什么HBase中的预分区就是在创建表格之前,指定好rowkey在哪个范围的数据会落到哪个分区中,因为HBase会按照字典顺序把rowkey进行排序的,所以指定好rowkey范围即可让对应的数据落到对应的分区中去。为什么要设置预分区设置了预分区之后,一个分区就会落到一个region中去,设置好之后会有如下好处:提高数据读写效率某一个范围的数据都落在同一个区域,在提交读写请求的时候,就能很快知道数据的位置上或者数据应该

2020-10-14 20:13:53 713

原创 HBase架构

文章目录HBase架构图HBase架构图HBase的架构图如下,HBase也是要依赖zookeeper的,所以安装HBase之前要先把zookeeper安装好。HBase是一个分布式的非关系型数据库,数据是存储在HDFS上面,一个节点就是一个HRegionServer,可以有多个HRegionServer,但是只有Active的HMaster,可以有多个Standby的HMaster(也就是备用节点),下面就来看看每个角色的作用吧!Client:用户可以通过客户端向HBase发出增删改查等请求。Z

2020-10-14 19:47:49 134

原创 HBase常用JavaAPI操作

文章目录前置条件创建表格向表中添加数据查询数据使用过滤器查询前置条件因为使用JavaAPI要和HBase的服务端建立连接,如果每测试一次就要创建一个连接,就会显得比较麻烦,所以使用junit单元测试,来减少代码的冗余。private Configuration configuration;private Connection connection;/** *获取连接 */@Beforepublic void getConfigurationAndTable() throws IOExce

2020-10-13 21:28:59 173

原创 HBase常用shell操作

# 创建表格 必要参数:表名、列族名(可以有多个)# 创建名为user的表格,并指定有两个列族info和datahbase(main):002:0> create 'user','info','data'Created table userTook 1.4816 seconds => Hbase::Table - user# 也可以通过如下命令进行创建并指定某一列族所保存的版本数

2020-10-12 22:06:52 99

原创 Redis的Sentinel架构

文章目录概述配置Sentinel架构概述Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。当server1掉线后:配置Sentinel架构修改sentinel.conf配置文件#修改bind配置,每台机器修改为自己对应的主机名bind node02#配置sen

2020-10-12 15:15:08 52

原创 Redis主从复制架构

文章目录Redis主从复制架构概述配置主从复制架构Redis主从复制架构概述redis的主从复制架构图如下,由于单节点的redis通常无法满足日常需求,并且单节点的服务要同时提供读写服务,服务器压力会比较大,所以可以配置主从主从复制架构,master可以对外提供读写服务,但是一般只对master节点进行写操作,读操作一般是在slave节点进行。这样可以大大减少node02节点的压力。配置主从复制架构master节点解压和编译安装# 安装依赖环境yum -y install gcc-c++ t

2020-10-12 15:02:17 86

原创 redis的持久化方案

文章目录概述RDB持久化AOF持久化结语概述由于redis是一个基于内存的数据库,所有的数据都是保存在内存当中的,内存当中的数据极易丢失,所以redis的数据持久化就显得尤为重要,在redis当中,提供了两种数据持久化的方式,分别为RDB以及AOF,且redis默认开启的数据持久化方式为RDB方式,下面来详细聊一下这两种模式。RDB持久化RDB方案介绍RDB持久化方案就是会定期给redis数据库保存一个快照至一个rdb文件中,redis启动的时候会根据rdb文件进行数据恢复。至于多久会执行一次快

2020-10-12 14:23:55 55

原创 复合级指标分析

在本次指标分析之前,已经把基础级指标都计算好了,并且已经写入数据表:人均浏览页数(平均访问深度)计算方式一:可以直接通过已经计算好的pv,uv值进行计算,某一天的人均浏览页数也就是总的浏览页数/访问人数,即pv/uv,可用下面查询语句实现:select pv/uv as avg_pv from dw_webflow_basic_info where datestr="20181101";计算方式二:可以通过宽表先计算出pv和uv,然后通过子查询,对查出来的结果做除法即可,因为数据的用户字段

2020-10-09 20:50:08 396

原创 流量分析常见指标

文章目录基础级指标复合级指标基础级指标PageView浏览次数(PV)用户每打开1个网站页面,记录1个PV。用户多次打开同一页面PV累计多次。通俗解释就是页面被加载的总次数。Unique Visitor独立访客(UV)1天之内,访问网站的不重复用户数(以浏览器cookie为依据),一天内同一访客多次访问网站只被计算1次。访问次数(VV)访客从进入网站到离开网站的一系列活动记为一次访问,也称会话(session),1次访问(会话)可能包含多个PV。IP1天之内,访问网站的不重复IP数。一天

2020-10-08 20:37:52 1115

原创 建立宽表

文章目录什么是宽表?为什么要创建宽表?创建宽表导入数据什么是宽表?为什么要创建宽表?所谓宽表,就是相对于窄表来说的,在原来表的基础上,把某些字段拓宽,就可以得到宽表。就像我这里的ods_weblog_origin表,time_local字段的值:“2018-11-01 06:49:18”,当某个需求要统计某一天某个小时的访问量的时候,使用这个显然显得不方便,所以要建立宽表,方便后面的计算使用。我这里把ods_weblog_origin表进行拓宽,把time_local和http_referer两个字段进

2020-10-08 20:08:08 2221

原创 hive中的explode和lateral view的使用

expolde的使用expolde是一个典型的UDTF函数(一进多出),通过以下例子来快速了解expolde函数的使用:create table test_message(id int,name string,location array<string>,city array<int>) row format delimited fields terminated by ","collection items terminated by '|';--准备如下数据001..

2020-10-08 18:14:46 164

原创 在原始数据层创建表格并导入数据

ODS层设计了三个表格,分别是ods_weblog_origin(原始日志表),ods_click_pageviews(点击模型表),ods_click_stream_visit(点击流模型表),建表语句如下:create table ods_weblog_origin(valid string,remote_addr string,remote_user string,time_local string,request string,status string,body_bytes_sen

2020-10-08 17:10:39 237

原创 建立数仓

数据仓库的建立一般都是分层建立的,那么应该分几层比较合理呢?这个就要结合业务和项目规模,我这里因为项目不大,就建立三层,分别是原始数据层(ODS),数据仓库层(DW)和数据应用层(APP)。数仓设计维度建模以维度为标准 开展数据的分析需求适用于面向分析领域的理论。比如分析型数据库 数据仓库 数据集市(OLAP)事实表分析主题的客观事件度量 是分析主题的数据聚集 事实表中一条记录往往对应着客观的一个事件往往是一堆主键的聚集 维度表所谓的维度就是指看待问题的角度 可以通过不

2020-10-08 17:01:15 140 2

原创 数据仓库分层

文章目录数据仓库为什么分层数据仓库分几层为什么最低分三层总结数据仓库为什么分层数据仓库分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:数据血缘追踪:当上层应用型数据出问题的时候,可以溯源到问题的根源,能快速定位问题所在。减少重复开发:分层后,中间层的数据可以供应用层重复使用,不用每次有新的需求都要从底层数据开始开发。把复杂的问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当

2020-10-08 12:38:59 87

原创 oozie调度shell脚本

oozie调度任务的一般步骤如下:创建工作目录并复制模板在oozie的根目录下,有已经写好的配置文件模板,job.properties和workflow.xml,我们只需要复制过来修改即可,不用从头开始写,这样会方便我们开发。在oozie根目录创建工作目录:oozie_works复制配置模板:cp -r examples/apps/shell/ oozie_works/编写shell脚本:#!/bin/bashecho "helloworld" >> /export/d

2020-10-06 12:04:31 289

原创 Flume容错机制

Flume容错机制描述当集群中有多台Flume机器在工作的时候,就要考虑集群中随时有机器宕机的情况,当有机器宕机,如何保证数据不丢失,下面我来介绍一下Flume的容错机制。就是建立Flume备胎,创建Standby节点,虽然可以解决单节点故障问题,但是集群的资源也会浪费,因为有一个是等待的,占用资源不干活,下面来看看架构图:...

2020-10-04 19:29:09 350

原创 Flume的负载均衡

Flume负载均衡概述负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法。Load balancing Sink Processor能够实现load balance功能,如下图。将Agent1的Event均衡地传输到其他两个Agent2和Agent3上,Event分配的算法有两种,一种是轮询,另一种是随机。Flume负载均衡实现使用Flume采集数据,首先要编写配置文件,我这里有三台服务器,所以要配置三个配置文件,但是从图中可以看出,Agent2和Agent3的配置基本一致的,所以

2020-10-02 12:32:05 739

原创 Hive函数

Hive有非常丰富的内置函数库,可以通过以下命令来查看所有的Hive自带函数:# 查看所有自带函数show functions;# 显示自带函数的用法:desc function upper;# 详细显示函数用法desc function extended upper;常用自带函数:#字符串连接函数: concat select concat('abc','def’,'gh'); # 带分隔符字符串连接函数: concat_ws select concat_ws(',',

2020-09-28 13:06:38 56

原创 Hive常用查询语句

数据源如下:学生表:sid sname birth sex01 赵雷 1990-01-01 男02 钱电 1990-12-21 男03 孙风 1990-05-20 男04 李云 1990-08-06 男05 周梅 1991-12-01 女06 吴兰 1992-03-01 女07 郑竹 1989-07-01 女08 王菊 1990-01-20 女老师表:tid tname01 张三02 李四03 王五课程表:cid cname tid01 语文 0202 数学 01

2020-09-28 09:40:55 333

原创 hive表操作

内部表操作# 创建简单入门表create table tb1(id int, name String);# 使用insert插入数据(会转化为mapreduce程序)insert into tb1(1, "zhangsan");# 创建表并指定分隔符create table if not exists tb2(id int, name String)row format delimited fields terminated by "\t";# 创建表并指定表文件的存放路径crea.

2020-09-27 20:47:13 76

原创 YARN的Job任务提交流程和任务调度

在Hadoop体系中,YARN的主要作用是资源管理和任务调度,其主要组合包括ResourceManager和NodeManager,下面来聊聊它的job任务提交流程和任务调度算法。job任务提交流程job任务的提交流程如下图:1 客户端向ResourceManager提交任务,ResourceManager会根据权限和当前集群的负载情况执行Job任务2 ResourceManager就会启动ApplicationManager来启动AppMaster,一个AppMaster对应一个Job任务

2020-09-27 12:50:20 528

原创 自定义·InputFormat实现小文件合并

我们在使用MapReduce读取文件时,一般使用的都是TextInputFormat进行读取文件,TextInputFormat是以行来读取的,读取出来的key是偏移量,value就是每一行文本。我们都知道在Hadoop中,小文件不仅影响NameNode性能,同时也影响MapReduce性能,所以我们正好可以通过自定义InputFormat来实现一下小文件的合并,同时也可以以此来了解InputFormat的某些底层原理。我们要实现文件读取的功能,不妨先看看TextInputFormat是怎么实现的。走!我

2020-09-26 20:37:07 138

原创 Hadoop HA原理

Hadoop HA集群的工作机制如下图:Hadoop HA集群总体上可以分为三部分:NameNode集群、JournalNode集群和Zookeeper集群。NameNode在某一时刻只有一个处于活跃状态,其他的都处于standby状态;JournalNode负责把edits文件传到standby的NameNode上;Zookeeper负责监控NameNode宕机情况,ZKFC(ZookeeperFailoverController)是专门监控NameNode健康的。为了同步NameNode的元数据一

2020-09-26 11:07:07 247

原创 SecondaryNameNode工作原理

fsimage和edits详解editsedits存放的是HDFS最近一段时间的修改日志,客户端对HDFS的操作首先会被记录到edits,然后namenode的元数据也会更新。fsimagefsimage是namenode元数据的备份,可以理解为是namenode的checkpoint。因为NameNode的元数据是存储在内存中的,所以每次NameNode重启或者是启动的时候都会先导入fsimage然后按照edits执行一遍,得到目前的文件系统的元数据信息。注意:上述过程中HDFS会进

2020-09-26 09:54:59 397

原创 HDFS读写文件详细过程

HDFS写文件写文件的大致过程如下图所示:HDFS写文件过程详解:1.客户端首先会向NameNode提交写文件申请2.NameNode检查用户权限和是否存在该目录文件等问题,决定是否可以上传3.NameNode返回是否可以上传4.如果NameNode返回可以上传,客户端就会向NameNode申请上传第一个block5.NameNode根据机架感知机制和DataNode空间大小等问题,返回三个(默认)DataNode地址6.客户端和返回的三台DataNode建立通信管道,本质是RPC调用,D

2020-09-26 09:53:02 519

原创 HDFS压力测试

实际生产环境当中,hadoop的环境搭建完成之后,第一件事情就是进行压力测试,测试我们 的集群的读取和写入速度,测试我们的网络带宽是否足够等一些基准测试。写入速度测试# 向HDFS文件系统中写入数据,10个文件,每个文件10MBhadoop jar /HadoopPath/share/hadoop/mapreduce/hadoopmapreduce-client-jobclient-2.7.5.jar TestDFSIO -write -nrFiles 10 fileSize 10MB# 测试

2020-09-26 09:43:18 499

原创 HDFS文件限额配置

HDFS上的配额管理针对的是某个目录而不是某个用户,添加配额管理可以更好地管理文件系统。配额管理可分为文件数量限额和目录空间大小限额,可以通过以下命令查看耨个目录的配额信息。#查看配额信息hdfs dfs -count -q -h /dir0none inf none inf 1 0 0 /dir0QUOTA REMAINING_QUATA SPACE_QUOTA SPACE_QUOTA

2020-09-26 09:42:30 753 1

原创 编译Hadoop源码包

为什么要自己编译源码包?为什么要编译源码包而不直接已经编译好的Apache安装包?因为已经编译好的Apache安装包不可以做压缩,所以要自己下载源码包编译。编译环境jdk1.7(注意:编译hadoop-2.7.x必须使用jdk1.7,否则会报错)maven3.xfindbug在线安装依赖包yum install autoconf automake libtool cmakeyum install ncurses-develyum install openssl-devel

2020-09-26 09:41:34 62

原创 MapReduce的MapJoin和ReduceJoin

先看元数据格式,有两张表商品表和订单表p开头的列代表商品ID,我们要通过商品ID实现Join操作,在MapReduce有两种方式,MapJoin和ReduceJoin:product.txtp0001,小米5,1000,2000p0002,锤子T1,1000,3000order.txt1001,20150710,p0001,21002,20150710,p0002,31003,20150710,p0001,3ReduceJoin先来看看ReduceJoin操作,数据的大致过程如下图:

2020-09-25 17:07:34 251

原创 Mapreduce的shuffle过程详解

MapReduce的shuffle过程可细分为两个过程:Map端:客户端提交Job任务后,经过一系列资源分配启动MapTask后,各个MapTask就会去HDFS通过InPutFormat拿到数据,进入MapTask任务。数据经过MapTask后会先根据Partitioner进行分区。数据经过分区后就会进入环形缓冲区,环形缓冲区大小默认为100M,也可以通过mapred-site.xml文件进行配置,当数据达到80%的时候,环形缓冲区的数据就会发生溢出,溢出的同时也会对key进行快速排序。

2020-09-25 00:13:14 1126

原创 shell编程基础

前置文件:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N8SvlTqt-1600478631043)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\1600437955860.png)]cut# 截取字符串 -d 指定以什么作为分隔符截取 -f 指定要截取的分区域(1,2,3 => 第1,2,3个域 1- => 1-末尾 n-m => n-m的域) -c 按字符分区域# 以空格

2020-09-19 09:25:06 74

原创 数据仓库之搭建ODS(原始数据层)

ODS即原始数据层,它里面的数据都是原始的数据,不经过任何加工处理的,是原始的json格式数据,因为原始数据有两种数据:启动日志和事件日志,所以在gmall数据库下创建两个表ods_start_log和ods_event_log。前面我已经把数据采集到HDFS上了,现在只要创建好表格,把数据导入表格中即可。由于hivesql是基于MR的,而MR又比较慢,所以这里使用Tez,Tez是一个Hive的运行引擎,性能优于MR。执行同样的HQL,在Tez下效率会高很多,所以后面我都会使用这个运行引擎。建表语句:

2020-08-08 03:37:20 2858 2

原创 配置HA的mysql

今天做数据仓库这个项目因为用到了hive,把hive的元数据信息存到mysql里面,所以配置了一个mysql,先来说说HA的mysql是什么回事。先看一下图片:我这里配置的是一个双向主从的集群,双向主从的意思就是两台机器都有可能成为master和slave,他们对外只提供一个IP,这两台机器的数据会同步一致,这是怎么做到的呢?其实就是安装一个keepAlive,两台机器的keepAlive只有一个会占用这个虚拟IP,keepAlive定期向mysql进程发送心跳,如果当mysql进程宕掉了,keepAl

2020-08-07 23:24:10 606

空空如也

空空如也

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

TA关注的人

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