自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 电商推荐系统项目总结

项目架构项目过程中的数据转换注意:图中RDD后跟的不是元素类型,而是其中元素的含义,如:userId即为用户Id,score和rating均为用户对商品的打分离线阶段数据转化流程实时阶段数据转化流程部分代码商品推荐优先级计算(实时推荐阶段)def computeProductScores( simProducts:scala.collection.Map[Int,scala....

2020-04-14 20:56:22 1568

原创 Spark内核之shuffle过程总结(流程图绘制)

HashShuffle(1.6后已经取消)流程图通过该流程图可以看出,HashShuffle的最大缺点就是在写入磁盘时,会产生大量文件,文件为为 ReduceTask的个数×MapTask个数,因此有了一种对HashShuffle过程进行优化的shuffle过程,他减少了写入磁盘的文件数,同一个core上调用的不同task共享同一个缓冲区与磁盘文件,这样就减小了文件数,文件数=该任务使用的c...

2020-04-11 19:34:41 407

原创 Spark内核之Task调度规则

FIFO调度器源码:private[spark] class FIFOSchedulingAlgorithm extends SchedulingAlgorithm { override def comparator(s1: Schedulable, s2: Schedulable): Boolean = { val priority1 = s1.priority val ...

2020-04-11 14:57:05 525

原创 RDD、DataFrame、DataSet的联系和转化

在SparkSQL中Spark为我们提供了两个新的抽象,分别是DataFrame和DataSet。他们和RDD有什么区别呢?首先从版本的产生上来看:RDD (Spark1.0) —> Dataframe(Spark1.3) —> Dataset(Spark1.6)如果同样的数据都给到这三个数据结构,他们分别计算之后,都会给出相同的结果。不同是的他们的执行效率和执行方式。在后期的Sp...

2020-04-08 12:22:41 129

原创 Spark SQL概述

Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame和DataSet,并且作为分布式SQL查询引擎的作用。Spark SQL与RDD的关系,类似hive和MR的关系,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快。Spark SQL的特点1)易整合2)统一的数据访问方式3)兼容Hive4)标准的数据连接Dat...

2020-04-08 12:18:12 257

原创 Spark之三大数据结构

RDD具体请查看https://blog.csdn.net/weixin_43497444/article/details/105349406累加器(共享只写)累加器用来对信息进行聚合,通常在向 Spark传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本,更新这些副本的值也不...

2020-04-08 12:05:37 844

原创 SparkCore之数据读取与保存

Spark的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。文件格式分为:Text文件、Json文件、Csv文件、Sequence文件以及Object文件;文件系统分为:本地文件系统、HDFS、HBASE以及数据库。文件类数据读取与保存Text文件数据读取:textFile(String)数据保存: saveAsTextFile(String)Json文件如果JS...

2020-04-08 11:55:18 274

原创 SparkCore之Key-Value RDD分区

Spark目前支持Hash分区和Range分区,用户也可以自定义分区,Hash分区为当前的默认分区,Spark中分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle过程属于哪个分区和Reduce的个数注意:(1)只有Key-Value类型的RDD才有分区的,非Key-Value类型的RDD分区的值是None(2)每个RDD的分区ID范围:0~numPartitions-1,...

2020-04-08 11:44:10 258

原创 Spark文件切分规则

Spark文件切分过程部分源码如下:numSplits = Math.min(defaultParallelism(默认等于核数),2)goalSize = totalSize / (numSplits == 0 ? 1 : numSplits)splitSize = computeSplitSize(goalSize ,minSize(默认为1),blockSize)protec...

2020-04-07 15:36:35 2231

原创 SparkCore之RDD编程(cache和checkpoint的区别)

1.cache操作是基于内存的,而checkpoint是基于磁盘进行的,遇到指定存储路径scala> sc.setCheckpointDir("./ck")2.cache操作是将job运行时的中间结果缓存下来,而checkpoint在job检查到checkpoint时,重新启动一个job来进行checkpoint的保存。因此通常情况下看到第二次才会生效。cache结果:check...

2020-04-07 12:20:52 298

原创 SparkCore之RDD编程(RDD的转换之Key-Value类型常用)

(1)partitionBy对pairRDD进行分区操作,如果原有的partionRDD和现有的partionRDD是一致的话就不进行分区, 否则会生成ShuffleRDD,即会产生shuffle过程。(2)reduceByKey(func, [numTasks])在一个(K,V)的RDD上调用,返回一个(K,V)的RDD,使用指定的reduce函数,将相同key的值聚合到一起,reduce...

2020-04-06 19:40:02 363

原创 SparkCore之RDD编程(RDD的转换之Value类型常用)

Value类型(1) map(func)返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成(2)mapPartitions(func)类似于map,但独立地在RDD的每一个分片上运行,因此在类型为T的RDD上运行时,func的函数类型必须是Iterator[T] => Iterator[U]。假设有N个元素,有M个分区,那么map的函数的将被调用N次,而mapPa...

2020-04-06 19:32:04 211

原创 SparkCore之RDD概述

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。RDD的属性一组分区(Partition),即数据集的基本组成单位;一个计算每个分区的函数;RDD之间的依赖关系;一个Partitioner,即RDD的分片函数;一个列表,存储存取每...

2020-04-06 19:24:11 110

原创 SparkCore值KV类型四个ByKey的区别和联系

reduceByKey、foldByKey、aggregateByKey、combineByKey之前的区别和联系源码主要逻辑函数比较算子源码reduceByKey( )combineByKetWithClassTag[V] ((v:V)=>v,func,func)foldByKey( )( )combineByKetWithClassTag[V] ((v:...

2020-04-06 17:25:24 358

原创 关于Scala中匿名函数中的参数是否可以省略的问题解析

Scala 中定义匿名函数的语法很简单,箭头左边是参数列表,右边是函数体。格式:(…) => {…}如:var inc = (x:Int) => x+1为下面这种函数的缩写def add2 = new Function1[Int,Int]{def apply(x:Int):Int = x+1;}问题1:上面情况下匿名函数的参数可以省略?当函数传入的参数值被调用一次的时候...

2020-04-06 11:38:40 536

原创 Spark三种运行模式

Local模式Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试。它可以通过以下集中方式设置Master。(1)local: 所有计算都运行在一个线程当中,没有任何并行计算,通常我们在本机执行一些测试代码,或者练手,就用这种模式;(2)local[K]: 指定使用几个线程来运行计算,比如local[4]就是运行4个Worker线程。通常我们的Cpu有几个Core,就指...

2020-04-05 14:35:10 595

原创 Spark集群角色

1.Master和WorkerSpark特有资源调度系统的Leader。掌管着整个集群的资源信息,类似于Yarn框架中的ResourceManager,主要功能:(1)监听Worker,看Worker是否正常工作; (2)Master对Worker、Application等的管理(接收worker的注册并管理所有的worker,接收client提交的application,(FIFO)调度等...

2020-04-05 14:18:56 399

原创 电商数仓项目总结

技术选型Hadoop-2.7.2,Zookeeper-3.4.10,Flume-1.7.0,Kafka-2.11.0,Kafka-manager-1.3.3.22,Sqoop-1.4.6,Mysql,HDFS,Hive-1.2.1,Tez-0.9.1,Presto0.196,yanagishima-18.0,azkaban-2.5.0,Ganglia整体架构数仓分层ODS(原始数据层)不...

2020-04-04 19:09:18 1713 1

原创 Druid安装(单机版)

安装包下载从https://imply.io/get-started 下载最新版本安装包安装部署imply集成了Druid,提供了Druid从部署到配置到各种可视化工具的完整的解决方案,imply有点类似于我们之前学过的Cloudera Manager1)将imply-2.7.10.tar.gz上传到hadoop102的/opt/software目录下,并解压[hadoop@hado...

2020-04-02 20:28:35 716

原创 Druid架构

Druid架构原理Druid数据结构与Druid架构相辅相成的是其基于DataSource与Segment的数据结构,它们共同成就了Druid的高性能优势。

2020-04-02 20:17:55 79

原创 Druid简介

1.Druid概念Druid是一个快速的列式分布式的支持实时分析的数据存储系统。它在处理PB级数据、毫秒级查询、数据实时处理方面,比传统的OLAP系统有了显著的性能改进。Druid的官方网站是http://druid.io。注意:阿里巴巴也曾创建过一个开源项目叫作Druid(简称阿里Druid),它是一个数据库连接池的项目。阿里Druid和本文讨论的Druid没有任何关系,它们解决完全不同的...

2020-04-02 20:14:34 5692

原创 Presto优化

Presto优化之数据存储合理设置分区与Hive类似,Presto会根据元数据信息读取分区数据,合理的分区能减少Presto数据读取量,提升查询性能。使用列式存储Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。相对于Parquet,Presto对ORC支持更好。使用压缩数据压缩可以减少节点间数据传输对IO带宽压力,对于即席...

2020-04-02 20:01:10 294

原创 Presto安装部署

Presto Server安装0)官网地址https://prestodb.github.io/1)下载地址https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.196/presto-server-0.196.tar.gz2)将presto-server-0.196.tar.gz导入hadoop102的/op...

2020-04-02 19:43:24 247

原创 Presto简介

Presto概述Presto是一个开源的分布式SQL查询引擎,数据量支持GB到PB字节,主要用来处理秒级查询的场景注意:虽然Presto可以解析SQL,但它不是一个标准的数据库。不是MySQL、Oracle的代替品,也不能用来处理在线事务。Presto架构Presto优缺点Impala性能稍领先于Presto,但是Presto在数据源支持上非常丰富,包括Hive、图数据库、传统关系型...

2020-04-02 19:35:39 356

原创 关于Kafka启动后无法正常关闭的问题解决方法(No kafka server to stop)

查看kafka关闭服务脚本kafka-server-stop.sh发现,该脚本通过PIDS=$(ps ax | grep -i 'kafka\.Kafka' | grep java | grep -v grep | awk '{print $1}')获取kafka的pid这里我们需要改成下面的语句,来使脚本可以正常获取pidPIDS=$(jps -lm | grep -i 'kafka...

2020-03-27 15:28:18 1033

原创 关于自定义群起zookeeper脚本无效的问题解决

单个虚拟机依次启动后发现jps进程里面有QuorumPeerMain进程,但用脚本查看状态却报下面的错误但是对单个虚拟机执行bin/zkServer.sh status,发现正常问题总结脚本只能停止集群,无法正常开启和查看zookeeper状态解决方法配置当前用户的环境变量1)修改/etc/profile文件:用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用...

2020-03-27 08:47:30 651

原创 Oozie安装部署

Oozie简介Oozie英文翻译为:驯象人。一个基于工作流引擎的开源框架,由Cloudera公司贡献给Apache,提供对Hadoop MapReduce、Pig Jobs的任务调度与协调。Oozie需要部署到Java Servlet容器中运行。主要用于定时调度任务,多任务可以按照执行的逻辑顺序调度。Oozie的功能模块介绍1.模块Workflow顺序执行流程节点,支持fork(分支多...

2020-03-25 21:53:31 126

原创 Azkaban安装部署

安装前准备将 Azkaban Web 服务器、Azkaban 执行服务器、Azkaban 的 sql 执行脚本及 MySQL 安装包拷贝到 hadoop102 虚拟机/opt/software 目录下a) azkaban-web-server-2.5.0.tar.gzb) azkaban-executor-server-2.5.0.tar.gzc) azkaban-sql-script...

2020-03-25 15:21:33 138

原创 Azkaban概述

Azkaban 特点兼容任何版本的 hadoop易于使用的 Web 用户界面简单的工作流的上传方便设置任务之间的关系调度工作流模块化和可插拔的插件机制认证/授权(权限的工作)能够杀死并重新启动工作流有关失败和成功的电子邮件提醒常见工作流调度系统1)简单的任务调度:直接使用 crontab 实现;2)复杂的任务调度:开发调度平台或使用现成的开源调度系统,比如 ooize、...

2020-03-25 15:02:52 92

原创 Sqoop常用操作指令

导入数据从非大数据集群(RDBMS)向大数据集群(HDFS,HIVE,HBASE)中传输数据1.RDBMS到HDFS确定Mysql服务开启正常在Mysql中新建一张表并插入一些数据$ mysql -uroot -p990204mysql> create database company;mysql> create table company.staff(id int(...

2020-03-25 10:12:36 200

原创 Sqoop概述

Sqoop简介Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为...

2020-03-25 10:05:44 197

原创 HBase优化

1. 高可用在 HBase 中 HMaster 负责监控 HRegionServer 的生命周期,均衡 RegionServer 的负载,如果 HMaster 挂掉了,那么整个 HBase 集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以 HBase 支持对 HMaster 的高可用配置。1.关闭 HBase 集群(如果没有开启则跳过此步)[hadoop@hadoop102 h...

2020-03-24 17:31:56 83

原创 HBase与Hive的对比

1.Hive(1) 数据仓库Hive 的本质其实就相当于将 HDFS 中已经存储的文件在 Mysql 中做了一个双射关系,以方便使用 HQL 去管理查询。(2) 用于数据分析、清洗Hive 适用于离线的数据分析和清洗,延迟较高。(3) 基于 HDFS、MapReduceHive 存储的数据依旧在 DataNode 上,编写的 HQL 语句终将是转换为 MapReduce 代码执行。2...

2020-03-24 17:20:50 129

原创 HBase架构原理

1)StoreFile保存实际数据的物理文件,StoreFile 以 HFile 的形式存储在 HDFS 上。每个 Store 会有一个或多个 StoreFile(HFile),数据在每个 StoreFile 中都是有序的。2)MemStore写缓存,由于 HFile 中的数据要求是有序的,所以数据是先存储在 MemStore 中,排好序后,等到达刷写时机才会刷写到 HFile,每次刷写都...

2020-03-24 17:19:24 222

原创 HBase常用API操作

新建项目后在 pom.xml 中添加依赖:<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> <version>1.3.1</version></dependency>&...

2020-03-22 21:54:41 122

原创 HBase Shell操作

基本操作1.进入 HBase 客户端命令行[hadoop@hadoop102 hbase]$ bin/hbase shell2.查看帮助命令hbase(main):001:0> help3.查看当前数据库中有哪些表hbase(main):002:0> list2.2.2 表的操作1.创建表hbase(main):002:0> create 'student...

2020-03-22 21:52:53 77

原创 HBase安装部署

1. Zookeeper 正常部署首先保证 Zookeeper 集群的正常部署,并启动之:[hadoop@hadoop102 zookeeper-3.4.10]$ bin/zkServer.sh start[hadoop@hadoop103 zookeeper-3.4.10]$ bin/zkServer.sh start[hadoop@hadoop104 zookeeper-3.4.10]...

2020-03-22 21:50:19 103

原创 HBase概述

1. HBase 定义HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。2. HBase 数据模型逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。但从 HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional map。(1) HBase 逻辑结构(2)HBase 物理存储结构...

2020-03-22 21:45:40 313

原创 Kafka监控

1.Kafka Eagle1.修改 kafka 启动命令修改 kafka-server-start.sh 命令中if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"fi为if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEA...

2020-03-19 17:47:10 114

原创 Kafka 事务

Kafka 从 0.11 版本开始引入了事务支持。事务可以保证 Kafka 在 Exactly Once 语义的基础上,生产和消费可以跨分区和会话,要么全部成功,要么全部失败。1.Producer 事务为了实现跨分区跨会话的事务,需要引入一个全局唯一的 Transaction ID,并将 Producer获得的PID 和Transaction ID 绑定。这样当Producer 重启后就可...

2020-03-19 17:42:45 257

空空如也

空空如也

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

TA关注的人

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